يتم الآن عرض مستندات Apigee Edge.
انتقِل إلى مستندات
Apigee X. المعلومات
ما إصدار Node.js المتوافق مع Apigee Edge؟
يدعم Edge حاليًا الإصدار Node.js 0.10.32.
ما هي وحدات Node.js القياسية المتوافقة مع Edge؟
استخدِم الجدول التالي لتحديد وحدات Node.js العادية التي تم تضمينها في Edge. وفي بعض الحالات، تكون الوحدات المضمّنة متاحة جزئيًا فقط. وهي وحدات مضمّنة في Node.js.الوحدة | الحالة | Notes |
---|---|---|
assert |
معلومات معتمَدة | |
buffer |
معلومات معتمَدة | |
child_process |
محظور | سيتم طرح استثناء إذا تم إجراء محاولة لإنتاج عملية فرعية. في المقابل، يمكن استخدام "الشوكة" لإنشاء النصوص البرمجية الفرعية. |
cluster |
غير مفعَّل | تعرض الطريقة cluster.isMaster دائمًا true، ولا يتم تنفيذ طرق أخرى. يتم نشر نسخة واحدة من كل نص Node.js النصي في كل معالج رسائل Edge. |
crypto |
معلومات معتمَدة | |
dns |
معلومات معتمَدة | |
domain |
معلومات معتمَدة | |
dgram |
محظور | لن تتمكّن تطبيقات Node.js في بيئة Apigee من الوصول إلى الخدمات على الإنترنت من خلال UDP بسبب بنية الشبكة. |
events |
معلومات معتمَدة | |
fs |
محظور | يتم حصر الوصول إلى نظام الملفات على الدليل الذي تم تشغيل النص البرمجي فيه: دليل /resources/node . قد تقرأ نصوص Node.js البرمجية الملفات وتكتبها في هذا الدليل، على سبيل المثال، كمنطقة خدش مؤقتة، ولكن ليست هناك أي ضمانات بشأن مدة الاحتفاظ بالملفات. |
http |
معلومات معتمَدة | يتم تحديد المضيف الافتراضي والمسار للطلبات الواردة في الخادم الوكيل لواجهة برمجة التطبيقات، وليس من خلال وحدة HTTP. لمزيد من المعلومات، يُرجى الاطّلاع على "فهم التوافق مع وحدتَي http وhttps". |
https |
معلومات معتمَدة | يعمل إنشاء خادم "https" بشكل مماثل لخادم "http". للحصول على مزيد من المعلومات، يمكنك الاطّلاع على "فهم التوافق مع وحدتَي http وhttps". |
module |
معلومات معتمَدة | |
net |
محظور | ستؤدي محاولات الاستماع إلى اتصالات بروتوكول التحكم في الإرسال الواردة إلى إنشاء استثناء. |
path |
معلومات معتمَدة | |
module |
معلومات معتمَدة | |
process |
الدعم الجزئي | إنّ وظيفة التلاعب برقم تعريف المستخدم وعضوية المجموعة ودليل العمل غير متاحة. |
punycode |
معلومات معتمَدة | |
querystring |
معلومات معتمَدة | |
readline |
غير مفعَّل | ما مِن إدخال عادي للنصوص البرمجية التي يتم تشغيلها على Apigee Edge. |
repl |
غير مفعَّل | ما مِن إدخال عادي للنصوص البرمجية التي يتم تشغيلها على Apigee Edge. |
module |
متاحة | |
STDIO |
معلومات معتمَدة |
يتم توجيه الأخطاء والمخرجات العادية إلى ملف سجلّ داخل البنية الأساسية لخدمة Apigee Edge. يمكنك عرض هذه السجلّات بالنقر على زر سجلّات Node.js في واجهة مستخدم إدارة Apigee Edge للخادم الوكيل لواجهة برمجة التطبيقات. ما مِن إدخال عادي للنصوص البرمجية التي يتم تشغيلها على Apigee Edge. ومع ذلك، يمكنك تمرير الوسيطات باستخدام العنصر ScriptTarget في TargetEndpoint. يُرجى الاطّلاع على إعدادات استهداف النص البرمجي المتقدّمة للحصول على مزيد من المعلومات. |
stream |
معلومات معتمَدة | |
string_decoder |
معلومات معتمَدة | |
timers |
متاحة | |
tls |
معلومات معتمَدة | تعمل مَعلمات بروتوكول أمان طبقة النقل (TLS) بشكل أساسي بالطريقة نفسها التي تعمل بها في Node.js العادي. راجِع استخدام وحدة Node.js (طبقة المقابس الآمنة) في Apigee Edge للحصول على تفاصيل. |
tty |
غير مفعَّل | ما مِن إدخال عادي للنصوص البرمجية التي يتم تشغيلها على Apigee Edge. |
url |
معلومات معتمَدة | |
util |
معلومات معتمَدة | |
vm |
معلومات معتمَدة | |
zlib |
معلومات معتمَدة |
الوحدات الإضافية المتوافقة
يسرد هذا القسم وحدات إضافية غير متوافقة مع نظام Node.js القياسي، لكن يتوافق مع Trireme وTrireme الذي يعمل على Apigee Edge. Trireme هي حاوية Node.js مفتوحة المصدر يتم تشغيلها على Apigee Edge. وهو مصمم لتشغيل نصوص Node.js البرمجية داخل آلة جافا الافتراضية (JVM). كل هذه الوحدات متوفرة على NPM.
الوحدة | الوصف |
---|---|
الوصول إلى واجهة برمجة التطبيقات | يسمح هذا الإذن لتطبيقات Node.js التي تعمل على النظام الأساسي Apigee Edge كطريقة للوصول إلى الوظائف الخاصة بـ Apigee. يمكنك استخدام هذه الوحدة لإجراء ما يلي: الوصول إلى متغيّرات التدفق وتعديلها واسترداد البيانات من المتجر الآمن واستخدام ذاكرة التخزين المؤقت والحصة وخدمات بروتوكول OAuth في Edge. راجِع أيضًا استخدام وحدة الوصول إلى واجهة برمجة التطبيقات. |
trireme-support | يتيح لتطبيقات Node.js الاستفادة من الميزات الخاصة بـ Trireme. هناك ميزة واحدة فقط متوافقة حاليًا، وهي تحميل وحدات Node.js المضمّنة في لغة Java. ملاحظة: لا يتم دعم uploadJars في Edge Cloud. |
trireme-xslt | يقدم فكرة مجرّدة عن معالجة XLST. وقد صُممت خصيصًا لنظام Trireme الأساسي للسماح بالمعالجة الفعّالة لـ WebRTC عند تشغيل تطبيقات Node.js على جافا. |
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. يُرجى الاطّلاع على الضبط المتقدم لهدف النص البرمجي للحصول على مزيد من المعلومات.
- بالنسبة إلى الإخراج العادي، ستقتصر على استخدام زر سجلات Node.js في واجهة مستخدم إدارة Edge للخادم الوكيل. يمكنك أيضًا استخدام الأمر "apigeetool getlogs". لمزيد من المعلومات، يُرجى الاطّلاع على نشر تطبيق Node.js مستقل.
- لا يُسمح باستخدام الوحدات التي تعتمد على الرموز البرمجية الأصلية.
- لا يتم دعم الوحدات التي تعتمد على ميزات EcmaScript 6، مثل الوعود والمولدات.
- علامات وقت تشغيل Node.js مثل "harmony-proxies" ليست متوافقة.
ضبط قيود اتصال عنوان IP على Edge لخدمة Private Cloud
يمكن أن يحظر Edge for Private Cloud رمز Node.js من الوصول إلى عناوين IP بدءًا من "10."، "192.168"، والمضيف المحلي. إذا حاولت الوصول إلى عناوين 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 - اضبط السمة على النحو المطلوب. على سبيل المثال، لرفض الوصول إلى المضيف المحلي فقط:
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.'); });
وسيطة "المنفذ" هذه مطلوبة في Node.js، لكن Apigee Edge يتجاهل هذه المعلمة. بدلاً من ذلك، يحدّد الخادم الوكيل لواجهة برمجة التطبيقات الذي يجري فيه النص البرمجي Node.js "المضيف الافتراضي" الذي يستمع إليه، ويستخدم تطبيق Node.js هذه المضيفات الافتراضية نفسها، تمامًا مثل أي خادم وكيل آخر لـ Apigee Edge.
تحتوي كل بيئة في Apigee على مضيف افتراضي واحد على الأقل. يحدّد المضيف الافتراضي إعدادات HTTP للاتصال بمؤسسة Apigee. تشترك جميع الخوادم الوكيلة لواجهة برمجة التطبيقات في
البيئة الافتراضية في المضيفين الافتراضيين نفسهم. يتوفّر مضيفان افتراضيان لكل بيئة تلقائيًا: default
وsecure
. لمزيد من المعلومات، يُرجى الاطّلاع على
الحصول على مضيف افتراضي ودورة حياة تطوير واجهة برمجة التطبيقات.
ينشئ الأمر apigeetool deploynodeapp
برنامج تضمين الخادم الوكيل Apigee Edge حول تطبيق Node.js. عند النشر، يستمع تطبيق Node.js إلى المضيف الافتراضي الافتراضي المحدّد للبيئة. سيكون عنوان URL لتطبيق Node.js دائمًا هو
http://{org_name}-{env_name}.apigee.net
.
معالجة الطلبات الواردة
كما هو الحال مع تطبيقات Apigee Edge الأخرى، إذا تم إعداد تطبيق الخادم الوكيل للاستماع إلى
المضيف الافتراضي secure
، سيقبل الطلبات الواردة باستخدام HTTPS.
معالجة الطلبات الصادرة
بالإضافة إلى تلقّي زيارات واردة، قد تستخدم تطبيقات Node.js في Apigee Edge وحدتَي
http
وhttps
لإجراء طلبات صادرة مثل أي تطبيق Node.js
آخر. تعمل هذه الوحدات تمامًا كما تعمل دائمًا في Node.js.
فهم التوافق مع وحدة Tls
يتوافق Apigee Edge مع وحدة Node.js tls.
تستخدم هذه الوحدة بروتوكول OpenSSL لتوفير اتصال البث المشفّر ببروتوكول أمان طبقة النقل (TLS) و/أو طبقة المقابس الآمنة (SSL). يمكنك استخدام الوحدة tls
لإنشاء اتصالات آمنة
بخدمات الخلفية من تطبيقات Node.js التي تعمل على Edge.
لفهم آلية عمل وحدة tls
على Apigee Edge، يجب فهم طريقة استخدام virtual hosts
في Apigee Edge. لكل بيئة في Apigee مضيف افتراضي واحد على الأقل. يحدد المضيف الافتراضي إعدادات HTTP للاتصال بمؤسسة Apigee. تشترك جميع الخوادم الوكيلة لواجهة برمجة التطبيقات في بيئة الاستضافة الافتراضية نفسها. يتوفّر مضيفان افتراضيان لكل بيئة تلقائيًا، وهما default
وsecure
. لمزيد من المعلومات حول المضيفين الافتراضيين، راجِع
الحصول على مضيف افتراضي ودورة حياة تطوير واجهة برمجة التطبيقات.
لنلقِ نظرة على طريقة تعامل Apigee Edge مع اتصال بروتوكول أمان طبقة النقل (SSL) للطلبات الواردة والصادرة على تطبيقات Node.js:
معالجة الطلبات الواردة
استنادًا إلى كيفية إعداد المضيفين الافتراضيين لمؤسستك، يوفر Edge الخيارات التالية:
- إذا تم ضبط الخادم الوكيل لواجهة برمجة التطبيقات بحيث يصغي إلى المضيف الافتراضي
default
، سيقبل الطلبات عبر HTTP. - إذا تم ضبط الخادم الوكيل لواجهة برمجة التطبيقات على الاستماع على المضيف الافتراضي
secure
، سيقبل الطلبات عبر HTTPS. سيكون عنوان URL ضمن النطاقapigee.net
، وسيتم استخدام شهادة طبقة المقابس الآمنة لحرف البدل في*.apigee.net
. وما دامت التطبيقات ترسل طلبات إلى نطاقapigee.net
، سيتم التحقّق من صحة شهادة طبقة المقابس الآمنة بشكل طبيعي.
معالجة الطلبات الصادرة
يمكنك إجراء الطلبات الصادرة باستخدام الوحدة tls
بالطريقة نفسها التي
تجريها عادةً في Node.js. عليك في الأساس إضافة مفاتيح وشهادات من جهة العميل (.pem
ملف) إلى دليل resources/node
وتحميلها داخل النص البرمجي. للحصول على معلومات عن استخدام وحدة tls
وطرقها، راجِع مستندات وحدة Node.js tls.
ضبط استهداف النص البرمجي المتقدّم
<TargetEndpoint name="default"> <ScriptTarget> <ResourceURL>node://hello.js</ResourceURL> <EnvironmentVariables> <EnvironmentVariable name="NAME">VALUE</EnvironmentVariable> </EnvironmentVariables> <Arguments> <Argument>ARG</Argument> </Arguments> </ScriptTarget> </TargetEndpoint>