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

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

  1. فایل message-processor.properties را در یک ویرایشگر باز کنید. اگر فایل وجود ندارد، آن را ایجاد کنید:
    > vi /<inst_root>/apigee/customer/application/message-processor.properties
  2. ویژگی را به دلخواه تنظیم کنید. به عنوان مثال، برای جلوگیری از دسترسی فقط به لوکال هاست:
    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 راه اندازی مجدد

درک پشتیبانی از ماژول های 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>، عنصر <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>