הסבר על התמיכה של Edge במודולים של Node.js

אתם צופים במסמכי התיעוד של 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= (כלומר, אין הגבלות)

כדי להגדיר את המאפיין הזה:

  1. פותחים את הקובץ message-processor.properties בכלי לעריכה. אם הקובץ לא קיים, יוצרים אותו:
    > vi /<inst_root>/apigee/customer/application/message-processor.properties
  2. מגדירים את הנכס לפי הצורך. לדוגמה, כדי לדחות גישה רק ל-localhost:
    conf_nodejs_connect.ranges.denied=127.0.0.1/32
  3. שומרים את השינויים.
  4. מוודאים שקובץ המאפיינים נמצא בבעלות המשתמש apigee:
    > chown apigee:apigee /<inst_root>/apigee/customer/application/message-processor.properties
  5. מפעילים מחדש את מעבד ההודעות:
    > /<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.

אתם יכולים לפנות לתמיכה של Apigee.

הסבר על התמיכה במודול 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>, הרכיב <ScriptTarget> מקבל פרמטרים אופציונליים נוספים מלבד <ResourceURL>. אפשר גם להעביר ארגומנטים של שורת פקודה ומשתני סביבה לסקריפט Node.js באמצעות הפרמטרים <EnvironmentVariables> ו-<Arguments>:
<TargetEndpoint name="default">
  <ScriptTarget>
     <ResourceURL>node://hello.js</ResourceURL>
     <EnvironmentVariables>
         <EnvironmentVariable name="NAME">VALUE</EnvironmentVariable> 
     </EnvironmentVariables>
     <Arguments>
         <Argument>ARG</Argument>
     </Arguments>
  </ScriptTarget>
</TargetEndpoint>