मुख्य वैल्यू वाले मैप के साथ काम करना

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

कई बार ऐसा होता है कि आपको रनटाइम के दौरान डेटा वापस पाने के लिए, अपना डेटा सेव करना पड़ता है. इस डेटा की समयसीमा आपके एपीआई प्रॉक्सी लॉजिक में हार्ड कोड नहीं की जानी चाहिए. इसके लिए, की वैल्यू मैप (केवीएम) का इस्तेमाल किया जाना चाहिए. केवीएम, कुंजी/वैल्यू स्ट्रिंग के जोड़े का कस्टम कलेक्शन है, जो एन्क्रिप्ट (सुरक्षित) होता है या एन्क्रिप्ट नहीं होता है. ऐसा करने के दो उदाहरण यहां दिए गए हैं:

अन्य तरह के परसिस्टेंस के बारे में जानने के लिए, कैश मेमोरी में सेव करने का विकल्प और परसिस्टेंट जोड़ना देखें.

केवीएम से जुड़ी स्थितियां

यहां कुछ स्थितियों के बारे में बताया गया है, जिसमें केवीएम काम के होते हैं:

  • आपके पास एक ऐसा एपीआई प्रॉक्सी है जिसे टेस्ट एनवायरमेंट में एक टारगेट (या सर्विस कॉलआउट) यूआरएल को प्रोडक्शन एनवायरमेंट में और दूसरे टारगेट यूआरएल को प्रोडक्शन एनवायरमेंट में कॉल करना होता है. प्रॉक्सी में हार्ड-कोडिंग के बजाय, प्रॉक्सी का पता लगाया जा सकता है कि वह किस एनवायरमेंट में है, मिलती-जुलती की वैल्यू मैप ऑपरेशंस नीति को लागू कर सकता है, और आपके बनाए गए किसी केवीएम से सही टारगेट यूआरएल वापस पा सकता है. इसके बाद, अगर आपके एक या दोनों टारगेट बदल जाते हैं, तो केवीएम को नए यूआरएल से अपडेट किया जाता है. इसके बाद, प्रॉक्सी नई वैल्यू को चुन लेता है और उसे फिर से डिप्लॉय नहीं किया जाता.
  • आपको क्रेडेंशियल, निजी कुंजियां या टोकन सेव करना है. जैसे, बाहरी सेवाओं के लिए टोकन, OAuth टोकन जनरेट करने के लिए ज़रूरी क्रेडेंशियल या JavaScript कॉल आउट (एन्क्रिप्ट (सुरक्षित) करने के तरीके) या JSON वेब टोकन (JWT) साइन करने के लिए JavaScript. अनुरोध में क्रेडेंशियल, कुंजी या टोकन पास करने के बजाय, उन्हें केवीएम (हमेशा एन्क्रिप्ट (सुरक्षित) किया गया) में हार्ड-कोड किया जा सकता है. साथ ही, उन्हें ऐसे टारगेट में डाइनैमिक तौर पर फिर से पाया जा सकता है जिनमें उनकी ज़रूरत होती है.

आपको ऐसी दूसरी स्थितियों का पता चलेगा, जहां की/वैल्यू स्ट्रिंग पेयर का स्टोरेज काम का है. आम तौर पर, केवीएम का इस्तेमाल तब करें, जब:

  • आपके कोड में मौजूद खास जगहों के लिए रनटाइम के दौरान अलग-अलग वैल्यू की ज़रूरत होती है.
  • संवेदनशील जानकारी को हार्ड कोडिंग के बिना पास करना ज़रूरी है.
  • आपको ऐसी वैल्यू स्टोर करनी हैं जिनकी समयसीमा कभी खत्म नहीं होती. ऐसा, कैश मेमोरी की तरह हो सकता है.

केवीएम का दायरा

स्कोप का मतलब है "जहां केवीएम उपलब्ध है." केवीएम नीचे दिए गए दायरे में बनाए जा सकते हैं: organization, environment, और apiproxy.

