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

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

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

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

केवीएम की स्थितियां

यहां कुछ ऐसी स्थितियां दी गई हैं जिनमें केवीएम का इस्तेमाल किया जा सकता है:

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

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

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

केवीएम में स्कोप है

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

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

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

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

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

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

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

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

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

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

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

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

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

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

सीमाएं

जिन संगठनों में मुख्य परसिस्टेंस सर्विस (सीपीएस) चालू है, वे:

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

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

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

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

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

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

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

  • की वैल्यू मैप ऑपरेशन की नीति (एन्क्रिप्ट नहीं किया गया है)

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

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

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

  • Management API

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

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

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

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

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

केवीएम फ़ेच किए जा रहे हैं

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

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

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

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