Node.js मॉड्यूल के लिए Edge सपोर्ट को समझना

Apigee Edge दस्तावेज़ देखा जा रहा है.
Apigee X दस्तावेज़ पर जाएं.
जानकारी

Apigee Edge पर Node.js का कौनसा वर्शन काम करता है?

फ़िलहाल, Edge पर Node.js 0.10.32 का इस्तेमाल किया जा सकता है.

कौनसे स्टैंडर्ड Node.js मॉड्यूल Edge पर काम करते हैं?

नीचे दी गई टेबल का इस्तेमाल करके पता लगाएं कि Edge में कौनसे स्टैंडर्ड Node.js मॉड्यूल शामिल किए गए हैं. कुछ मामलों में, शामिल किए गए मॉड्यूल कुछ हद तक ही काम करते हैं. ये ऐसे मॉड्यूल हैं जो Node.js में पहले से मौजूद हैं.

मॉड्यूल स्थिति ज़रूरी जानकारी
assert इनकी अनुमति है
buffer इनकी अनुमति है
child_process सभी देशों/इलाकों में उपलब्ध नहीं है अगर किसी सब-प्रोसेस को बढ़ाने की कोशिश की जाती है, तो इसे अपवाद माना जाएगा. हालांकि, सब-स्क्रिप्ट को बढ़ाने के लिए "fork" का इस्तेमाल किया जा सकता है.
cluster अक्षम किया गया cluster.isMaster तरीका हमेशा सही दिखाता है और अन्य तरीके लागू नहीं किए गए हैं. हर Node.js स्क्रिप्ट की एक कॉपी, हर Edge मैसेज प्रोसेसर पर डिप्लॉय की जाती है.
crypto इनकी अनुमति है
dns इनकी अनुमति है
domain इनकी अनुमति है
dgram सभी देशों/इलाकों में उपलब्ध नहीं है हमारे नेटवर्क आर्किटेक्चर की वजह से, Apigee में मौजूद Node.js ऐप्लिकेशन, यूडीपी की मदद से इंटरनेट पर सेवाओं को ऐक्सेस नहीं कर पाएंगे.
events इनकी अनुमति है
fs सभी देशों/इलाकों में उपलब्ध नहीं है फ़ाइल सिस्टम का ऐक्सेस सिर्फ़ उस डायरेक्ट्री तक सीमित है जहां स्क्रिप्ट लॉन्च की गई थी: /resources/node डायरेक्ट्री. Node.js स्क्रिप्ट इस डायरेक्ट्री में मौजूद फ़ाइलों को पढ़ और लिख सकती है. उदाहरण के लिए, एक अस्थायी स्क्रैच एरिया के रूप में. हालांकि, इस बात की कोई गारंटी नहीं है कि ये फ़ाइलें कब तक सेव रहेंगी.
http इनकी अनुमति है इनकमिंग अनुरोधों के लिए वर्चुअल होस्ट और पाथ, एपीआई प्रॉक्सी में बताया जाता है, न कि एचटीटीपी मॉड्यूल से. ज़्यादा जानकारी के लिए, "एचटीटीपी और एचटीटीपीएस मॉड्यूल के साथ काम करने की सुविधा के बारे में समझना" देखें.
https इनकी अनुमति है "https" सर्वर बनाने का तरीका, "http" सर्वर की तरह काम करता है. ज़्यादा जानकारी के लिए, "एचटीटीपी और एचटीटीपीएस मॉड्यूल के साथ काम करने की सुविधा के बारे में समझना" देखें.
module इनकी अनुमति है
net सभी देशों/इलाकों में उपलब्ध नहीं है आने वाले टीसीपी कनेक्शन को सुनने की कोशिश करने पर, एक अपवाद जनरेट होगा.
path इनकी अनुमति है
module इनकी अनुमति है
process कुछ हद तक सहायता यूज़र आईडी, ग्रुप की सदस्यता, और वर्क डायरेक्ट्री में बदलाव करने की सुविधा काम नहीं करती.
punycode इनकी अनुमति है
querystring इनकी अनुमति है
readline अक्षम किया गया Apigee Edge पर चल रही स्क्रिप्ट के लिए, कोई स्टैंडर्ड इनपुट नहीं है.
repl अक्षम किया गया Apigee Edge पर चल रही स्क्रिप्ट के लिए, कोई स्टैंडर्ड इनपुट नहीं है.
module शामिल है
STDIO इनकी अनुमति है

स्टैंडर्ड आउटपुट और गड़बड़ी को Apigee Edge की लॉग फ़ाइल में रूट किया जाता है. एपीआई प्रॉक्सी के लिए, Node.js लॉग बटन और Apigee Edge मैनेजमेंट यूज़र इंटरफ़ेस (यूआई) पर क्लिक करके, ये लॉग देखे जा सकते हैं.