उदाहरण के लिए, अगर सिर्फ़ एक एपीआई प्रॉक्सी को केवीएम में डेटा की ज़रूरत है, तो आप apiproxy दायरे में केवीएम बना सकते हैं, जहां सिर्फ़ वह एपीआई प्रॉक्सी डेटा ऐक्सेस कर सकता है.

इसके अलावा, हो सकता है कि आप जांच के माहौल में सभी एपीआई प्रॉक्सी के लिए एक कुंजी वैल्यू मैप का ऐक्सेस देना चाहें. ऐसी स्थिति में, आप एनवायरमेंट स्कोप में मुख्य वैल्यू वाला मैप बनाएंगे. "prod" परिवेश में डिप्लॉय किए गए प्रॉक्सी, "test" परिवेश के दायरे में KVM को ऐक्सेस नहीं कर सकते. अगर आपको एक ही केवीएम कुंजियां प्रोडक्शन में उपलब्ध करवानी हैं, तो पैरलल केवीएम बनाएं.

अगर आपको सभी एनवायरमेंट में सभी प्रॉक्सी को एक ही केवीएम से ऐक्सेस करना है, तो organization दायरे में केवीएम बनाएं.

एन्क्रिप्ट (सुरक्षित) किए गए केवीएम के बारे में जानकारी

एन्क्रिप्ट (सुरक्षित) किए गए केवीएम को Apigee से जनरेट किए गए AES-128 साइफ़र कुंजी के साथ एन्क्रिप्ट (सुरक्षित) किया जाता है. केवीएम को एन्क्रिप्ट (सुरक्षित) करने के लिए इस्तेमाल की गई कुंजी, केवीएम के दायरे में सेव की जाती है. उदाहरण के लिए, किसी संगठन में एनवायरमेंट के लिए बनाए गए सभी एन्क्रिप्ट (सुरक्षित) किए गए केवीएम, उसी स्कोप वाली कुंजी का इस्तेमाल करके बनाए जाते हैं.

Edge, एन्क्रिप्ट (सुरक्षित) की गई वैल्यू को दिखाने के तरीके यहां बताए गए हैं. (एन्क्रिप्ट की गई केवीएम बनाने के बारे में जानने के लिए, केवीएम को मैनेज और इस्तेमाल करने का तरीका देखें.)

एज यूज़र इंटरफ़ेस (यूआई)

एन्क्रिप्ट (सुरक्षित) की गई वैल्यू की वैल्यू वाले मैप, यूज़र इंटरफ़ेस (यूआई) में तारे के निशान वाले वैल्यू दिखाते हैं (*****). उदाहरण के लिए:

मैनेजमेंट एपीआई

मैनेजमेंट एपीआई में, एन्क्रिप्ट (सुरक्षित) की गई वैल्यू को मास्क कर दिया जाता है. एन्क्रिप्ट (सुरक्षित) किए गए केएमएम कॉल पर, यह एपीआई रिस्पॉन्स का सैंपल है:

{
  "encrypted": true,
  "entry": [
    {
      "name": "Key1",
      "value": "*****"
    },
    {
      "name": "Key2",
      "value": "*****"
    }
  ],
  "name": "secretMap"
}

ट्रेस और डीबग करें

एन्क्रिप्ट की गई केवीएम वैल्यू को फिर से पाने के लिए, की वैल्यू मैप ऑपरेशंस नीति का इस्तेमाल करते समय, वैल्यू को स्टोर करने के लिए, वैरिएबल का नाम दिया जाता है. एन्क्रिप्ट (सुरक्षित) की गई वैल्यू पाने के लिए, आपको वैरिएबल के नाम में "private." प्रीफ़िक्स जोड़ना होगा. इससे, केवीएम कुंजियों/वैल्यू को ट्रेस और डीबग सेशन में नहीं दिखाया जा सकता.

सीमाएं

