הסבר על התמיכה של 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 מושבת ה-method cluster.isMaster תמיד מחזירה True, ושיטות אחרות לא מיושמות. עותק אחד של כל סקריפט של Node.js נפרס לכל מעבד הודעות של Edge.
crypto נתמך
dns נתמך
domain נתמך
dgram מוצר שהצפייה בו הוגבלה אפליקציות Node.js בסביבת Apigee לא יוכלו לגשת לשירותים ב- את האינטרנט דרך UDP בגלל ארכיטקטורת הרשת שלנו.
events נתמך
fs מוצר שהצפייה בו הוגבלה הגישה למערכת הקבצים מוגבלת לספרייה שבה הסקריפט הופעל: ספריית /resources/node. סקריפטים של Node.js עשויים לקרוא ולכתוב קבצים בתוך את הספרייה הזו, למשל כאזור גירוד זמני, אבל לא ניתן להבטיח למשך כמה זמן הקבצים יישמרו.
http נתמך המארח הווירטואלי והנתיב לבקשות נכנסות מצוינים בשרת ה-proxy של ה-API, לא על ידי מודול ה-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 וממשק המשתמש לניהול Apigee Edge עבור שרת ה-proxy ל-API.

אין קלט סטנדרטי לסקריפטים שרצים ב-Apigee Edge. אבל אפשר להעביר ארגומנטים שמשתמשים ברכיב ScriptTarget של TargetEndpoint. ראה תצורה מתקדמת של ScriptTarget עבור מידע נוסף.

stream נתמך
string_decoder נתמך
timers כלול
tls נתמך הפרמטרים של Transport Layer Security (TLS) פועלים בעיקרון באותו אופן שבו הם פועלים ב-Node.js רגיל. ראו שימוש במודול Node.js של TLS (SSL) ב-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. אפשר להשתמש במודול הזה כדי: לגשת לתהליך ולשנות אותו משתנים, לאחזר נתונים מהחנות המאובטחת ולהשתמש במטמון של Edge, מכסה ו-OAuth שירותים שונים. ראו גם שימוש apigee-access מודול.
trireme-support מאפשר לאפליקציות של Node.js לנצל תכונות ספציפיות ל-Trireme. כרגע יש רק תכונה אחת שנתמכת: טעינת מודולים של Node.js ב-Java. הערה: אין תמיכה ב-loadJars ב-Edge Cloud.
trireme-sharet מציג הפשטה של עיבוד XLST. הוא תוכנן במיוחד ל-Trireme פלטפורמה שמאפשרת עיבוד יעיל של XSST כשמריצים אפליקציות של 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 Directory. סקריפטים של Node.js יכולים לקרוא ולכתוב קבצים בספרייה הזו, עבור בתור אזור גירוד זמני, אבל אין ערובה לגבי משך הזמן שבו הקבצים עקביים.
  • ניסיונות להאזין לחיבורי TCP נכנסים יוצרים חריגה.
  • הפונקציונליות לשינוי מזהה משתמש, חברות בקבוצה וספריית העבודה לא נתמך.
  • בקלט רגיל, ניתן להעביר ארגומנטים רק באמצעות ScriptTarget של נקודת הקצה (TargetEndpoint). ראו אפשרויות מתקדמות הגדרת ScriptTarget לקבלת מידע נוסף.
  • בפלט רגיל, השימוש בלחצן Node.js Logs באפליקציית Node.js מוגבל ממשק משתמש לניהול שרת ה-proxy. אפשר גם להשתמש ב-'apigeetool getlogs'. הפקודה. לקבלת מידע נוסף מידע נוסף, ראו פריסה אפליקציית Node.js עצמאית.
  • אין תמיכה במודולים שתלויים בקוד Native.
  • מודולים שתלויים בתכונות של EcmaScript 6, כמו Promises ו-Generator, אינם נתמך.
  • סימונים בזמן הריצה של Node.js, כמו "harmony-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= (כלומר אין הגבלות)

כדי להגדיר את הנכס הזה:

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

ה"יציאה" הזו נדרש ארגומנט ב-Node.js, אבל Apigee Edge מתעלם מהפרמטר הזה. במקום זאת, שרת ה-proxy ל-API שבו הסקריפט של Node.js רץ מציין את 'מארח וירטואלי' שהוא מקשיב לו, והאפליקציה Node.js משתמשת באותם מארחים וירטואליים, בדיוק כמו בכל שירות Apigee Edge אחר. שרת proxy.

לכל סביבה ב-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 יש תמיכה במודול tls של Node.js. המודול הזה משתמש ב-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 מספק את הפרטים האלה אפשרויות:

  • אם ה-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.

הגדרה מתקדמת של ScriptTarget

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