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

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

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

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

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

यहां दी गई टेबल का इस्तेमाल करके, यह पता लगाएं कि 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 समर्थित आने वाले अनुरोधों के लिए वर्चुअल होस्ट और पाथ, एपीआई प्रॉक्सी में तय किया जाता है. इसे एचटीटीपी मॉड्यूल तय नहीं करता. ज़्यादा जानकारी के लिए, "http और https मॉड्यूल के लिए सहायता के बारे में जानकारी" लेख पढ़ें.
https समर्थित "https" सर्वर बनाने का तरीका, "http" सर्वर बनाने के तरीके जैसा ही होता है. ज़्यादा जानकारी के लिए, "http और https मॉड्यूल के लिए सहायता के बारे में जानकारी" लेख पढ़ें.
module समर्थित
net पाबंदी लगी है इनकमिंग टीसीपी कनेक्शन सुनने की कोशिश करने पर, एक अपवाद जनरेट होगा.
path समर्थित
module समर्थित
process कुछ हद तक काम करता है यूज़र आईडी, ग्रुप की सदस्यता, और वर्किंग डायरेक्ट्री में बदलाव करने की सुविधा उपलब्ध नहीं है.
punycode समर्थित
querystring समर्थित
readline बंद है Apigee Edge पर चलने वाली स्क्रिप्ट के लिए, कोई स्टैंडर्ड इनपुट नहीं होता.
repl बंद है Apigee Edge पर चलने वाली स्क्रिप्ट के लिए, कोई स्टैंडर्ड इनपुट नहीं होता.
module शामिल है
STDIO समर्थित

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

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

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

साथ काम करने वाले अन्य मॉड्यूल

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

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

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

Node.js स्क्रिप्ट पर लागू होने वाली पाबंदियां

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

  • Apigee Edge एनवायरमेंट में Node.js ऐप्लिकेशन, Edge नेटवर्क सिस्टम की वजह से यूडीपी के ज़रिए इंटरनेट पर मौजूद सेवाओं को ऐक्सेस नहीं कर सकते.
  • फ़ाइल सिस्टम का ऐक्सेस, सिर्फ़ उस डायरेक्ट्री तक सीमित होता है जहां 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 for Private Cloud पर आईपी कनेक्शन से जुड़ी पाबंदियां सेट करना

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

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

इन पाबंदियों में बदलाव किया जा सकता है. इसके लिए, हर मैसेज प्रोसेसर के लिए 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-service edge-message-processor restart

http और https मॉड्यूल के लिए सहायता के बारे में जानकारी

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 में "port" आर्ग्युमेंट ज़रूरी है. हालांकि, 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 ऐप्लिकेशन, इनकमिंग ट्रैफ़िक पाने के साथ-साथ http और https मॉड्यूल का इस्तेमाल करके आउटबाउंड अनुरोध भी कर सकते हैं. जैसे, कोई अन्य Node.js ऐप्लिकेशन करता है. ये मॉड्यूल, Node.js में हमेशा की तरह काम करते हैं.

tls मॉड्यूल के साथ काम करने की सुविधा के बारे में जानकारी

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

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

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

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

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

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

आउटगोइंग अनुरोधों को मैनेज करना

tls मॉड्यूल का इस्तेमाल करके, आउटगोइंग अनुरोध किए जा सकते हैं. इसके लिए, आपको Node.js में सामान्य तरीके से अनुरोध करने होंगे. आपको resources/node डायरेक्ट्री में क्लाइंट-साइड कुंजियां और सर्टिफ़िकेट (.pem फ़ाइलें) जोड़ने होंगे. इसके बाद, उन्हें अपनी स्क्रिप्ट में लोड करना होगा. 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>