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

आपको 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 हमेशा सही लौटाता है और अन्य विधियां लागू नहीं की जाती हैं. हर Node.js स्क्रिप्ट की एक कॉपी, Edge मैसेज प्रोसेसर पर डिप्लॉय की जाती है.
crypto इनकी अनुमति है
dns इनकी अनुमति है
domain इनकी अनुमति है
dgram सभी देशों/इलाकों में उपलब्ध नहीं है Apigee एनवायरमेंट में मौजूद Node.js ऐप्लिकेशन, इन सेवाओं को ऐक्सेस नहीं कर पाएंगे हमारे नेटवर्क आर्किटेक्चर की वजह से, UDP के ज़रिए इंटरनेट की पहुंच बढ़ाने में मदद मिलती है.
events इनकी अनुमति है
fs सभी देशों/इलाकों में उपलब्ध नहीं है फ़ाइल सिस्टम का ऐक्सेस सिर्फ़ उस डायरेक्ट्री तक सीमित है जहां से स्क्रिप्ट लॉन्च की गई थी: /resources/node डायरेक्ट्री. Node.js स्क्रिप्ट के अंदर ही फ़ाइलें पढ़ और लिखी जा सकती हैं के लिए होगा, उदाहरण के लिए, अस्थायी स्क्रैच क्षेत्र के रूप में, लेकिन इसकी कोई गारंटी नहीं है कि फ़ाइलें कब तक सेव रहेंगी.
http इनकी अनुमति है इनकमिंग अनुरोधों के लिए वर्चुअल होस्ट और पाथ को एपीआई प्रॉक्सी में तय किया गया है, न कि इसके ज़रिए एचटीटीपी मॉड्यूल में सबमिट किया जाएगा. "http और https के लिए समर्थन को समझना मॉड्यूल" हमारा वीडियो देखें.
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 एलिमेंट का इस्तेमाल करके आर्ग्युमेंट. इसके लिए Advanced 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-access यह Apigee Edge प्लैटफ़ॉर्म पर चलने वाले Node.js ऐप्लिकेशन को, ऐक्सेस करने की अनुमति देता है Apigee से जुड़ी खास सुविधाएं. इस मॉड्यूल का इस्तेमाल इन कामों के लिए किया जा सकता है: फ़्लो को ऐक्सेस करना और उसमें बदलाव करना वैरिएबल के लिए, सुरक्षित स्टोर से डेटा वापस पाएं और एज कैश, कोटा, और OAuth का इस्तेमाल करें सेवाओं. यह भी देखें जिनका इस्तेमाल किया जा रहा है apigee-access मॉड्यूल.
trireme-support Node.js ऐप्लिकेशन को Trireme की खास सुविधाओं का फ़ायदा लेने देता है. इस समय इसमें सिर्फ़ एक ही सुविधा काम करती है -- Java में बने Node.js मॉड्यूल को लोड किया जा रहा है. ध्यान दें: Edge Cloud पर loadJars काम नहीं करता.
trireme-xslt XLST प्रोसेसिंग के बारे में जानकारी दिखाता है. इसे ख़ास तौर पर Trireme के लिए डिज़ाइन किया गया है Node.js ऐप्लिकेशन के चलने पर XSLT की कुशल प्रोसेसिंग की अनुमति देने वाला प्लैटफ़ॉर्म Java.
trireme-jdbc Node.js से JDBC के लिए ऐक्सेस देता है. ध्यान दें: Edge Cloud के साथ काम नहीं करता. Edge Private के लिए क्लाउड है, तो आप JDPC JAR फ़ाइलों को क्लास पाथ में रख सकते हैं और इस मॉड्यूल का इस्तेमाल कर सकते हैं.

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

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

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

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

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

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

{ [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 फ़ाइल को Editor. अगर फ़ाइल मौजूद नहीं है, तो इसे बनाएं:
    > vi /<inst_root>/apigee/customer/application/message-processor.properties
  2. प्रॉपर्टी को अपने हिसाब से सेट करें. उदाहरण के लिए, सिर्फ़ लोकल होस्ट का ऐक्सेस न देने के लिए:
    conf_nodejs_connect.ranges.denied=127.0.0.1/32
  3. बदलावों को सेव करें.
  4. पक्का करें कि प्रॉपर्टी फ़ाइल का मालिकाना हक 'apigee' के पास हो उपयोगकर्ता:
    &gt; chown apigee:apigee /<inst_root>/apigee/customer/application/message-processor.property
  5. मैसेज प्रोसेसर को रीस्टार्ट करें:
    &gt; /<inst_root>/apigee/apigee-service/bin/apigee-service Edge-message-प्रोसेसर रीस्टार्ट करो

एचटीटीपी और एचटीटीपीएस मॉड्यूल के साथ काम करने की जानकारी

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

इसमें http और https मॉड्यूल की listen तरीका 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 के हर एनवायरमेंट में कम से कम एक वर्चुअल होस्ट होता है. वर्चुअल होस्ट, एचटीटीपी को तय करता है Apigee संगठन से कनेक्ट करने के लिए सेटिंग. किसी एनवायरमेंट में मौजूद सभी एपीआई प्रॉक्सी एक ही वर्चुअल होस्ट. डिफ़ॉल्ट रूप से, हर एनवायरमेंट के लिए दो वर्चुअल होस्ट उपलब्ध होते हैं: default और secure. अधिक जानकारी के लिए, देखें वर्चुअल होस्ट और एपीआई पाएं डेवलपमेंट लाइफ़साइकल होना चाहिए.

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

बेहतर ScriptTarget कॉन्फ़िगरेशन

<TargetEndpoint> में परिभाषा, <ScriptTarget> एलिमेंट <ResourceURL> के अलावा वैकल्पिक पैरामीटर. आपके पास कमांड-लाइन आर्ग्युमेंट और <EnvironmentVariables> का इस्तेमाल करके Node.js स्क्रिप्ट के लिए एनवायरमेंट वैरिएबल और &lt;Arguments&gt; पैरामीटर:

<TargetEndpoint name="default">
  <ScriptTarget>
     <ResourceURL>node://hello.js</ResourceURL>
     <EnvironmentVariables>
         <EnvironmentVariable name="NAME">VALUE</EnvironmentVariable> 
     </EnvironmentVariables>
     <Arguments>
         <Argument>ARG</Argument>
     </Arguments>
  </ScriptTarget>
</TargetEndpoint>