כרגע מוצג התיעוד של Apigee Edge.
כניסה למסמכי התיעוד של
Apigee X. מידע
איזו גרסה של Node.js נתמכת ב-Apigee Edge?
Edge תומך כרגע ב-Node.js 0.10.32.
אילו מודולים סטנדרטיים של Node.js נתמכים ב-Edge?
ניתן להשתמש בטבלה הבאה כדי לקבוע אילו מודולים סטנדרטיים של Node.js נכללים ב-Edge. בחלק מהמקרים, יש תמיכה חלקית במודולים הכלולים. אלה המודולים שמובְנים ב-Node.js.מודול | סטטוס | הערות |
---|---|---|
assert |
נתמך | |
buffer |
נתמך | |
child_process |
מוצר שהצפייה בו הוגבלה | המערכת תציג חריגות אם יתבצע ניסיון ליצור תהליך משנה. עם זאת, יש תמיכה ב-"fork" ליצירה של כתבי משנה. |
cluster |
מושבתת | השיטה cluster.isMaster תמיד מחזירה TRUE, ושיטות אחרות לא מיושמות. עותק אחד של כל סקריפט של Node.js נפרס לכל מעבד הודעות של Edge. |
crypto |
נתמך | |
dns |
נתמך | |
domain |
נתמך | |
dgram |
מוצר שהצפייה בו הוגבלה | ליישומי Node.js בסביבת Apigee לא תהיה אפשרות לגשת לשירותים באינטרנט דרך UDP עקב ארכיטקטורת הרשת שלנו. |
events |
נתמך | |
fs |
מוצר שהצפייה בו הוגבלה | הגישה למערכת הקבצים מוגבלת לספרייה שבה הופעל הסקריפט: הספרייה /resources/node . הסקריפטים של Node.js יכולים לקרוא ולכתוב קבצים בספרייה הזו, למשל, בתור אזור גירוד זמני, אבל לא ניתן להבטיח כמה זמן הקבצים יישמרו. |
http |
נתמך | המארח הווירטואלי והנתיב לבקשות נכנסות מצוינים ב-API Proxy, לא על ידי מודול ה-HTTP. למידע נוסף, אפשר לקרוא את המאמר "הסבר על התמיכה במודולים של http ו-https". |
https |
נתמך | יצירת שרת "https" מתנהגת באופן זהה לשרת "http". למידע נוסף, אפשר לקרוא את המאמר "הסבר על התמיכה במודולים http ו-https". |
module |
נתמך | |
net |
מוצר שהצפייה בו הוגבלה | ניסיונות להאזין לחיבורי TCP נכנסים יגרמו לחריגה. |
path |
נתמך | |
module |
נתמך | |
process |
תמיכה חלקית | אין תמיכה בפונקציונליות של שינוי מזהה משתמש, חברות בקבוצה וספריית עבודה. |
punycode |
נתמך | |
querystring |
נתמך | |
readline |
מושבתת | לא קיים קלט סטנדרטי לסקריפטים שרצים ב-Apigee Edge. |
repl |
מושבתת | לא קיים קלט סטנדרטי לסקריפטים שרצים ב-Apigee Edge. |
module |
כלולה | |
STDIO |
נתמך |
פלט ושגיאה סטנדרטיים מופנים לקובץ יומן בתשתית Apigee Edge. אפשר להציג את היומנים האלה על ידי לחיצה על הלחצן Node.js Logs וממשק המשתמש לניהול Apigee Edge עבור שרת ה-API של ה-API. לא קיים קלט סטנדרטי לסקריפטים שרצים ב-Apigee Edge. עם זאת, אפשר להעביר ארגומנטים באמצעות רכיב ScriptTarget של TargetEndpoint. למידע נוסף, אפשר לעיין בהגדרות מתקדמות של ScriptTarget. |
stream |
נתמך | |
string_decoder |
נתמך | |
timers |
כלולה | |
tls |
נתמך | פרמטרים של Transport Layer Security (TLS) פועלים פחות או יותר באותו אופן שבו הם פועלים ב-Node.js רגיל. לפרטים נוספים, אפשר לעיין במאמר בנושא שימוש במודול TLS (SSL) Node.js ב-Apigee Edge. |
tty |
מושבתת | לא קיים קלט סטנדרטי לסקריפטים שרצים ב-Apigee Edge. |
url |
נתמך | |
util |
נתמך | |
vm |
נתמך | |
zlib |
נתמך |
מודולים נתמכים נוספים
בקטע הזה מפורטים מודולים נוספים שאינם נתמכים ב-Node.js רגילים, אבל נתמכים על ידי Trireme ו-Trireme ב-Apigee Edge. Trireme הוא מאגר Node.js בקוד פתוח שפועל ב-Apigee Edge. הוא נועד להריץ סקריפטים של Node.js במכונה וירטואלית של Java (JVM). כל המודולים האלה זמינים ב-NPM.
מודול | התיאור |
---|---|
גישה באמצעות API | מתן אפשרות ליישומי Node.js שפועלים בפלטפורמת Apigee Edge לגשת לפונקציונליות ספציפית ל-Apigee. אפשר להשתמש במודול הזה כדי: לגשת למשתני זרימה ולשנות אותם, לאחזר נתונים מהחנות המאובטחת ולהשתמש במטמון, במכסה ובשירותי OAuth של Edge. למידע נוסף, ראו שימוש במודול הגישה לממשק ה-API. |
תמיכה ב-trireme | מאפשר ליישומי Node.js לנצל תכונות שהן ספציפיות ל-Trireme. כרגע יש תמיכה בתכונה אחת בלבד – טעינה של מודולים של Node.js מובנים ב-Java. הערה: loadJars לא נתמך ב-Edge Cloud. |
trireme-Pixel | הפשטה של עיבוד XLST. הוא תוכנן במיוחד לפלטפורמת Trireme כדי לאפשר עיבוד יעיל של XSLT כאשר אפליקציות Node.js פועלות ב-Java. |
trireme-jdbc | מספק גישה ל-JDBC מ-Node.js. הערה: האפליקציה לא נתמכת ב-Edge Cloud. ב-Edge Private Cloud, אפשר לשים קובצי JDPC JAR בנתיב המחלקה ולהשתמש במודול הזה. |
תמיכה במודולים נפוצים של Node.js
הגבלות על סקריפטים של Node.js
עם זאת, חשוב לשים לב ש-Edge חלות על סקריפטים של Node.js, כמו:
- ליישומי Node.js בסביבת Apigee Edge אין גישה לשירותים באינטרנט באמצעות UDP בגלל ארכיטקטורת הרשת של Edge.
- הגישה למערכת הקבצים מוגבלת לספרייה שבה הופעל סקריפט Node.js: הספרייה /resources/node. הסקריפטים של Node.js יכולים לקרוא ולכתוב קבצים בספרייה הזו, למשל, בתור אזור גירוד זמני, אבל לא ניתן להבטיח כמה זמן הקבצים יישמרו.
- ניסיונות להאזין לחיבורי TCP נכנסים יוצרים חריגה.
- אין תמיכה בפונקציונליות של שינוי מזהה משתמש, חברות בקבוצה וספריית עבודה.
- בקלט סטנדרטי, אפשר להעביר ארגומנטים רק באמצעות הרכיב ScriptTarget של TargetEndpoint. למידע נוסף, אפשר לקרוא את המאמר הגדרות
מתקדמות של ScriptTarget.
- כדי ליצור פלט רגיל, אפשר להשתמש בלחצן Logs של Node.js בממשק המשתמש לניהול Edge עבור שרת ה-proxy. באפשרותך להשתמש גם בפקודה "apigeetool getlogs". מידע נוסף זמין במאמר פריסה של אפליקציית Node.js עצמאית.
- אין תמיכה במודולים שתלויים בקוד ה-Native.
- אין תמיכה במודולים שתלויים בתכונות של EcmaScript 6, כמו Promises ו-Generator.
- אין תמיכה בסימונים של זמן הריצה של Node.js, כמו "harony-proxies".
הגדרת הגבלות על חיבור IP ב-Edge לענן פרטי
Edge לענן פרטי יכול להגביל את הגישה של קוד Node.js לכתובות IP שמתחילות ב-'10'. '192.168' ו-localhost. אם תנסו לגשת לכתובות ה-IP האלה, תופיע הודעת שגיאה בטופס:
{ [Error: connect EINVAL] message: 'connect EINVAL', code: 'EINVAL', errno: 'EINVAL', syscall: 'connect' }
אפשר לשנות את ההגבלות האלה על ידי הגדרת המאפיין conf_nodejs_connect.ranges.denied בקובץ message-processors.properties של כל מעבד הודעות. כברירת מחדל, למאפיין הזה יש את הערך:
- Edge 4.17.05 וגרסאות קודמות: conf_nodejs_connect.ranges.denied=10.0.0.0/8,192.168.0.0/16,127.0.0.1/32
- Edge 4.17.09 ואילך: conf_nodejs_connect.ranges.denied= (כלומר, ללא הגבלות)
כדי להגדיר את המאפיין הזה:
- פותחים את הקובץ message-processor.properties בכלי עריכה. אם הקובץ לא קיים, יוצרים אותו:
> vi /<inst_root>/apigee/customer/application/message-processor.properties - מגדירים את המאפיין כרצונכם. לדוגמה, כדי למנוע גישה רק ל-localhost:
conf_nodejs_connect.ranges.denied=127.0.0.1/32 - שומרים את השינויים.
- מוודאים שקובץ המאפיינים נמצא בבעלות המשתמש של 'apigee':
> chown apigee:apigee /<inst_root>/apigee/customer/application/message-processor.properties - מפעילים מחדש את מעבד ההודעות:
> /<inst_root>/apigee/apigee-service/bin/apigee-service edge-message-processor הפעלה מחדש
הסבר על התמיכה במודולים http ו-https
כל אפליקציות Node.js שפועלות ב-Apigee Edge חייבות להשתמש במודול http
או
ב-https
כדי להאזין לבקשות נכנסות. אם פורסים סקריפט שלא מאזין לבקשות נכנסות, הוא פשוט מופעל ויוצא.
השיטה listen
במודולים http
ו-https
ב-Node.js מקבלת מספר יציאה כפרמטר. לדוגמה:
svr.listen(process.env.PORT || 9000, function() { console.log('The server is running.'); });
ארגומנט "port" זה נדרש ב-Node.js, אך Apigee Edge מתעלם מהפרמטר הזה. במקום זאת, שרת ה-API של שרת ה-API שבו הסקריפט של Node.js פועל מציין את 'המארח הווירטואלי' שהוא מאזין לו, ואפליקציית Node.js משתמשת באותם מארחים וירטואליים כמו כל שרת proxy אחר של Apigee Edge.
לכל סביבה ב-Apigee יש לפחות מארח וירטואלי אחד. המארח הווירטואלי קובע את הגדרות ה-HTTP לחיבור עם הארגון Apigee. כל שרתי ה-proxy של ה-API בסביבה חולקים את אותם מארחים וירטואליים. כברירת מחדל, שני מארחים וירטואליים זמינים לכל סביבה: default
ו-secure
. מידע נוסף זמין במאמר
קבלת מארח וירטואלי ובמאמר מחזור החיים של פיתוח API.
הפקודה apigeetool deploynodeapp
יוצרת wrapper של שרת proxy של Apigee Edge מסביב לאפליקציה Node.js. במהלך הפריסה, האפליקציה Node.js מאזינה למארח הווירטואלי שהוגדר כברירת מחדל לסביבה. כתובת ה-URL של אפליקציית Node.js תהיה תמיד
http://{org_name}-{env_name}.apigee.net
.
טיפול בבקשות נכנסות
בדומה לאפליקציות אחרות של Apigee Edge, אם אפליקציית ה-proxy מוגדרת להאזין
במארח הווירטואלי של secure
, היא תקבל בקשות נכנסות באמצעות HTTPS.
טיפול בבקשות יוצאות
בנוסף לקבלת תנועה נכנסת, אפליקציות Node.js בתוך Apigee Edge עשויות להשתמש במודולים http
ו-https
כדי לבצע בקשות יוצאות, כמו כל אפליקציית Node.js אחרת. המודולים האלה פועלים כמו תמיד ב-Node.js.
הסבר על התמיכה במודול tls
ב-Apigee Edge יש תמיכה במודול Node.js tls.
המודול הזה משתמש ב-OpenSSL כדי לספק תקשורת שידור מוצפנת מסוג Transport Layer Security (TLS) ו/או Secure Socket Layer (SSL). אפשר להשתמש במודול tls
כדי ליצור חיבורים מאובטחים לקצה העורפי של אפליקציות Node.js שפועלות ב-Edge.
כדי להבין איך פועל המודול tls
ב-Apigee Edge, חשוב
להבין איך משתמשים ב-virtual hosts
ב-Apigee Edge. לכל סביבה ב-Apigee יש לפחות מארח וירטואלי אחד. המארח הווירטואלי קובע את הגדרות ה-HTTP לחיבור עם הארגון Apigee. כל שרתי ה-proxy של ה-API בסביבה חולקים אותם מארחים וירטואליים. כברירת מחדל,
שני מארחים וירטואליים זמינים לכל סביבה: default
ו-secure
. מידע נוסף על מארחים וירטואליים זמין במאמר
קבלת מארח וירטואלי ומחזור החיים של פיתוח API.
עכשיו נראה איך Apigee Edge מטפל בתקשורת TLS (SSL) עבור בקשות נכנסות ויוצאות ביישומי Node.js:
טיפול בבקשות נכנסות
בהתאם לאופן שבו מארחים וירטואליים מוגדרים בארגון שלכם, Edge מספק את האפשרויות הבאות:
- אם שרת ה-API של ה-API מוגדר להאזנה במארח הווירטואלי של
default
, אז הוא מקבל בקשות ב-HTTP. - אם שרת ה-API של ה-API מוגדר להאזנה במארח הווירטואלי של
secure
, הוא מקבל בקשות ב-HTTPS. כתובת ה-URL תהיה תחת הדומייןapigee.net
, וייעשה שימוש באישור SSL עם תו כללי לחיפוש עבור*.apigee.net
. כל עוד אפליקציות שולחות בקשות לדומייןapigee.net
, אישור ה-SSL יאומת כרגיל.
טיפול בבקשות יוצאות
אפשר לשלוח בקשות יוצאות עם המודול tls
באותו אופן שבו עושים זאת בדרך כלל ב-Node.js. בעיקרון, צריך להוסיף לספרייה resources/node
מפתחות ואישורים בצד הלקוח (קובצי .pem
) ולטעון אותם בתוך
הסקריפט. למידע על השימוש במודול tls
ועל השיטות שלו, עיינו במסמכי התיעוד של Node.js tls מודול.
הגדרה מתקדמת של יעד Script
<TargetEndpoint name="default"> <ScriptTarget> <ResourceURL>node://hello.js</ResourceURL> <EnvironmentVariables> <EnvironmentVariable name="NAME">VALUE</EnvironmentVariable> </EnvironmentVariables> <Arguments> <Argument>ARG</Argument> </Arguments> </ScriptTarget> </TargetEndpoint>