آشنایی با پشتیبانی 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 محدود اگر تلاشی برای ایجاد یک زیرفرایند انجام شود، استثنایی ایجاد خواهد شد. بااین‌حال، «انشعاب» برای ایجاد زیر-نوشتارها پشتیبانی می‌شود.
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 در واسط کاربر مدیریت Apigee Edge برای پراکسی API می‌توانید این گزارش‌ها را مشاهده کنید.

هیچ ورودی استانداردی برای اسکریپت‌های درحال اجرا در Apigee Edge وجود ندارد. بااین‌حال، می‌توانید بااستفاده از عنصر ScriptTarget در TargetEndpoint، آرگومان‌ها را ارسال کنید. برای اطلاعات بیشتر، پیکربندی پیشرفته «هدف نوشتاری» را ببینید.

stream پشتیبانی می‌شود
string_decoder پشتیبانی می‌شود
timers لحاظ‌شده
tls پشتیبانی می‌شود پارامترهای «امنیت لایه انتقال» (TLS) اساساً به همان روشی کار می‌کنند که در Node.js معمولی کار می‌کنند. برای جزئیات بیشتر، استفاده از واحد Node.js مربوط به «امنیت لایه انتقال» (SSL) در 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 دسترسی داشته باشند. می‌توانید از این واحد برای موارد زیر استفاده کنید: دسترسی به متغیرهای جاری‌سازی و اصلاح آن‌ها، بازیابی داده‌ها از فروشگاه امن، و استفاده از خدمات حافظه نهان، سهمیه، و 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 نمی‌توانند به‌دلیل معماری شبکه Edge ازطریق UDP به سرویس‌های اینترنت دسترسی داشته باشند.
  • دسترسی به سیستم فایل به دایرکتوری‌ای که در آن دستورگان Node.js راه‌اندازی شده است محدود می‌شود: دایرکتوری /resources/node. دستورگان Node.js می‌توانند فایل‌ها را در این فهرست راهنما بخوانند و بنویسند، برای مثال به‌عنوان یک فضای موقت، اما هیچ تضمینی وجود ندارد که فایل‌ها تا چه مدت پایدار بمانند.
  • تلاش برای گوش دادن به اتصالات TCP ورودی استثنایی ایجاد می‌کند.
  • عملکرد دستکاری شناسه کاربر، عضویت گروه، و دایرکتوری کاری پشتیبانی نمی‌شود.
  • برای ورودی استاندارد، محدود به ارسال آرگومان‌ها بااستفاده از عنصر ScriptTarget در TargetEndpoint هستید. برای اطلاعات بیشتر، پیکربندی Advanced ScriptTarget را ببینید.
  • برای برونداد استاندارد، محدود به استفاده از دکمه «گزارش‌های Node.js» در واسط کاربر مدیریت Edge برای پراکسی خود هستید. همچنین می‌توانید از فرمان «apigeetool getlogs» استفاده کنید. برای اطلاعات بیشتر، به استقرار برنامه خوداتکای Node.js مراجعه کنید.
  • از واحدهایی که به کد بومی وابسته هستند پشتیبانی نمی‌شود.
  • واحدهایی که به ویژگی‌های EcmaScript 6، مانند Promises و Generators، وابسته هستند پشتیبانی نمی‌شوند.
  • پرچم‌های زمان اجرای Node.js مثل «harmony-proxies» پشتیبانی نمی‌شوند.

تنظیم محدودیت‌های اتصال IP در Edge برای «ابر خصوصی»

‫Edge for Private Cloud می‌تواند کد Node.js را از دسترسی به نشانی‌های IP که با «۱۰.» شروع می‌شوند محدود کند، ‫«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= (یعنی بدون محدودیت)

برای تنظیم این دارایی:

  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.');
});

این آرگومان «درگاه» در Node.js الزامی است، اما Apigee Edge این پارامتر را نادیده می‌گیرد. درعوض، کارگزار میانای برنامه‌سازی کاربردی که در آن دستورگان Node.js اجرا می‌شود «میزبان مجازی» را که در آن گوش می‌دهد مشخص می‌کند، و برنامه Node.js از همان میزبان‌های مجازی استفاده می‌کند، درست مثل هر کارگزار Apigee Edge دیگری.

هر محیط در Apigee حداقل یک میزبان مجازی دارد. میزبان مجازی تنظیمات HTTP را برای اتصال با سازمان Apigee تعریف می‌کند. همه پراکسی‌های API در یک محیط میزبان‌های مجازی یکسانی را هم‌رسانی می‌کنند. به‌طور پیش‌فرض، دو میزبان مجازی برای هر محیط دردسترس است: default و secure. برای اطلاعات بیشتر، دریافت میزبان مجازی و API چرخه حیات توسعه را ببینید.

فرمان apigeetool deploynodeapp یک پوشش پراکسی Apigee Edge در اطراف برنامه Node.js تولید می‌کند. وقتی مستقر شد، برنامه Node.js در میزبان مجازی پیش‌فرض تعریف‌شده برای محیط گوش می‌دهد. نشانی وب برنامه 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 چگونه ارتباط «امنیت لایه انتقال» (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 مراجعه کنید.

پیکربندی پیشرفته «هدف نوشتار»

در تعریف <TargetEndpoint>، عنصر <ScriptTarget> علاوه‌بر <ResourceURL>، پارامترهای اختیاری دیگری نیز می‌گیرد. همچنین می‌توانید بااستفاده از پارامترهای <EnvironmentVariables> و <Arguments>، آرگومان‌های خط فرمان و متغیرهای محیطی را به دستورگان Node.js منتقل کنید:
<TargetEndpoint name="default">
  <ScriptTarget>
     <ResourceURL>node://hello.js</ResourceURL>
     <EnvironmentVariables>
         <EnvironmentVariable name="NAME">VALUE</EnvironmentVariable> 
     </EnvironmentVariables>
     <Arguments>
         <Argument>ARG</Argument>
     </Arguments>
  </ScriptTarget>
</TargetEndpoint>