شما در حال مشاهده اسناد 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 | محدود شده است | اگر تلاشی برای ایجاد یک فرآیند فرعی انجام شود، استثنا وجود خواهد داشت. با این حال، "چنگال" برای تخم ریزی اسکریپت های فرعی پشتیبانی می شود. |
cluster | از کار افتاده است | متد cluster.isMaster همیشه true را برمی گرداند و متدهای دیگر پیاده سازی نمی شوند. یک کپی از هر اسکریپت Node.js در هر پردازشگر پیام Edge مستقر می شود. |
crypto | پشتیبانی می شود | |
dns | پشتیبانی می شود | |
domain | پشتیبانی می شود | |
dgram | محدود شده است | برنامه های Node.js در محیط Apigee به دلیل معماری شبکه ما قادر به دسترسی به خدمات در اینترنت از طریق UDP نخواهند بود. |
events | پشتیبانی می شود | |
fs | محدود شده است | دسترسی به سیستم فایل محدود به دایرکتوری است که اسکریپت در آن راه اندازی شده است: فهرست /resources/node . اسکریپت های Node.js ممکن است فایل ها را در این دایرکتوری بخوانند و بنویسند، به عنوان مثال به عنوان یک منطقه خراش موقت، اما هیچ تضمینی برای مدت زمان ماندگاری فایل ها وجود ندارد. |
http | پشتیبانی می شود | میزبان مجازی و مسیر برای درخواست های ورودی در پروکسی 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 Logs in و رابط کاربری مدیریت Apigee Edge برای پراکسی API خود مشاهده کنید. هیچ ورودی استانداردی برای اسکریپت های در حال اجرا در Apigee Edge وجود ندارد. با این حال، می توانید آرگومان ها را با استفاده از عنصر ScriptTarget از TargetEndpoint ارسال کنید. برای اطلاعات بیشتر به پیکربندی Advanced 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 در دسترس هستند.
ماژول | توضیحات |
---|---|
apigee-access | به برنامههای Node.js در حال اجرا بر روی پلتفرم Apigee Edge راهی برای دسترسی به عملکرد خاص Apigee اجازه میدهد. شما می توانید از این ماژول برای دسترسی و اصلاح متغیرهای جریان، بازیابی داده ها از فروشگاه امن، و استفاده از کش Edge، سهمیه و خدمات OAuth استفاده کنید. همچنین استفاده از ماژول apigee-access را ببینید. |
trireme-support | به برنامه های Node.js اجازه می دهد از ویژگی های خاص Trireme استفاده کنند. در حال حاضر تنها یک ویژگی پشتیبانی می شود -- بارگیری ماژول های Node.js ساخته شده در جاوا. توجه: loadJars در Edge Cloud پشتیبانی نمیشود. |
trireme-xslt | انتزاعی از پردازش XLST را ارائه می دهد. این به طور خاص برای پلتفرم Trireme طراحی شده است تا زمانی که برنامه های Node.js بر روی جاوا اجرا می شوند، امکان پردازش کارآمد XSLT را فراهم کند. |
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 هستید. برای اطلاعات بیشتر به پیکربندی Advanced ScriptTarget مراجعه کنید.
- برای خروجی استاندارد، شما محدود به استفاده از دکمه Node.js Logs در رابط کاربری مدیریت Edge برای پروکسی خود هستید. همچنین می توانید از دستور "apigeetool getlogs" استفاده کنید. برای اطلاعات بیشتر، به استقرار یک برنامه مستقل Node.js مراجعه کنید.
- ماژول هایی که به کد بومی وابسته هستند پشتیبانی نمی شوند.
- ماژول هایی که به ویژگی های EcmaScript 6 وابسته هستند، مانند Promises و Generators، پشتیبانی نمی شوند.
- پرچم های زمان اجرا Node.js مانند "harmony-proxies" پشتیبانی نمی شوند.
تنظیم محدودیت های اتصال IP در Edge برای 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 - ویژگی را به دلخواه تنظیم کنید. به عنوان مثال، برای جلوگیری از دسترسی فقط به لوکال هاست:
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.'); });
این آرگومان "port" در Node.js مورد نیاز است، اما Apigee Edge این پارامتر را نادیده می گیرد. در عوض، پروکسی API که اسکریپت Node.js در آن اجرا میشود، «میزبان مجازی» را مشخص میکند که به آن گوش میدهد، و برنامه Node.js از همان میزبانهای مجازی استفاده میکند، درست مانند هر پروکسی دیگر Apigee Edge.
هر محیطی در Apigee حداقل یک میزبان مجازی دارد. میزبان مجازی تنظیمات HTTP را برای ارتباط با سازمان Apigee تعریف می کند. همه پراکسی های API در یک محیط، میزبان های مجازی یکسانی را به اشتراک می گذارند. به طور پیش فرض، دو میزبان مجازی برای هر محیط موجود است: default
و secure
. برای اطلاعات بیشتر، به دریافت میزبان مجازی و چرخه عمر توسعه 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 از ماژول Node.js tls پشتیبانی می کند. این ماژول از OpenSSL برای ارائه ارتباطات جریانی رمزگذاری شده امنیت لایه انتقال (TLS) و/یا لایه سوکت امن (SSL) استفاده می کند. میتوانید از ماژول tls
برای ایجاد اتصالات امن به سرویسهای پشتیبان از برنامههای Node.js که در Edge اجرا میشوند استفاده کنید.
برای درک اینکه چگونه ماژول tls
در Apigee Edge کار می کند، مهم است که بدانیم چگونه virtual hosts
در Apigee Edge استفاده می شود. هر محیطی در Apigee حداقل یک میزبان مجازی دارد. میزبان مجازی تنظیمات HTTP را برای ارتباط با سازمان Apigee تعریف می کند. همه پراکسی های API در یک محیط، میزبان های مجازی یکسانی را به اشتراک می گذارند. به طور پیش فرض، دو میزبان مجازی برای هر محیط موجود است: default
و secure
. برای اطلاعات بیشتر در مورد میزبان های مجازی، به دریافت میزبان مجازی و چرخه عمر توسعه API مراجعه کنید.
اکنون، بیایید ببینیم که Apigee Edge چگونه ارتباطات TLS (SSL) را برای درخواستهای ورودی و خروجی در برنامههای Node.js مدیریت میکند:
رسیدگی به درخواست های دریافتی
بسته به نحوه پیکربندی هاست های مجازی برای سازمان شما، Edge این گزینه ها را ارائه می دهد:
- اگر پروکسی API برای گوش دادن به میزبان مجازی
default
پیکربندی شده باشد، درخواستها را از طریق HTTP میپذیرد. - اگر پروکسی API برای گوش دادن به میزبان مجازی
secure
پیکربندی شده باشد، درخواستها را از طریق HTTPS میپذیرد. نشانی اینترنتی زیر دامنهapigee.net
خواهد بود و از یک گواهی نامه SSL برای*.apigee.net
استفاده خواهد شد. تا زمانی که برنامهها به دامنهapigee.net
درخواست میدهند، گواهی SSL به طور معمول تأیید میشود.
رسیدگی به درخواست های خروجی
میتوانید درخواستهای خروجی را با ماژول tls
به همان روشی که معمولاً در Node.js انجام میدهید، ارسال کنید. اساساً، باید کلیدها و گواهیهای سمت سرویس گیرنده (فایلهای .pem
) را به فهرست resources/node
اضافه کنید و آنها را در اسکریپت خود بارگذاری کنید. برای اطلاعات در مورد استفاده از ماژول tls
و روش های آن، به مستندات ماژول Node.js tls مراجعه کنید.
پیکربندی پیشرفته ScriptTarget
<TargetEndpoint name="default"> <ScriptTarget> <ResourceURL>node://hello.js</ResourceURL> <EnvironmentVariables> <EnvironmentVariable name="NAME">VALUE</EnvironmentVariable> </EnvironmentVariables> <Arguments> <Argument>ARG</Argument> </Arguments> </ScriptTarget> </TargetEndpoint>