شما در حال مشاهده مستندات Apigee Edge هستید.
به مستندات Apigee X مراجعه کنید . اطلاعات
چه نسخهای از Node.js در Apigee 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 خود مشاهده کنید. هیچ ورودی استانداردی برای اسکریپتهایی که روی Apigee Edge اجرا میشوند وجود ندارد. با این حال، میتوانید آرگومانها را با استفاده از عنصر ScriptTarget از TargetEndpoint ارسال کنید. برای اطلاعات بیشتر به پیکربندی پیشرفته ScriptTarget مراجعه کنید. |
stream | پشتیبانی شده | |
string_decoder | پشتیبانی شده | |
timers | شامل | |
tls | پشتیبانی شده | پارامترهای امنیت لایه انتقال (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 درون یک ماشین مجازی جاوا (JVM) طراحی شده است. همه این ماژولها در NPM موجود هستند.
| ماژول | توضیحات |
|---|---|
| دسترسی آپیجی | به برنامههای Node.js که روی پلتفرم Apigee Edge اجرا میشوند، امکان دسترسی به قابلیتهای خاص Apigee را میدهد. میتوانید از این ماژول برای موارد زیر استفاده کنید: دسترسی و تغییر متغیرهای جریان، بازیابی دادهها از مخزن امن و استفاده از حافظه پنهان Edge، سهمیهبندی و سرویسهای OAuth. همچنین به بخش «استفاده از ماژول apigee-access» مراجعه کنید. |
| پشتیبانی سهگانه | به برنامههای Node.js اجازه میدهد از ویژگیهای خاص Trireme بهرهمند شوند. در حال حاضر فقط یک ویژگی پشتیبانی میشود -- بارگذاری ماژولهای Node.js ساخته شده در جاوا. توجه: loadJars در Edge Cloud پشتیبانی نمیشود. |
| trireme-xslt | انتزاعی از پردازش XLST را ارائه میدهد. این به طور خاص برای پلتفرم Trireme طراحی شده است تا پردازش کارآمد XSLT را هنگام اجرای برنامههای 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 به دلیل معماری شبکه Edge نمیتوانند از طریق UDP به سرویسهای موجود در اینترنت دسترسی داشته باشند.
- دسترسی به سیستم فایل محدود به دایرکتوری است که اسکریپت Node.js در آن اجرا شده است: دایرکتوری /resources/node. اسکریپتهای Node.js میتوانند فایلهای درون این دایرکتوری را بخوانند و بنویسند، برای مثال به عنوان یک ناحیه موقت برای خراش، اما هیچ تضمینی وجود ندارد که این فایلها تا چه مدت باقی بمانند.
- تلاش برای گوش دادن به اتصالات TCP ورودی، یک استثنا ایجاد میکند.
- قابلیت دستکاری شناسه کاربری، عضویت گروه و دایرکتوری کاری پشتیبانی نمیشود.
- برای ورودی استاندارد، شما محدود به ارسال آرگومانها با استفاده از عنصر ScriptTarget از TargetEndpoint هستید. برای اطلاعات بیشتر به پیکربندی پیشرفته ScriptTarget مراجعه کنید.
- برای خروجی استاندارد، شما محدود به استفاده از دکمه Node.js Logs در رابط کاربری مدیریت Edge برای پروکسی خود هستید. همچنین میتوانید از دستور "apigeetool getlogs" استفاده کنید. برای اطلاعات بیشتر، به بخش استقرار یک برنامه Node.js مستقل مراجعه کنید.
- ماژولهایی که به کد بومی وابسته هستند پشتیبانی نمیشوند.
- ماژولهایی که به ویژگیهای EcmaScript 6 وابسته هستند، مانند Promises و Generators، پشتیبانی نمیشوند.
- پرچمهای زمان اجرای Node.js مانند "harmony-proxies" پشتیبانی نمیشوند.
تنظیم محدودیتهای اتصال IP در Edge برای Private Cloud
Edge برای 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 برای هر پردازنده پیام تغییر دهید. به طور پیشفرض، این ویژگی دارای مقدار زیر است:
- اج ۴.۱۷.۰۵ و قبل از آن : conf_nodejs_connect.ranges.denied=10.0.0.0/8,192.168.0.0/16,127.0.0.1/32
- اج ۴.۱۷.۰۹ و بالاتر : 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 - تغییرات خود را ذخیره کنید.
- مطمئن شوید که فایل properties متعلق به کاربر '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 که اسکریپت Node.js در آن اجرا میشود، "میزبان مجازی" را که به آن گوش میدهد، مشخص میکند و برنامه Node.js از همان میزبانهای مجازی استفاده میکند، درست مانند هر پروکسی Apigee Edge دیگر.
هر محیط در Apigee حداقل یک میزبان مجازی دارد. میزبان مجازی تنظیمات HTTP را برای ارتباط با سازمان Apigee تعریف میکند. همه پروکسیهای API در یک محیط، میزبانهای مجازی یکسانی را به اشتراک میگذارند. به طور پیشفرض، دو میزبان مجازی برای هر محیط در دسترس است: default و secure . برای اطلاعات بیشتر، به Get Virtual Host و چرخه عمر توسعه API مراجعه کنید.
دستور 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 از ماژول tls مربوط به Node.js پشتیبانی میکند. این ماژول از OpenSSL برای ارائه ارتباطات جریانی رمزگذاری شده با TLS و/یا Secure Socket Layer (SSL) استفاده میکند. میتوانید از ماژول tls برای ایجاد اتصالات امن به سرویسهای backend از برنامههای Node.js که روی Edge اجرا میشوند، استفاده کنید.
برای درک نحوه عملکرد ماژول tls در Apigee Edge، درک نحوه استفاده virtual hosts در Apigee Edge مهم است. هر محیط در Apigee حداقل یک میزبان مجازی دارد. میزبان مجازی تنظیمات HTTP را برای ارتباط با سازمان Apigee تعریف میکند. همه پروکسیهای API در یک محیط، میزبانهای مجازی یکسانی را به اشتراک میگذارند. به طور پیشفرض، دو میزبان مجازی برای هر محیط در دسترس است: default و secure . برای اطلاعات بیشتر در مورد میزبانهای مجازی، به دریافت میزبان مجازی و چرخه عمر توسعه API مراجعه کنید.
حال، بیایید نگاهی به نحوه مدیریت ارتباطات TLS (SSL) توسط Apigee Edge برای درخواستهای ورودی و خروجی در برنامههای Node.js بیندازیم:
رسیدگی به درخواستهای دریافتی
بسته به نحوه پیکربندی میزبانهای مجازی برای سازمان شما، Edge این گزینهها را ارائه میدهد:
- اگر پروکسی API طوری پیکربندی شده باشد که به میزبان مجازی
defaultگوش دهد، درخواستها را از طریق HTTP میپذیرد. - اگر پروکسی API طوری پیکربندی شده باشد که به میزبان مجازی
secureگوش دهد، درخواستها را از طریق HTTPS میپذیرد. URL تحت دامنهapigee.netخواهد بود و از یک گواهی SSL wildcard برای*.apigee.netاستفاده میشود. تا زمانی که برنامهها درخواستهایی را به دامنهapigee.netارسال کنند، گواهی SSL به طور عادی اعتبارسنجی میشود.
رسیدگی به درخواستهای خروجی
شما میتوانید درخواستهای خروجی را با ماژول tls به همان روشی که معمولاً در Node.js انجام میدهید، ارسال کنید. اساساً، باید کلیدها و گواهیهای سمت کلاینت (فایلهای .pem ) را به دایرکتوری resources/node اضافه کنید و آنها را درون اسکریپت خود بارگذاری کنید. برای اطلاعات در مورد استفاده از ماژول tls و متدهای آن، به مستندات ماژول tls در Node.js مراجعه کنید.
پیکربندی پیشرفته ScriptTarget
<TargetEndpoint name="default"> <ScriptTarget> <ResourceURL>node://hello.js</ResourceURL> <EnvironmentVariables> <EnvironmentVariable name="NAME">VALUE</EnvironmentVariable> </EnvironmentVariables> <Arguments> <Argument>ARG</Argument> </Arguments> </ScriptTarget> </TargetEndpoint>