Apigee Edge पर चल रही स्क्रिप्ट के लिए, कोई स्टैंडर्ड इनपुट नहीं है. हालांकि, TargetEndpoint के ScriptTarget एलिमेंट का इस्तेमाल करके तर्क पास किए जा सकते हैं. ज़्यादा जानकारी के लिए, बेहतर ScriptTarget कॉन्फ़िगरेशन देखें.

stream इनकी अनुमति है
string_decoder इनकी अनुमति है
timers शामिल है
tls इनकी अनुमति है ट्रांसपोर्ट लेयर सिक्योरिटी (TLS) पैरामीटर आम तौर पर, सामान्य Node.js की तरह ही काम करते हैं. ज़्यादा जानकारी के लिए, Apigee Edge पर TLS (एसएसएल) Node.js मॉड्यूल का इस्तेमाल करना देखें.
tty अक्षम किया गया Apigee Edge पर चल रही स्क्रिप्ट के लिए, कोई स्टैंडर्ड इनपुट नहीं है.
url इनकी अनुमति है
util इनकी अनुमति है
vm इनकी अनुमति है
zlib इनकी अनुमति है

इस्तेमाल किए जा सकने वाले अन्य मॉड्यूल

इस सेक्शन में ऐसे दूसरे मॉड्यूल की सूची दी गई है जो स्टैंडर्ड Node.js के साथ काम नहीं करते. हालांकि, वे Apigee Edge पर चलने वाले Trireme और Trireme के साथ काम करते हैं. Trireme एक ओपन सोर्स Node.js कंटेनर है, जो Apigee Edge पर चलता है. इसे Java वर्चुअल मशीन (JVM) में Node.js स्क्रिप्ट को चलाने के लिए डिज़ाइन किया गया है. ये सभी मॉड्यूल NPM पर उपलब्ध हैं.

मॉड्यूल ब्यौरा
apigee-ऐक्सेस Apigee Edge प्लैटफ़ॉर्म पर चल रहे Node.js ऐप्लिकेशन को, Apigee की खास सुविधा को ऐक्सेस करने की अनुमति देता है. इस मॉड्यूल का इस्तेमाल इन कामों के लिए किया जा सकता है: फ़्लो वैरिएबल को ऐक्सेस और उनमें बदलाव करना, सुरक्षित स्टोर से डेटा पाना, और Edge कैश, कोटा, और OAuth सेवाओं का इस्तेमाल करना. apigee-access मॉड्यूल का इस्तेमाल करना भी देखें.
trireme-support इसकी मदद से, Node.js ऐप्लिकेशन को Trireme की खास सुविधाओं का फ़ायदा मिलता है. फ़िलहाल, सिर्फ़ एक ही सुविधा काम करती है -- Java में बने Node.js मॉड्यूल लोड करना. ध्यान दें: Edge Cloud में loadJars काम नहीं करता.
trireme-xslt एक्सएलएसटी प्रोसेसिंग के बारे में जानकारी देता है. इसे खास तौर पर Trireme प्लैटफ़ॉर्म के लिए डिज़ाइन किया गया है, ताकि Java पर Node.js ऐप्लिकेशन चलाते समय, XSLT को बेहतर तरीके से प्रोसेस किया जा सके.
trireme-jdbc यह Node.js से JDBC को ऐक्सेस करने की सुविधा देता है. ध्यान दें: Edge Cloud में काम नहीं करता. Edge Private Cloud के लिए, JDPC JAR फ़ाइलों को क्लास पाथ में रखा जा सकता है और इस मॉड्यूल का इस्तेमाल किया जा सकता है.

आम तौर पर इस्तेमाल किए जाने वाले Node.js मॉड्यूल के लिए सहायता

Node.js स्क्रिप्ट पर पाबंदियां

