Apigee Edge दस्तावेज़ देखा जा रहा है.
Apigee X दस्तावेज़ पर जाएं. जानकारी
एनवायरमेंट वैरिएबल की सीमाएं
होस्ट किए गए टारगेट, एनवायरमेंट वैरिएबल के साइज़ और संख्या को सीमित करते हैं. इन्हें, होस्ट किए गए टारगेट के रनटाइम एनवायरमेंट में सेट किया जा सकता है.
- 1000: सिंगल एनवायरमेंट वैरिएबल की ज़्यादा से ज़्यादा लंबाई.
- 100: सेट किए जा सकने वाले एनवायरमेंट वैरिएबल की ज़्यादा से ज़्यादा संख्या.
एनवायरमेंट वैरिएबल सेट करने के बारे में जानकारी के लिए, मेनिफ़ेस्ट फ़ाइल देखें.
ऐप्लिकेशन रनटाइम में सेट किए गए एनवायरमेंट वैरिएबल
जब होस्ट किए गए टारगेट ऐप्लिकेशन को डिप्लॉय किया जाता है, तब नीचे दिए गए एनवायरमेंट वैरिएबल सेट हो जाते हैं. साथ ही, ये वैरिएबल आपके ऐप्लिकेशन के लिए रनटाइम के दौरान उपलब्ध रहते हैं:
APIGEE_ENVIRONMENT
- वह एनवायरमेंट जहां होस्ट किया गया टारगेट प्रॉक्सी डिप्लॉय किया गया है.APIGEE_ORGANIZATION
- वह संगठन जहां होस्ट किया गया टारगेट प्रॉक्सी डिप्लॉय किया गया है.PORT
- वह पोर्ट जहां होस्ट किए गए टारगेट ऐप्लिकेशन को सुनना चाहिए.
सिस्टम रिसॉर्स ऐलोकेशन
होस्ट किए गए हर टारगेट इंस्टेंस को नीचे दिए गए संसाधन मिलते हैं:
- 256 एमबी मेमोरी
- 1.2 गीगाहर्ट्ज़ वाला सीपीयू
स्केलिंग:
इस सेक्शन में बताया गया है कि होस्ट किए गए टारगेट के ऐप्लिकेशन कैसे स्केल करते हैं. यह इस पर निर्भर करता है कि आपका एज खाता किस तरह का है.- Apigee Edge का मुफ़्त में आज़माने वाला वर्शन, हर प्रॉक्सी के लिए होस्ट किए गए टारगेट के एक इंस्टेंस तक सीमित है.
- पैसे चुकाकर लिए गए Apigee Edge के खातों को, अनुरोध की दर, जवाब मिलने में लगने वाले समय, और हर प्रॉक्सी के लिए ऐप्लिकेशन की अन्य मेट्रिक के हिसाब से, अपने-आप स्केल किया जाता है.
- कोई गतिविधि न होने पर, होस्ट किए गए टारगेट ऐप्लिकेशन को Apigee Edge के पैसे चुकाकर लिए जाने वाले और ट्रायल वर्शन, दोनों वर्शन पर डिप्लॉय कर दिया गया है. ऐसे मामले में, आपको कुछ समय के लिए जवाब देने में ज़्यादा समय लग सकता है. पहले से मालूम समस्याओं को भी देखें
मेनिफ़ेस्ट फ़ाइल
होस्ट किए गए ऐप्लिकेशन को बनाने और डिप्लॉय करने के दौरान रनटाइम की जानकारी इकट्ठा करने के लिए, Edge संसाधन/होस्ट किए गए डायरेक्ट्री में, app.yaml नाम की मेनिफ़ेस्ट फ़ाइल खोजता है. इस फ़ाइल में, होस्ट किए गए टारगेट ऐप्लिकेशन को बनाने और डिप्लॉय करने के लिए ज़रूरी जानकारी शामिल है.
मैनफ़ीस्ट फ़ाइल सिंटैक्स
runtime: node runtimeVersion: version_number command: command_name args: argument_array env: - name: variable_name value: literal_value - name: variable_name valueRef: name: kvm_name key: kvm_value
मेनिफ़ेस्ट फ़ाइल के एलिमेंट
app.yaml मेनिफ़ेस्ट फ़ाइल में ये एलिमेंट शामिल हैं:
- runtime - (ज़रूरी है) उस ऐप्लिकेशन का टाइप बताता है जिसे डिप्लॉय किया जा रहा है.
आपको
node
तय करना होगा. - runtimeVersion - (ज़रूरी नहीं) आपके ऐप्लिकेशन के इस्तेमाल किए जाने वाले रनटाइम का वर्शन. डिफ़ॉल्ट: Node.js एलटीएस (v10.x). दूसरे विकल्पों के लिए, नोड के लिए Docker आधिकारिक डेटा स्टोर करने की जगह देखें.
- command - (ज़रूरी नहीं) इससे आपको ऐप्लिकेशन शुरू करने के लिए इस्तेमाल किए गए डिफ़ॉल्ट कमांड के अलावा, कोई अन्य निर्देश चलाने की सुविधा मिलती है. डिफ़ॉल्ट:
Node.js=npm
- args - (ज़रूरी नहीं) ऐप्लिकेशन में पास करने के लिए कमांड लाइन तर्कों का कलेक्शन (स्टैंडर्ड YAML कलेक्शन सिंटैक्स में बताया गया है). आम तौर पर, इन्हें डिफ़ॉल्ट कमांड में जोड़ा जाता है.
डिफ़ॉल्ट वैल्यू start है. उदाहरण के लिए, डिफ़ॉल्ट रूप से Node.js ऐप्लिकेशन को
npm start
निर्देश भेजा जाएगा. - env - (ज़रूरी नहीं) होस्ट किए गए टारगेट के रनटाइम एनवायरमेंट में सेट किए जाने वाले एनवायरमेंट वैरिएबल (नाम/वैल्यू पेयर) की कैटगरी. ये वैरिएबल, आपके डिप्लॉय किए गए होस्ट किए गए टारगेट ऐप्लिकेशन के लिए उपलब्ध हैं.
- name - वैरिएबल का नाम.
- value | valueRef - आपके पास दो विकल्प होते हैं. आपके पास लिटरल वैल्यू सेट करने या की वैल्यू मैप में स्टोर की गई वैल्यू का रेफ़रंस देने का विकल्प होता है. 'की वैल्यू मैप' आपके Edge एनवायरमेंट में
पहले से मौजूद होना चाहिए. अहम वैल्यू वाले मैप के साथ काम करना देखें
- अगर value का इस्तेमाल किया जा रहा है, तो आपको
एक वैरिएबल
name
और लिटरलvalue
तय करना होगा. उदाहरण के लिए:runtime: node env: - name: NODE_ENV value: production
- अगर valueRef का इस्तेमाल किया जाता है,
तो आपको उस की वैल्यू मैप (केवीएम) का नाम देना होगा जिसे आपने Edge में पहले बनाया था और एक कुंजी.
उदाहरण के लिए:
runtime: node env: - name: DB_ENV value: production - name: DB_PASSWORD valueRef: name: hosted-kvm key: db-password
- अगर value का इस्तेमाल किया जा रहा है, तो आपको
एक वैरिएबल
मेनिफ़ेस्ट फ़ाइलों के उदाहरण
इस सेक्शन में Node.js ऐप्लिकेशन के लिए, मेनिफ़ेस्ट फ़ाइलों के उदाहरण
दिए गए हैं. होस्ट किए गए टारगेट ऐप्लिकेशन को डिप्लॉय करने के लिए, मेनिफ़ेस्ट फ़ाइल होना ज़रूरी है. यह फ़ाइल, apiproxy/resources/hosted
डायरेक्ट्री में होनी चाहिए. साथ ही, फ़ाइल का नाम app.yaml
होना चाहिए.
Node.js ऐप्लिकेशन के लिए app.yaml
(मेनिफ़ेस्ट) फ़ाइलों के उदाहरण नीचे दिए गए हैं.
लिटरल एनवायरमेंट वैरिएबल के बारे में बताने वाला उदाहरण:
runtime: node env: - name: NODE_ENV value: production
स्टार्ट कमांड, कमांड लाइन आर्ग्युमेंट, और एक एनवायरमेंट वैरिएबल वाला उदाहरण.
runtime: node command: ./node_modules/pm2/bin/pm2 env: - name: NODE_ENV value: production args: - app.js
की वैल्यू मैप (केवीएम) रेफ़रंस के बारे में बताने वाला उदाहरण:
केवीएम ऐक्सेस के बारे में ज़्यादा जानकारी के लिए, मेनिफ़ेस्ट फ़ाइल देखें.
runtime: node env: - name: DB_ENV value: production - name: DB_PASSWORD valueRef: name: hosted-kvm key: db-password
GitHub पर होस्ट किए गए टारगेट ऐप्लिकेशन का सैंपल
Apigee, Node.js में होस्ट किए गए टारगेट ऐप्लिकेशन की मदद से, GitHub पर प्रॉक्सी के सैंपल उपलब्ध कराता है. आपके पास इस डेटा स्टोर करने की सुविधा को क्लोन करने और किसी भी प्रॉक्सी को डिप्लॉय करने के लिए, README के निर्देशों का पालन करने का विकल्प है.
ज़रूरी शर्तें
नमूनों को डिप्लॉय करने के लिए, आपके सिस्टम पर दो टूल इंस्टॉल होने चाहिए:
- apigeetool -- यह Edge प्रॉक्सी को डिप्लॉय करने के लिए, एक कमांड लाइन टूल है.
- get_token - यह apigeetool के लिए ज़रूरी ऑथराइज़ेशन टोकन पाने के लिए एक कमांड लाइन टूल है.
अगर आपको स्थानीय तौर पर सैंपल की जांच करनी है, तो आपके पास Node.js इंस्टॉल होना भी ज़रूरी है.
सैंपल डेटा स्टोर करने की जगह हासिल करना
- ब्राउज़र में, https://github.com/apigee/api-platform-samples पर जाएं.
- क्लोन करें या डाउनलोड करें पर क्लिक करें और अपने पसंदीदा तरीके का इस्तेमाल करके, डेटा स्टोर करने की जगह को अपने स्थानीय सिस्टम में शामिल करें.
- cd से <your install direct>/api-platform-sample/doc-samples/दिखेगा-targets पर
- रेपो डाउनलोड होने के बाद, किसी भी सैंपल डायरेक्ट्री में cd किया जा सकता है. साथ ही, Edge पर सैंपल प्रॉक्सी डिप्लॉय करने के लिए, README के निर्देशों का पालन किया जा सकता है. डिप्लॉय करने का निर्देश नीचे दिया गया है. बस अपने Apigee खाते के लिए, दिखाए गए पैरामीटर से बदलें:
get_token && apigeetool deployproxy \ -o YOUR_ORGANIZATION \ -e YOUR_ENVIRONMENT \ --json \ --token "$(< ~/.sso-cli/valid_token.dat)"\ --api NAME_OF_THE_PROXY \ --directory .
उदाहरण: सैंपल ऐप्लिकेशन चलाना
सैंपल डेटा स्टोर करने की जगह का क्लोन बनाएं
cd ~/myhome
git clone https://github.com/apigee/api-platform-samples.git
cd ~/myhome/api-platform-samples/doc-samples/hosted-targets
cd node-hosted-hello
ऐप्लिकेशन की स्थानीय रूप से जांच करें
इस लोकल टेस्ट करने के लिए, आपको Node.js को इंस्टॉल करना होगा.
PORT=8081 node apiproxy/resources/hosted/index.js
curl http://localhost:8081
आउटपुट का उदाहरण:
{"date":"2018-03-12T21:45:22.161Z","msg":"Hello, World!"}
प्रॉक्सी डिप्लॉय करें
get_token && apigeetool deployproxy \ -o myorg \ -e test \ --json \ --token "$(< ~/.sso-cli/valid_token.dat)"\ --api node-hosted-hello \ --directory .
डिप्लॉयमेंट की जांच करना
डिप्लॉयमेंट को पूरा होने में कुछ मिनट लग सकते हैं. अगर आपको डिप्लॉयमेंट से जुड़ी गड़बड़ी का कोई मैसेज मिलता है, तो डिप्लॉय करें कमांड को फिर से लागू करें.
curl http://myorg-test.apigee.net/node-hosted-hello
आउटपुट का उदाहरण:
{"date":"2018-03-23T18:59:18.668Z","msg":"Hello, World!"
समस्याएं जिनके बारे में जानकारी है
- नेटवर्क के इंतज़ार का समय - अब Node.js ऐप्लिकेशन, एमपी के जेवीएम में नहीं चलता, इसलिए अब एमपी और डिप्लॉयमेंट के बीच नेटवर्क बदल गया है. बेशक
- धीमे एपीआई रिस्पॉन्स - आपके ऐप्लिकेशन को चलाने वाला इंफ़्रास्ट्रक्चर, ज़रूरत के हिसाब से अपने-आप स्केल करता है. इसका मतलब है कि आपके ऐप्लिकेशन के लिए स्केल शून्य इंस्टेंस तक किया जा सकता है. अगर ऐसा है, तो अगले एपीआई अनुरोध को, सामान्य एपीआई अनुरोधों की तुलना में थोड़ा ज़्यादा समय लगेगा. ऐसा इसलिए होगा, क्योंकि इन्फ़्रास्ट्रक्चर, अनुरोधों को प्रोसेस करने के लिए इंस्टेंस को घुमा रहा है.
- डिप्लॉयमेंट से जुड़ी गड़बड़ी - अगर आपको होस्ट किए गए टारगेट प्रॉक्सी को डिप्लॉय करते समय, डिप्लॉयमेंट से जुड़ी गड़बड़ी मिलती है, तो प्रॉक्सी को फिर से डिप्लॉय करके देखें. कुछ मामलों में, डिप्लॉयमेंट का समय खत्म हो सकता है. अगर फिर से डिप्लॉय किया जाए, तो समस्या अपने-आप ठीक हो जाएगी.