درک پشتیبانی Edge برای ماژول های Node.js

شما در حال مشاهده مستندات 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= (یعنی بدون محدودیت)

برای تنظیم این ویژگی:

  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. مطمئن شوید که فایل properties متعلق به کاربر 'apigee' است:
    > chown apigee:apigee /<inst_root>/apigee/customer/application/message-processor.properties
  5. پردازشگر پیام را مجدداً راه‌اندازی کنید:
    /<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>، عنصر <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>