हालांकि, ध्यान रखें कि Edge Node.js स्क्रिप्ट पर कुछ पाबंदियां लागू करता है, जैसे कि ये:

  • Edge नेटवर्क आर्किटेक्चर की वजह से, Apigee Edge में Node.js ऐप्लिकेशन, यूडीपी की मदद से इंटरनेट पर सेवाएं ऐक्सेस नहीं कर सकते.
  • फ़ाइल सिस्टम का ऐक्सेस उस डायरेक्ट्री तक सीमित है जहां Node.js स्क्रिप्ट लॉन्च की गई थी: /resources/node डायरेक्ट्री. Node.js स्क्रिप्ट इस डायरेक्ट्री में मौजूद फ़ाइलों को पढ़ और लिख सकती है. उदाहरण के लिए, यह एक अस्थायी स्क्रैच एरिया के तौर पर काम करती है. हालांकि, इस बात की कोई गारंटी नहीं है कि फ़ाइलें कब तक सेव रहेंगी.
  • इनकमिंग टीसीपी कनेक्शन सुनने की कोशिश एक अपवाद जनरेट करती है.
  • यूज़र आईडी, ग्रुप की सदस्यता, और वर्क डायरेक्ट्री में बदलाव करने की सुविधा काम नहीं करती.
  • स्टैंडर्ड इनपुट के लिए, TargetEndpoint के ScriptTarget एलिमेंट का इस्तेमाल करके तर्क पास किए जा सकते हैं. ज़्यादा जानकारी के लिए, बेहतर ScriptTarget कॉन्फ़िगरेशन देखें.
  • स्टैंडर्ड आउटपुट के लिए, आपको Edge मैनेजमेंट यूज़र इंटरफ़ेस (यूआई) में जाकर, Node.js लॉग बटन का इस्तेमाल करके, अपने प्रॉक्सी के लिए सीमित तौर पर मदद मिल सकती है. आप "apigeetool getlogs" कमांड का भी इस्तेमाल कर सकते हैं. ज़्यादा जानकारी के लिए, स्टैंडअलोन Node.js ऐप्लिकेशन को डिप्लॉय करना देखें.
  • नेटिव कोड पर निर्भर मॉड्यूल काम नहीं करते.
  • ऐसे मॉड्यूल काम नहीं करते जो EcmaScript 6 की सुविधाओं पर निर्भर हैं, जैसे कि Promises और Generators.
  • Node.js रनटाइम फ़्लैग, जैसे कि "harmony-proxies" का इस्तेमाल नहीं किया जा सकता.

प्राइवेट क्लाउड के लिए Edge पर आईपी कनेक्शन से जुड़ी पाबंदियां सेट करना

Private Cloud के लिए एज, Node.js कोड को “10" से शुरू होने वाले आईपी पते को ऐक्सेस करने से रोक सकता है. "192.168", और localhost. अगर इन आईपी पतों को ऐक्सेस करने की कोशिश की जाती है, तो आपको फ़ॉर्म में गड़बड़ी दिखेगी:

{ [Error: connect EINVAL] message: 'connect EINVAL', code: 'EINVAL', errno: 'EINVAL', syscall: 'connect' }

इन पाबंदियों में बदलाव करने के लिए, हर Message प्रोसेसर के लिए message-processors.properties फ़ाइल में, conf_nodejs_connect.ranges.denied प्रॉपर्टी सेट करना होगा. डिफ़ॉल्ट रूप से, इस प्रॉपर्टी में यह वैल्यू होती है:

  • 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-serviceedge-message-processor फिर से चालू करें

एचटीटीपी और एचटीटीपीएस मॉड्यूल के साथ काम करने की सुविधा को समझना

Apigee Edge पर चल रहे सभी Node.js ऐप्लिकेशन को, आने वाले अनुरोधों को सुनने के लिए, http या https मॉड्यूल का इस्तेमाल करना होगा. अगर आपको ऐसी स्क्रिप्ट डिप्लॉय करनी है जो आने वाले अनुरोधों को नहीं सुनती, तो वह बस एक्ज़ीक्यूट हो जाएगी और बाहर निकल जाएगी.

Node.js में http और https मॉड्यूल का listen तरीका, पोर्ट नंबर को पैरामीटर के तौर पर लेता है. उदाहरण के लिए:

svr.listen(process.env.PORT || 9000, function() {
   console.log('The server is running.');
});

Node.js में यह "पोर्ट" आर्ग्युमेंट ज़रूरी है. हालांकि, Apigee Edge इस पैरामीटर को अनदेखा कर देता है. इसके बजाय, जिस एपीआई प्रॉक्सी में Node.js स्क्रिप्ट चलती है उसके हिसाब से "वर्चुअल होस्ट" का इस्तेमाल होता है. साथ ही, Node.js ऐप्लिकेशन उसी वर्चुअल होस्ट का इस्तेमाल करता है, जैसे कि किसी दूसरे Apigee Edge प्रॉक्सी का इस्तेमाल करके किया जाता है.

Apigee के हर एनवायरमेंट में कम से कम एक वर्चुअल होस्ट होता है. वर्चुअल होस्ट, Apigee संगठन के साथ कनेक्शन के लिए, एचटीटीपी सेटिंग तय करता है. एनवायरमेंट में मौजूद सभी एपीआई प्रॉक्सी, एक ही वर्चुअल होस्ट को शेयर करती हैं. डिफ़ॉल्ट रूप से, हर एनवायरमेंट के लिए दो वर्चुअल होस्ट उपलब्ध होते हैं: default और secure. ज़्यादा जानकारी के लिए, वर्चुअल होस्ट पाएं और एपीआई डेवलपमेंट लाइफ़साइकल देखें.

