אתם צופים במסמכי התיעוד של 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 (יומני Node.js) בממשק הניהול של Apigee Edge עבור ה-proxy ל-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.
| יחידת לימוד | תיאור |
|---|---|
| apigee-access | מאפשר לאפליקציות Node.js שפועלות בפלטפורמת Apigee Edge לגשת לפונקציות ספציפיות של Apigee. אפשר להשתמש במודול הזה כדי: לגשת למשתני זרימה ולשנות אותם, לאחזר נתונים מהמאגר המאובטח ולהשתמש בשירותי המטמון, המכסה וה-OAuth של Edge. אפשר לעיין גם במאמר בנושא שימוש במודול apigee-access. |
| trireme-support | מאפשר לאפליקציות Node.js ליהנות מתכונות שספציפיות ל-Trireme. בשלב הזה יש תמיכה רק בתכונה אחת – טעינת מודולים של Node.js שנבנו ב-Java. הערה: הפונקציה loadJars לא נתמכת ב-Edge Cloud. |
| trireme-xslt | מציג הפשטה של עיבוד 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.
- לפלט רגיל, אפשר להשתמש רק בלחצן Node.js Logs (יומני Node.js) בממשק ניהול Edge של ה-proxy. אפשר גם להשתמש בפקודה apigeetool getlogs. מידע נוסף זמין במאמר פריסת אפליקציית Node.js עצמאית.
- אין תמיכה במודולים שתלויים בקוד מקורי.
- מודולים שתלויים בתכונות של EcmaScript 6, כמו Promises ו-Generators, לא נתמכים.
- אין תמיכה בדגלים של זמן הריצה של Node.js, כמו harmony-proxies.
הגדרת הגבלות על חיבורי IP ב-Edge for Private Cloud
Edge for Private Cloud יכול להגביל את הגישה של קוד 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 restart
הסבר על התמיכה במודולים 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 מתעלם מהפרמטר הזה. במקום זאת, שרת ה-proxy של ה-API שבו פועל סקריפט Node.js מציין את 'המארח הווירטואלי' שהוא מאזין לו, ואפליקציית Node.js משתמשת באותם מארחים וירטואליים, בדיוק כמו כל שרת proxy אחר של Apigee Edge.
לכל סביבה ב-Apigee יש לפחות מארח וירטואלי אחד. המארח הווירטואלי מגדיר את הגדרות ה-HTTP לחיבור לארגון Apigee. כל ה-API proxies בסביבה חולקים את אותם מארחים וירטואליים. כברירת מחדל, שני מארחים וירטואליים זמינים לכל סביבה:
default ו-secure. מידע נוסף מופיע במאמרים
קבלת מארח וירטואלי ומחזור החיים של פיתוח API.
הפקודה apigeetool deploynodeapp יוצרת עטיפת 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 תומך במודול ה-TLS של Node.js.
המודול הזה משתמש ב-OpenSSL כדי לספק אבטחת שכבת התעבורה (TLS) או שכבת שקע מאובטחת (SSL) להצפנת תקשורת של נתונים. אפשר להשתמש במודול tls כדי ליצור חיבורים מאובטחים לשירותי בק-אנד מאפליקציות Node.js שפועלות ב-Edge.
כדי להבין איך מודול tls פועל ב-Apigee Edge, חשוב להבין איך משתמשים ב-virtual hosts ב-Apigee Edge. לכל סביבה ב-Apigee יש לפחות מארח וירטואלי אחד. המארח הווירטואלי מגדיר את הגדרות ה-HTTP לחיבור לארגון Apigee. כל ה-API proxies בסביבה חולקים את אותם מארחים וירטואליים. כברירת מחדל, שני מארחים וירטואליים זמינים לכל סביבה: default ו-secure. מידע נוסף על מארחים וירטואליים זמין במאמרים
קבלת מארח וירטואלי ומחזור החיים של פיתוח API.
עכשיו נראה איך Apigee Edge מטפל בתקשורת TLS (SSL) לבקשות נכנסות ויוצאות באפליקציות Node.js:
הטיפול בבקשות נכנסות
בהתאם לאופן שבו מארחים וירטואליים מוגדרים בארגון שלכם, Edge מספק את האפשרויות הבאות:
- אם proxy ל-API מוגדר להאזין למארח הווירטואלי
default, הוא מקבל בקשות דרך HTTP. - אם proxy ל-API מוגדר להאזין למארח הווירטואלי
secure, הוא מקבל בקשות דרך HTTPS. כתובת ה-URL תהיה בדומייןapigee.net, וישמש אישור SSL עם תו כללי לחיפוש של*.apigee.net. כל עוד האפליקציות שולחות בקשות לדומייןapigee.net, אישור ה-SSL יאומת כרגיל.
טיפול בבקשות יוצאות
אפשר לשלוח בקשות יוצאות באמצעות המודול tls באותה דרך שבה עושים זאת בדרך כלל ב-Node.js. בעיקרון, צריך להוסיף מפתחות ואישורים מצד הלקוח (קבצים מסוג .pem) לספרייה resources/node ולטעון אותם בסקריפט. מידע על השימוש במודול tls ובשיטות שלו זמין במסמכי העזרה של Node.js tls module.
הגדרה מתקדמת של ScriptTarget
<TargetEndpoint name="default"> <ScriptTarget> <ResourceURL>node://hello.js</ResourceURL> <EnvironmentVariables> <EnvironmentVariable name="NAME">VALUE</EnvironmentVariable> </EnvironmentVariables> <Arguments> <Argument>ARG</Argument> </Arguments> </ScriptTarget> </TargetEndpoint>