मुख्य परफ़ॉर्मेंस से जुड़ी सेवाओं (सीपीएस) को चालू करने वाले संगठनों के लिए:

  • केवीएम का नाम/आइडेंटिफ़ायर केस-सेंसिटिव (बड़े और छोटे अक्षरों में अंतर) होता है.
  • कुंजी का साइज़ 2 केबी तक सीमित है.
  • वैल्यू का साइज़ 10 केबी तक सीमित है.

निजी क्लाउड के लिए Apigee एज के लिए, हर केवीएम का साइज़ 15 एमबी से ज़्यादा नहीं होना चाहिए. यह कुंजी और वैल्यू का कुल साइज़ होता है. अगर आपने इस सीमा को पार कर लिया है, तो निजी क्लाउड के लिए Apigee Edge एक गड़बड़ी दिखाता है. अपने केवीएम का साइज़ तय करने के लिए, आप nodetool cfstats निर्देश का इस्तेमाल कर सकते हैं.

बड़ी केवीएम की वजह से परफ़ॉर्मेंस में गिरावट आ सकती है. नतीजतन, बेहतर परफ़ॉर्मेंस के लिए, आपको बड़े, एक ही तरह के केएमवी को छोटे-छोटे हिस्सों में बांटना चाहिए.

केवीएम को मैनेज और इस्तेमाल करना

आप कई तरीकों से केवीएम बना सकते हैं, मैनेज कर सकते हैं, और उनका इस्तेमाल कर सकते हैं. इस सेक्शन में, एन्क्रिप्ट (सुरक्षित) किए गए और बिना एन्क्रिप्ट किए गए, दोनों तरह के वीएम बनाने, फिर उन्हें वापस पाने के अलग-अलग विकल्पों के बारे में बताया गया है.

केवीएम बनाना और अपडेट करना

केवीएम बनाने और उन्हें अपडेट करने के लिए, ये तरीके अपनाएं:

  • की वैल्यू मैप ऑपरेशंस की नीति (कोई एन्क्रिप्शन नहीं)

    रनटाइम केवीएम बनाने और एपीआई प्रॉक्सी के ज़रिए अपडेट करने के लिए, की वैल्यू मैप ऑपरेशंस नीति का इस्तेमाल करें. (नीति में, पैरंट एलिमेंट में mapIdentifier एट्रिब्यूट में केवीएम का नाम बताया जाता है.)

    <InitialEntries> एलिमेंट की मदद से, नए केवीएम में बेसलाइन सेट बनाने और पॉप्युलेट करने में मदद मिलती है. इसके लिए, यूज़र इंटरफ़ेस (यूआई) में नीति को सेव करना और एपीआई प्रॉक्सी को डिप्लॉय करना (अगर आपने इसे ऑफ़लाइन डेवलप किया है) किया जा सकता है. अगर नीति में वैल्यू बदल जाती हैं, तो मौजूदा वैल्यू बदल जाती हैं. मौजूदा केवीएम में कोई नई कुंजी/वैल्यू जोड़ी जाती है और साथ ही मौजूदा कुंजी/वैल्यू भी जोड़ी जाती है.

    <Put> एलिमेंट पहले से मौजूद न होने पर एक नया केवीएम बनाता है और एक या उससे ज़्यादा वैल्यू वाली कुंजी बनाता है. अगर केवीएम पहले से मौजूद है, तो की/वैल्यू जोड़ी जाती हैं या अगर कुंजी पहले से मौजूद है, तो उन्हें अपडेट कर दिया जाता है. केवीएम नीति में, एक से ज़्यादा <Put> एलिमेंट का इस्तेमाल किया जा सकता है.

  • मैनेजमेंट एपीआई

    यह मैनेजमेंट एपीआई, एडमिन के तौर पर केवीएम के साथ काम करने के लिए है, न कि आपके एपीआई प्रॉक्सी में रनटाइम के दौरान. उदाहरण के लिए, हो सकता है कि आपके पास कोई इंटरनल स्क्रिप्ट हो जो टेस्ट एनवायरमेंट में केवीएम मिटाने और फिर से बनाने के लिए मैनेजमेंट एपीआई का इस्तेमाल करती हो. इसके अलावा, आप सभी प्रॉक्सी के लिए केवीएम में कुंजी की वैल्यू रीसेट कर सकते हैं. (KVM के रनटाइम में बदलाव के लिए, अपने प्रॉक्सी के की वैल्यू मैप ऑपरेशंस नीति का इस्तेमाल करें).

    की/वैल्यू मैप मैनेजमेंट एपीआई से, आपको सभी दायरे (संगठन, एनवायरमेंट, और apiproxy) में, एन्क्रिप्ट (सुरक्षित) की गई केवीएम और कुंजियों/वैल्यू को बनाने, अपडेट करने, और मिटाने की सुविधा मिलती है.

    मैनेजमेंट एपीआई का इस्तेमाल करके एन्क्रिप्ट (सुरक्षित) किया गया केवीएम बनाने के लिए, JSON पेलोड में "encrypted" : "true" जोड़ें. केवीएम को एन्क्रिप्ट (सुरक्षित) करने के बाद ही, उन्हें बनाया जा सकता है. किसी मौजूदा केवीएम को एन्क्रिप्ट (सुरक्षित) नहीं किया जा सकता.

  • मैनेजमेंट यूज़र इंटरफ़ेस (यूआई)

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