apigeetool deploynodeapp कमांड, Node.js ऐप्लिकेशन के आस-पास Apigee Edge प्रॉक्सी रैपर जनरेट करता है. लागू करने पर, Node.js ऐप्लिकेशन, एनवायरमेंट के लिए तय किए गए डिफ़ॉल्ट वर्चुअल होस्ट पर ध्यान देता है. Node.js ऐप्लिकेशन का यूआरएल हमेशा http://{org_name}-{env_name}.apigee.net होगा.

आने वाले अनुरोधों को मैनेज करना

अन्य Apigee Edge ऐप्लिकेशन की तरह, अगर प्रॉक्सी ऐप्लिकेशन को secure वर्चुअल होस्ट पर सुनने के लिए सेट किया गया है, तो यह एचटीटीपीएस का इस्तेमाल करके, आने वाले अनुरोधों को स्वीकार करेगा.

भेजे जाने वाले अनुरोधों को मैनेज करना

आने वाले ट्रैफ़िक के अलावा, Apigee Edge में मौजूद Node.js ऐप्लिकेशन, किसी भी दूसरे Node.js ऐप्लिकेशन की तरह ही आउटबाउंड अनुरोध करने के लिए, http और https मॉड्यूल का इस्तेमाल कर सकते हैं. ये मॉड्यूल उसी तरह काम करते हैं जिस तरह वे हमेशा Node.js के अंदर करते हैं.

tls मॉड्यूल के साथ काम करने वाला टूल समझना

Apigee Edge, Node.js tls मॉड्यूल के साथ काम करता है. यह मॉड्यूल, ट्रांसपोर्ट लेयर सिक्योरिटी (TLS) और/या सिक्योर सॉकेट लेयर (एसएसएल) से एन्क्रिप्ट (सुरक्षित) किया गया स्ट्रीम कम्यूनिकेशन उपलब्ध कराने के लिए,{9/} का इस्तेमाल करता है. आप Edge पर चल रहे Node.js ऐप्लिकेशन से, बैकएंड सेवाओं के लिए सुरक्षित कनेक्शन बनाने के लिए, tls मॉड्यूल का इस्तेमाल कर सकते हैं.

यह समझने के लिए कि Apigee Edge पर tls मॉड्यूल कैसे काम करता है, यह समझना ज़रूरी है कि Apigee Edge पर virtual hosts का इस्तेमाल कैसे किया जाता है. Apigee के हर एनवायरमेंट में, कम से कम एक वर्चुअल होस्ट होता है. वर्चुअल होस्ट, Apigee संगठन के साथ कनेक्शन के लिए, एचटीटीपी की सेटिंग तय करता है. एनवायरमेंट में मौजूद सभी एपीआई प्रॉक्सी, एक ही वर्चुअल होस्ट को शेयर करती हैं. डिफ़ॉल्ट रूप से, हर एनवायरमेंट के लिए दो वर्चुअल होस्ट उपलब्ध होते हैं: default और secure. वर्चुअल होस्ट के बारे में ज़्यादा जानकारी के लिए, वर्चुअल होस्ट पाएं और एपीआई डेवलपमेंट लाइफ़साइकल देखें.

अब देखते हैं कि Apigee Edge, Node.js ऐप्लिकेशन पर आने वाले और भेजे जाने वाले अनुरोधों के लिए TLS (एसएसएल) कम्यूनिकेशन को कैसे हैंडल करता है:

आने वाले अनुरोधों को मैनेज करना

आपके संगठन के लिए वर्चुअल होस्ट कैसे कॉन्फ़िगर किए जाते हैं, इसके हिसाब से EDGE में ये विकल्प उपलब्ध होते हैं:

  • अगर एपीआई प्रॉक्सी को default वर्चुअल होस्ट पर सुनने के लिए कॉन्फ़िगर किया गया है, तो यह एचटीटीपी पर अनुरोध स्वीकार करती है.
  • अगर एपीआई प्रॉक्सी को secure वर्चुअल होस्ट पर सुनने के लिए कॉन्फ़िगर किया गया है, तो यह एचटीटीपीएस पर अनुरोधों को स्वीकार करती है. यह यूआरएल, apigee.net डोमेन के तहत होगा. साथ ही, *.apigee.net के लिए, वाइल्डकार्ड एसएसएल सर्टिफ़िकेट का इस्तेमाल किया जाएगा. जब तक ऐप्लिकेशन, apigee.net डोमेन के लिए अनुरोध करते हैं, तब तक एसएसएल सर्टिफ़िकेट की पुष्टि सामान्य तरीके से की जाएगी.

भेजे जाने वाले अनुरोधों को मैनेज करना

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>