केवीएम वापस लाया जा रहा है

आप की वैल्यू मैप ऑपरेशंस की नीति को ऐक्सेस करते समय, एक ही तरीके से, एन्क्रिप्ट किए गए और एन्क्रिप्ट नहीं किए गए की-वैल्यू मैप को पहले जैसा ही करते हैं.

  • नीति: एन्क्रिप्ट (सुरक्षित) और एन्क्रिप्ट (सुरक्षित) नहीं किए गए केवीएम को वापस पाने के लिए, की वैल्यू मैप ऑपरेशंस नीति में <Get> एलिमेंट का इस्तेमाल करें. एक बुनियादी अंतर यह है कि नीति की मदद से एन्क्रिप्ट (सुरक्षित) की गई वैल्यू को वापस लाया जाता है. इसमें, आपको वैरिएबल के नाम में "private." प्रीफ़िक्स जोड़ना होता है. इस वैरिएबल में, वापस पाई गई वैल्यू शामिल होती है, जैसा कि रेफ़रंस के विषय के कार्रवाई पाएं सेक्शन में बताया गया है. एपीआई प्रॉक्सी को डीबग करते समय, यह प्रीफ़िक्स ट्रेस और डीबग सेशन से वैल्यू को छिपा देता है.
  • Management API: एडमिन मैनेजमेंट के मकसद से, केवीएम और कुंजी/वैल्यू पाने के लिए, एनवायरमेंट की अहम वैल्यू के मैप बनाने और उनमें बदलाव करने का इस्तेमाल किया जा सकता है. उदाहरण के लिए, अगर आपको JSON डेफ़िनिशन को डाउनलोड करके और उसे स्टोर करके केवीएम का बैक अप लेना है, तो मैनेजमेंट एपीआई का इस्तेमाल करें. हालांकि, ध्यान रखें कि एपीआई की जांच के नतीजे में एन्क्रिप्ट (सुरक्षित) की गई वैल्यू, ***** के तौर पर दिखती हैं.
  • मैनेजमेंट यूज़र इंटरफ़ेस (यूआई): मैनेजमेंट यूआई में एनवायरमेंट स्कोप वाले केवीएम देखने के लिए, एपीआई > एनवायरमेंट कॉन्फ़िगरेशन > मुख्य वैल्यू वाले मैप (क्लासिक एज) एडमिन > एनवायरमेंट > मुख्य वैल्यू वाले मैप (नया एज) पर जाएं.

केवीएम का उदाहरण

यूआरएल में वैल्यू को पॉप्युलेट करने के लिए, केवीएम का इस्तेमाल करने के उदाहरण के लिए, https://community.apigee.com/questions/32727/templatize-target-url-with-kvm-by-Environment.html देखें.