আপনি Apigee Edge-এর ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন .info- তে যান।
কী
Apigee Edge-এ উপলব্ধ একটি Key Value Map (KVM) স্টোরে পলিসি-ভিত্তিক অ্যাক্সেস প্রদান করে। PUT, GET, বা DELETE অপারেশন নির্দিষ্ট করে KeyValueMapOperations পলিসি কনফিগার করার মাধ্যমে নামযুক্ত বিদ্যমান ম্যাপ থেকে কী/ভ্যালু পেয়ার সংরক্ষণ, পুনরুদ্ধার এবং মুছে ফেলা যায়। (এই অপারেশনগুলোর মধ্যে অন্তত একটি অবশ্যই পলিসি দ্বারা সম্পাদিত হতে হবে।)
ভিডিও
কেভিএম সম্পর্কে আরও জানতে নিম্নলিখিত ভিডিওগুলো দেখুন।
| ভিডিও | বর্ণনা |
|---|---|
| কী ভ্যালু ম্যাপ কেন? | আপনার কেন KVM প্রয়োজন এবং এগুলো কীভাবে কাজ করে তা জানুন। |
| UI ব্যবহার করে KVM তৈরি করুন এবং রানটাইমে KVM পুনরুদ্ধার করুন | একটি KVM তৈরি করুন, একটি KVM পলিসি ব্যবহার করে এর মান পুনরুদ্ধার করুন, এবং ফ্লো ভেরিয়েবল ব্যবহার করে API অনুরোধে মানটি ইনজেক্ট করুন। |
| এপিআই রানটাইমে একটি কেভিএম তৈরি এবং আপডেট করুন | KVM পলিসি ব্যবহার করে API রানটাইমে একটি KVM তৈরি করুন। |
| পারফরম্যান্স বাড়াতে KVM ক্যাশ করুন | ডেটা ক্যাশ করার মাধ্যমে KVM পলিসির পারফরম্যান্স উন্নত করুন। |
| এনক্রিপ্টেড KVM সংরক্ষণ করুন | সংবেদনশীল তথ্য KVM-এ এনক্রিপ্টেড ফরম্যাটে সংরক্ষণ করুন এবং KVM পলিসি ও প্রাইভেট ভেরিয়েবল ব্যবহার করে রানটাইমে এর মান পুনরুদ্ধার করুন। |
| KVM স্কোপ ব্যবহার করে অ্যাক্সেস পরিচালনা করুন | KVM পলিসি স্কোপ অ্যাট্রিবিউট ব্যবহার করে KVM-কে অর্গানাইজেশন, এনভায়রনমেন্ট, এপিআই প্রক্সি বা এপিআই প্রক্সি রিভিশনে সীমাবদ্ধ করুন। |
| API রানটাইমে KVM এন্ট্রিগুলি মুছে ফেলুন | KVM পলিসি DELETE অপারেশন ব্যবহার করে API রানটাইমে KVM এন্ট্রিগুলো মুছে ফেলুন। |
নমুনা
আক্ষরিকভাবে KVM রাখুন
যখন নিম্নলিখিত পলিসিটি চলে, তখন এটি FooKVM নামের একটি এনক্রিপ্টেড KVM তৈরি করে, তারপর FooKey_1 নামের একটি কী তৈরি করে যার দুটি ভ্যালু আক্ষরিক স্ট্রিং foo এবং bar দিয়ে সেট করা থাকে (ভেরিয়েবল থেকে নেওয়া ভ্যালু দিয়ে নয়)। পরবর্তী উদাহরণে, আপনি যখন কী-টি GET , তখন আপনার কাঙ্ক্ষিত ভ্যালুটি পাওয়ার জন্য একটি ইনডেক্স নম্বর উল্লেখ করবেন।
<KeyValueMapOperations async="false" continueOnError="false" enabled="true" name="FooKVM" mapIdentifier="FooKVM">
<DisplayName>FooKVM</DisplayName>
<ExpiryTimeInSecs>86400</ExpiryTimeInSecs>
<Scope>environment</Scope>
<Put>
<Key>
<Parameter>FooKey_1</Parameter>
</Key>
<Value>foo</Value>
<Value>bar</Value>
</Put>
</KeyValueMapOperations>লক্ষ্য করুন যে স্কোপটি হলো 'এনভায়রনমেন্ট'। এর মানে হলো, আপনি ম্যানেজমেন্ট UI-তে APIs > Environment Configuration > Key Value Maps-এর অধীনে KVM-টি দেখতে পাবেন। ঐ পৃষ্ঠায় প্রদর্শিত KVM-গুলো সবই নির্বাচিত এনভায়রনমেন্টের আওতাভুক্ত।
একটি লিটারেল থেকে KVM GET করুন
এই পলিসিটি পূর্ববর্তী উদাহরণ থেকে FooKVM ম্যাপটি দেখে, FooKey_1 কী-টি থেকে দ্বিতীয় মানটি (index="2") নেয় এবং সেটিকে foo_variable নামক একটি ভেরিয়েবলে সংরক্ষণ করে।
<KeyValueMapOperations mapIdentifier="FooKVM" async="false" continueOnError="false" enabled="true" name="GetKVM"> <DisplayName>GetKVM</DisplayName> <ExpiryTimeInSecs>86400</ExpiryTimeInSecs> <Scope>environment</Scope> <Get assignTo="foo_variable" index="2"> <Key> <Parameter>FooKey_1</Parameter> </Key> </Get> </KeyValueMapOperations>
ভেরিয়েবল সহ PUT KVM
একটি কার্যকরী কী-ভ্যালু ম্যাপের একটি সহজ উদাহরণ হলো ইউআরএল সংক্ষিপ্তকরণ পরিষেবা। এই কী-ভ্যালু ম্যাপটি সংশ্লিষ্ট পূর্ণাঙ্গ ইউআরএলগুলোর পাশাপাশি সংক্ষিপ্ত ইউআরএলগুলো সংরক্ষণ করার জন্য কনফিগার করা যেতে পারে।
এই পলিসি স্যাম্পলটি একটি কী-ভ্যালু ম্যাপ তৈরি করে। পলিসিটি 'urlMapper' নামের একটি কী/ভ্যালু ম্যাপে দুটি সংশ্লিষ্ট ভ্যালুসহ একটি কী PUT করে।
<KeyValueMapOperations name="putUrl" mapIdentifier="urlMapper">
<Scope>apiproxy</Scope>
<Put override="true">
<Key>
<Parameter ref="urlencoding.requesturl.hashed"/>
</Key>
<Value ref="urlencoding.longurl.encoded"/>
<Value ref="request.queryparam.url"/>
</Put>
</KeyValueMapOperations> এই উদাহরণে, urlencoding.requesturl.hashed কী-টি হলো একটি কাস্টম ভেরিয়েবলের উদাহরণ। হ্যাশ করা রিকোয়েস্ট ইউআরএলটি কোডের মাধ্যমে (যেমন জাভাস্ক্রিপ্ট বা জাভা) তৈরি করা হবে এবং তারপর এই ভেরিয়েবলে সংরক্ষণ করা হবে, যেখান থেকে KeyValueMapOperations পলিসি এটি অ্যাক্সেস করতে পারবে।
প্রতিটি কী (key), requesturl.hashed জন্য দুটি মান সংরক্ষিত থাকে:
-
urlencoding.longurl.encodedনামের কাস্টম ভেরিয়েবলের বিষয়বস্তু - পূর্বনির্ধারিত ভেরিয়েবল
request.queryparam.urlএর বিষয়বস্তু
উদাহরণস্বরূপ, যখন পলিসিটি রানটাইমে কার্যকর হয়, তখন ভেরিয়েবলগুলোর মান নিম্নরূপ হতে পারে:
-
urlencoding.requesturl.hashed: ed24e12820f2f900ae383b7cc4f2b31c402db1be -
urlencoding.longurl.encoded: http://tinyurl.com/38lwmlr -
request.queryparam.url: http://apigee.com
নিম্নলিখিত কী/ভ্যালু ম্যাপ এবং এন্ট্রিটি Edge-এর কী/ভ্যালু স্টোরে তৈরি করা হবে এবং এটি সেই API প্রক্সির আওতাভুক্ত হবে যার সাথে পলিসিটি সংযুক্ত রয়েছে:
{
"entry" :[
{
"name" : "ed24e12820f2f900ae383b7cc4f2b31c402db1be",
"value" : "http://tinyurl.com/38lwmlr,http://apigee.com"
}
],
"name" : "urlMapper"
}এন্ট্রিটি মুছে না ফেলা পর্যন্ত স্থায়ী থাকবে। কী/ভ্যালু স্টোর এন্ট্রিগুলো ক্লাউডে চালিত Edge-এর ইনস্ট্যান্সগুলোতে বণ্টিত থাকে।
একটি ভেরিয়েবল থেকে KVM GET করুন
একটি কার্যকরী কী-ভ্যালু ম্যাপের একটি সহজ উদাহরণ হলো ইউআরএল 'সংক্ষেপণ' পরিষেবা। এই কী-ভ্যালু ম্যাপটিকে সংশ্লিষ্ট পূর্ণাঙ্গ ইউআরএলগুলোর পাশাপাশি সংক্ষিপ্ত ইউআরএলগুলো সংরক্ষণ করার জন্য কনফিগার করা যেতে পারে।
KeyValueMapOperations PUT ট্যাবে বর্ণিত কী/ভ্যালু ম্যাপ এন্ট্রির মান পুনরুদ্ধার করতে, কী-ভ্যালু ম্যাপটি GET করার জন্য একটি পলিসি কনফিগার করুন:
<KeyValueMapOperations name="getUrl" mapIdentifier="urlMapper"> <Scope>apiproxy</Scope> <Get assignTo="urlencoding.shorturl" index='1'> <Key> <Parameter ref="urlencoding.requesturl.hashed"/> </Key> </Get> </KeyValueMapOperations>
যখন এই পলিসিটি কার্যকর করা হয়, তখন যদি urlencoding.requesturl.hashed ভেরিয়েবলটির মান ed24e12820f2f900ae383b7cc4f2b31c402db1be হয়, তাহলে urlencoding.shorturl নামের কাস্টম ভেরিয়েবলটিতে http://tinyurl.com/38lwmlr মানটি সেট করা হবে।
এখন যেহেতু ডেটা পুনরুদ্ধার করা হয়েছে, অন্যান্য পলিসি এবং কোড ঐ ভেরিয়েবলগুলো থেকে মান বের করে তা অ্যাক্সেস করতে পারবে।
KVM থেকে এনক্রিপ্ট করা মান GET করুন
যদি কোনো কী-ভ্যালু ম্যাপ এনক্রিপ্ট করা থাকে, তাহলে assignTo অ্যাট্রিবিউটের ভ্যালুতে " private. " প্রিফিক্স ব্যবহার করে ভ্যালুগুলো পুনরুদ্ধার করুন। এই উদাহরণে, private.encryptedVar ভেরিয়েবলটি কী-ভ্যালু ম্যাপের foo কী-টির ডিক্রিপ্ট করা ভ্যালু ধারণ করে। এনক্রিপ্টেড কী-ভ্যালু ম্যাপ তৈরি করার তথ্যের জন্য, Key/Value Maps ম্যানেজমেন্ট API- এর "create" টপিকগুলো দেখুন।
<KeyValueMapOperations name="getEncrypted" mapIdentifier="encrypted_map"> <Scope>apiproxy</Scope> <Get assignTo="private.encryptedVar" index='1'> <Key> <Parameter>foo</Parameter> </Key> </Get> </KeyValueMapOperations>
এখন যেহেতু ডেটা পুনরুদ্ধার করা হয়েছে, অন্যান্য পলিসি এবং কোড সেই ভেরিয়েবল থেকে মানটি বের করে তা অ্যাক্সেস করতে পারবে।
উপাদান রেফারেন্স
এলিমেন্ট রেফারেন্সটি KeyValueMapOperations পলিসির উপাদান এবং অ্যাট্রিবিউটগুলো বর্ণনা করে:
<KeyValueMapOperations async="false" continueOnError="false" enabled="true" name="Key-Value-Map-Operations-1" mapIdentifier="urlMapper" > <DisplayName>Key Value Map Operations 1</DisplayName> <Scope>environment</Scope> <ExpiryTimeInSecs>300</ExpiryTimeInSecs> <InitialEntries> <Entry> <Key> <Parameter>key_name_literal</Parameter> </Key> <Value>value_literal</Value> </Entry> <Entry> <Key> <Parameter>variable_name</Parameter> </Key> <Value>value_1_literal</Value> <Value>value_2_literal</Value> </Entry> </InitialEntries> <Put override="false"> <Key> <Parameter>key_name_literal</Parameter> </Key> <Value ref="variable_name"/> </Put> <Get assignTo="myvar" index="1"> <Key> <Parameter ref="variable_name"/> </Key> </Get> <Delete> <Key> <Parameter>key_name_literal</Parameter> </Key> </Delete> </KeyValueMapOperations>
<KeyValueMapOperations> অ্যাট্রিবিউট
নিম্নলিখিত উদাহরণটি <KeyValueMapOperations> ট্যাগের অ্যাট্রিবিউটগুলো দেখায়:
<KeyValueMapOperations async="false" continueOnError="false" enabled="true" name="Key-Value-Map-Operations-1" mapIdentifier="map_name">
নিম্নলিখিত সারণিতে <KeyValueMapOperations> ট্যাগের নির্দিষ্ট অ্যাট্রিবিউটগুলো বর্ণনা করা হয়েছে:
| বৈশিষ্ট্য | বর্ণনা | ডিফল্ট | উপস্থিতি |
|---|---|---|---|
| মানচিত্র শনাক্তকারী | এই পলিসি দ্বারা তৈরি কোনো ম্যাপ অথবা ম্যানেজমেন্ট UI-তে অ্যাক্সেস করার সময় ব্যবহার করার জন্য একটি শনাক্তকারী নির্দিষ্ট করে। Apigee Edge for Public Cloud-এ KVM নামটি কেস-সেনসিটিভ । উদাহরণস্বরূপ, আপনি এই অ্যাট্রিবিউটটি বাদ দিলে, অর্গানাইজেশন/এনভায়রনমেন্ট/এপিআইপ্রক্সি-এর আওতাধীনে, আপনি আপনার নিজস্ব ম্যাপের নাম নির্দিষ্ট করতে | প্রযোজ্য নয় | ঐচ্ছিক |
নিম্নলিখিত সারণী সমস্ত নীতির মূল উপাদানগুলির জন্য সাধারণ বৈশিষ্ট্যগুলি বর্ণনা করে:
| বৈশিষ্ট্য | বর্ণনা | ডিফল্ট | উপস্থিতি |
|---|---|---|---|
name | নীতির অভ্যন্তরীণ নাম। ঐচ্ছিকভাবে, ম্যানেজমেন্ট UI প্রক্সি এডিটরে নীতিটিকে একটি ভিন্ন, প্রাকৃতিক-ভাষা নামের সাথে লেবেল করতে | N/A | প্রয়োজন |
continueOnError | একটি নীতি ব্যর্থ হলে একটি ত্রুটি ফেরত দিতে একটি নীতি ব্যর্থ হওয়ার পরেও ফ্লো এক্সিকিউশন চালিয়ে যেতে | মিথ্যা | ঐচ্ছিক |
enabled | নীতি প্রয়োগ করতে নীতি বন্ধ করতে | সত্য | ঐচ্ছিক |
async | এই বৈশিষ্ট্যটি অবমূল্যায়ন করা হয়েছে৷ | মিথ্যা | অবচয় |
<DisplayName> উপাদান
ম্যানেজমেন্ট UI প্রক্সি এডিটরে নীতিটিকে একটি ভিন্ন, প্রাকৃতিক-ভাষা নামের সাথে লেবেল করতে name বৈশিষ্ট্য ছাড়াও ব্যবহার করুন।
<DisplayName>Policy Display Name</DisplayName>
| ডিফল্ট | N/A আপনি এই উপাদানটি বাদ দিলে, নীতির |
|---|---|
| উপস্থিতি | ঐচ্ছিক |
| টাইপ | স্ট্রিং |
<মুছে ফেলুন> উপাদান
নির্দিষ্ট কী/ভ্যালু জোড়াটি মুছে দেয়। <Get> , <Put> বা <Delete> এর মধ্যে অন্তত একটি অবশ্যই ব্যবহার করতে হবে।
প্যারেন্ট এলিমেন্টের mapIdentifier অ্যাট্রিবিউটে KVM-এর নামটি অবশ্যই উল্লেখ করুন। উদাহরণস্বরূপ:
<Delete>
<Key>
<Parameter>key_name_literal</Parameter>
</Key>
</Delete>| ডিফল্ট | প্রযোজ্য নয় |
|---|---|
| উপস্থিতি | <Get> বা <Put> উপস্থিত না থাকলে এটি আবশ্যক। |
| প্রকার | প্রযোজ্য নয় |
<প্রবেশ> উপাদান
কী-ভ্যালু ম্যাপের জন্য বীজ মান, যা ম্যাপটি ইনিশিয়ালাইজ করার সময় এতে পূরণ করা হয়।
Edge for Public Cloud-এর ক্ষেত্রে, কী-সাইজ ২ কিলোবাইটে সীমাবদ্ধ। উদাহরণস্বরূপ:
<InitialEntries> <Entry> <Key> <Parameter>key_name_literal</Parameter> </Key> <Value>v1</Value> </Entry> <Entry> <Key> <Parameter>key_name_variable</Parameter> </Key> <Value>v3</Value> <Value>v4</Value> </Entry> </InitialEntries>
| ডিফল্ট | প্রযোজ্য নয় |
|---|---|
| উপস্থিতি | ঐচ্ছিক |
| প্রকার | প্রযোজ্য নয় |
<এক্সক্লুসিভক্যাশ> উপাদান
অপ্রচলিত। এর পরিবর্তে <Scope> এলিমেন্টটি ব্যবহার করুন।
<ExpiryTimeInSecond> এলিমেন্ট
সেকেন্ডে সেই সময়কাল নির্দিষ্ট করে, যার পরে Edge নির্দিষ্ট KVM থেকে তার ক্যাশ করা মান রিফ্রেশ করে।
০ বা -১ এর মান, অথবা এই উপাদানটি বাদ দিলে, ডিফল্ট মান ৩০০ সেকেন্ড ব্যবহৃত হবে। উদাহরণস্বরূপ:
<ExpiryTimeInSecs>600</ExpiryTimeInSecs>
| ডিফল্ট | 300 (৫ মিনিট) |
|---|---|
| উপস্থিতি | ঐচ্ছিক |
| প্রকার | পূর্ণসংখ্যা |
KVM হলো একটি দীর্ঘমেয়াদী ডেটা সংরক্ষণ ব্যবস্থা যা একটি NoSQL ডেটাবেসে কী (key) এবং ভ্যালু (value) সংরক্ষণ করে। এই কারণে, রানটাইমে KVM থেকে ডেটা পড়লে প্রক্সির পারফরম্যান্স ধীর হয়ে যেতে পারে। পারফরম্যান্স উন্নত করার জন্য, Edge-এ রানটাইম চলাকালীন মেমরিতে KVM-এর কী/ভ্যালু ক্যাশ করার একটি বিল্ট-ইন ব্যবস্থা রয়েছে। এই KVM অপারেশন পলিসিটি GET অপারেশনের জন্য সর্বদা ক্যাশ থেকে ডেটা পড়ে।
<ExpiryTimeInSecs> এলিমেন্টটি আপনাকে নিয়ন্ত্রণ করতে দেয় যে, পলিসিতে ব্যবহৃত কী/ভ্যালুগুলো KVM থেকে পুনরায় রিফ্রেশ হওয়ার আগে কতক্ষণ ক্যাশে সংরক্ষিত থাকবে। তবে, GET এবং PUT অপারেশনগুলো ক্যাশে এক্সপায়ারেশনকে যেভাবে প্রভাবিত করে, তার মধ্যে কিছু পার্থক্য রয়েছে।
GET - সর্বপ্রথমে যখন কোনো KVM GET অপারেশন সম্পাদিত হয়, তখন KVM থেকে অনুরোধকৃত কী/ভ্যালুগুলো (যার নামটি পলিসির রুট mapIdentifier অ্যাট্রিবিউটে নির্দিষ্ট করা থাকে) ক্যাশে লোড করা হয়, যেখানে সেগুলো পরবর্তী GET অপারেশনগুলোর জন্য থেকে যায়, যতক্ষণ না নিম্নলিখিত ঘটনাগুলোর মধ্যে কোনো একটি ঘটে:
-
<ExpiryTimeInSecs>এ নির্দিষ্ট করা সেকেন্ড সংখ্যা শেষ হয়ে যায়।
অথবা - একটি KVM পলিসিতে PUT অপারেশন বিদ্যমান মানগুলিকে ওভাররাইট করে (যা পরবর্তীতে ব্যাখ্যা করা হয়েছে)।
PUT - একটি PUT অপারেশন নির্দিষ্ট KVM-এ কী/ভ্যালু লেখে। যদি PUT অপারেশনটি এমন কোনো কী-তে লেখে যা ক্যাশে আগে থেকেই বিদ্যমান থাকে, তাহলে সেই ক্যাশেটি অবিলম্বে রিফ্রেশ হয়ে যায় এবং পলিসির <ExpiryTimeInSecs> এলিমেন্টে নির্দিষ্ট করা সেকেন্ড সংখ্যা পর্যন্ত নতুন ভ্যালুটি ধারণ করে।
উদাহরণ - একটি KVM ক্যাশিং
- একটি GET অপারেশন 'rating'-এর মান পুনরুদ্ধার করে, যা ক্যাশে '10' মানটি যোগ করে। পলিসির
<ExpiryTimeInSecs>হলো 60। - ৩০ সেকেন্ড পরে, GET পলিসিটি পুনরায় কার্যকর হয় এবং ক্যাশ থেকে "10" পুনরুদ্ধার করে।
- ৫ সেকেন্ড পরে, একটি PUT পলিসি 'rating'-এর মান '8'-এ আপডেট করে, এবং PUT পলিসিটির
<ExpiryTimeInSecs>হলো ২০। ক্যাশেটি সাথে সাথে নতুন মান দিয়ে রিফ্রেশ করা হয়, যা এখন ক্যাশে ২০ সেকেন্ডের জন্য থাকার জন্য সেট করা হয়েছে। (যদি PUT-টি না ঘটত, তাহলে প্রথম GET-এর মাধ্যমে তৈরি হওয়া ক্যাশেটি মূল ৬০ সেকেন্ডের অবশিষ্ট অংশ হিসেবে আরও ৩০ সেকেন্ডের জন্য থেকে যেত।) - ১৫ সেকেন্ড পরে, আরেকটি GET অনুরোধ সম্পাদিত হয় এবং "8" মানটি গ্রহণ করা হয়।
<Get> উপাদান
নির্দিষ্ট কী-এর মান পুনরুদ্ধার করে। <Get> , <Put> বা <Delete> এর মধ্যে অন্তত একটি অবশ্যই ব্যবহার করতে হবে।
প্যারেন্ট এলিমেন্টের mapIdentifier অ্যাট্রিবিউটে KVM-এর নামটি অবশ্যই উল্লেখ করুন।
একটি KVM থেকে একাধিক আইটেম পুনরুদ্ধার করতে আপনি পলিসিতে একাধিক Get ব্লক অন্তর্ভুক্ত করতে পারেন।
| ডিফল্ট | প্রযোজ্য নয় |
|---|---|
| উপস্থিতি | <Put> বা <Delete> উপস্থিত না থাকলে এটি প্রয়োজন। |
| প্রকার | প্রযোজ্য নয় |
KVM থেকে একটি আইটেম নিন
<Get assignTo="myvar" index="1"> <Key> <Parameter>key_name_literal</Parameter> </Key> </Get>
একটি KVM থেকে একাধিক আইটেম পান
নিম্নলিখিত উদাহরণে, এমন একটি KVM ধরে নিন যার কী (key) এবং ভ্যালু (value) গুলো নিম্নরূপ। সর্বকালের সবচেয়ে জনপ্রিয় চলচ্চিত্রগুলোর একটি চলমান তালিকা সংরক্ষণের পাশাপাশি, KVM-টি সমস্ত প্রধান চলচ্চিত্রের পরিচালকের নামও সংরক্ষণ করে।
| চাবি | মূল্য |
|---|---|
| শীর্ষ_চলচ্চিত্র | প্রিন্সেস ব্রাইড, দ্য গডফাদার, সিটিজেন কেন |
| নাগরিক কেইন | অরসন ওয়েলস |
| রাজকুমারী বধূ | রব রেইনার |
| গডফাদার | ফ্রান্সিস ফোর্ড কোপোলা |
বর্তমান সর্বাধিক জনপ্রিয় চলচ্চিত্র এবং এর পরিচালকের নাম জানার জন্য আমরা এই KVM পলিসি কনফিগারেশনটি ব্যবহার করতে পারি:
<Get assignTo="top.movie.pick" index="1"> <Key> <Parameter>top_movies</Parameter> </Key> </Get> <Get assignTo="movie.director"> <Key> <Parameter ref="top.movie.pick"/> </Key> </Get>
যখন এপিআই প্রক্সি কল করা হয়, Edge নিম্নলিখিত ভেরিয়েবলগুলো তৈরি করে যা আপনি এপিআই প্রক্সি ফ্লোতে ব্যবহার করতে পারেন:
-
top.movie.pick =Princess Bride -
movie.director =Rob Reiner
বৈশিষ্ট্য
নিম্নলিখিত সারণিতে <Get> এলিমেন্টের অ্যাট্রিবিউটগুলো বর্ণনা করা হলো:
| বৈশিষ্ট্য | বর্ণনা | ডিফল্ট | উপস্থিতি |
|---|---|---|---|
| বরাদ্দ করুন | যে ভেরিয়েবলে প্রাপ্ত মানটি বরাদ্দ করা হবে। যদি কী-ভ্যালু ম্যাপটি এনক্রিপ্ট করা থাকে, তাহলে assignTo নামটি " <Get assignTo="private.myvar"> প্রিফিক্স ব্যবহার না করে এনক্রিপ্টেড কী-ভ্যালু ম্যাপ পুনরুদ্ধার করার চেষ্টা করলে পলিসিটি একটি ত্রুটি দেখায়। ডিবাগিংয়ের সময় মৌলিক নিরাপত্তার জন্য প্রয়োজনীয় এই প্রিফিক্সটি, এপিআই প্রক্সি ট্রেস এবং ডিবাগ সেশন থেকে এনক্রিপ্টেড ভ্যালুগুলোকে গোপন রাখে। এনক্রিপ্টেড কী-ভ্যালু ম্যাপ তৈরি করার তথ্যের জন্য, কী/ভ্যালু ম্যাপস ম্যানেজমেন্ট এপিআই- এর "ক্রিয়েট" টপিক এবং এনভায়রনমেন্ট কী-ভ্যালু ম্যাপ তৈরি ও সম্পাদনা দেখুন। | প্রযোজ্য নয় | প্রয়োজনীয় |
| সূচক | একাধিক মানবিশিষ্ট কী (key) থেকে যে আইটেমটি আনতে হবে, তার সূচক সংখ্যা (১-ভিত্তিক সূচকে)। উদাহরণস্বরূপ, উদাহরণস্বরূপ, স্যাম্পল- এর 'Get Encrypted Value from KVM' ট্যাবটি দেখুন। | প্রযোজ্য নয় | ঐচ্ছিক |
<প্রাথমিক এন্ট্রি> উপাদান
কী-ভ্যালু ম্যাপের জন্য সিড ভ্যালু, যা ম্যাপটি ইনিশিয়ালাইজ করার সময় এতে যুক্ত করা হয়। প্যারেন্ট এলিমেন্টে mapIdentifier অ্যাট্রিবিউটের মাধ্যমে KVM-এর নামটি অবশ্যই উল্লেখ করুন। উদাহরণস্বরূপ:
<InitialEntries> <Entry> <Key> <Parameter>key_name_literal</Parameter> </Key> <Value>v1</Value> </Entry> <Entry> <Key> <Parameter>key_name_variable</Parameter> </Key> <Value>v3</Value> <Value>v4</Value> </Entry> </InitialEntries>
এই এলিমেন্টটি ব্যবহার করার সময়, যখন আপনি প্রক্সির কোনো ডেপ্লয়েড ভার্সনের ম্যানেজমেন্ট UI-তে পলিসিটি সেভ করেন, অথবা এই এলিমেন্টসহ পলিসিটি ধারণকারী API প্রক্সি বান্ডেলটি ডেপ্লয় করেন, তখন কী(গুলো) স্বয়ংক্রিয়ভাবে KVM-এ (আনএনক্রিপ্টেড অবস্থায়) তৈরি হয়ে যায়। যদি পলিসির ভ্যালুগুলো KVM-এর ভ্যালুগুলো থেকে ভিন্ন হয়, তাহলে প্রক্সি ডেপ্লয় করার সময় KVM-এর ভ্যালুগুলো ওভাররাইট হয়ে যায়। যেকোনো নতুন কী/ভ্যালু বিদ্যমান কী/ভ্যালুগুলোর পাশাপাশি বিদ্যমান KVM-এ যুক্ত হয়ে যায়।
এই এলিমেন্ট দ্বারা পূরণ করা কী এবং ভ্যালু অবশ্যই লিটারেল হতে হবে। উদাহরণস্বরূপ, <Parameter ref="request.queryparam.key"> এই এলিমেন্টের মধ্যে সমর্থিত নয়।
Edge for the Public Cloud এবং Edge for the Private Cloud উভয়ের জন্যই কী-সাইজ ২ কিলোবাইটে সীমাবদ্ধ। KVM ভ্যালুও ২ কিলোবাইটে সীমাবদ্ধ।
একটি এনক্রিপ্টেড KVM তৈরি করতে, Key/Value Maps ম্যানেজমেন্ট API ব্যবহার করুন।
| ডিফল্ট | প্রযোজ্য নয় |
|---|---|
| উপস্থিতি | ঐচ্ছিক |
| প্রকার | প্রযোজ্য নয় |
<মূল> উপাদান
একটি কী/ভ্যালু ম্যাপ এন্ট্রিতে কী নির্দিষ্ট করে। একটি কী যৌগিক হতে পারে, যার অর্থ হলো কীটি তৈরি করার জন্য একাধিক প্যারামিটার যুক্ত করা যেতে পারে। উদাহরণস্বরূপ, একটি key তৈরি করতে userID এবং role একত্রিত করা যেতে পারে। যেমন:
<Key>
<Parameter>key_name_literal</Parameter>
</Key>কী-এর নাম কীভাবে সেট করতে হয়, সে সম্পর্কে বিস্তারিত জানতে <Parameter> এলিমেন্টটি অবশ্যই দেখুন।
Edge for Public Cloud-এর ক্ষেত্রে, কী-সাইজ ২ কিলোবাইটে সীমাবদ্ধ। আরও তথ্যের জন্য Edge for Public Cloud API এবং Private Cloud API-এর মধ্যে পার্থক্য দেখুন।
| ডিফল্ট | প্রযোজ্য নয় |
|---|---|
| উপস্থিতি | ঐচ্ছিক |
| প্রকার | প্রযোজ্য নয় |
<প্যারামিটার> উপাদান
একটি কী/ভ্যালু পেয়ারের মধ্যে কী-টি নির্দিষ্ট করে। কী/ভ্যালু পেয়ারটি তৈরি, সংরক্ষণ, পুনরুদ্ধার বা মুছে ফেলার সময় এই উপাদানটি তার নাম নির্দিষ্ট করে।
আপনি নিম্নলিখিত পদ্ধতি ব্যবহার করে নামটি নির্দিষ্ট করতে পারেন:
একটি আক্ষরিক স্ট্রিং
<Key> <Parameter>literal</Parameter> </Key>
একটি ভেরিয়েবল যা রান টাইমে
refঅ্যাট্রিবিউট ব্যবহার করে পুনরুদ্ধার করা হবে।<Key> <Parameter ref="variable_name"/> </Key>
লিটারেল এবং ভেরিয়েবল রেফারেন্সের সংমিশ্রণ
<Key> <Parameter>targeturl</Parameter> <Parameter ref="apiproxy.name"/> <Parameter>weight</Parameter> </Key>
যখন Key এলিমেন্টে একাধিক Parameter এলিমেন্ট অন্তর্ভুক্ত থাকে, তখন কার্যকরী কী স্ট্রিংটি হয় প্রতিটি প্যারামিটারের মানগুলোকে দুটি আন্ডারস্কোর দিয়ে যুক্ত করে গঠিত। উদাহরণস্বরূপ, উপরের উদাহরণে, যদি apiproxy.name ভেরিয়েবলের মান "abc1" হয়, তাহলে কার্যকরী কী হবে targeturl__abc1__weight ।
আপনি কোনো কী/ভ্যালু এন্ট্রি গ্রহণ, আপডেট বা ডিলিট করার সময়, কী-এর নামটি অবশ্যই কী-ভ্যালু ম্যাপের কী-এর নামের সাথে মিলতে হবে। নির্দেশনার জন্য ‘কী-এর নাম নির্দিষ্টকরণ এবং পুনরুদ্ধার’ দেখুন।
| ডিফল্ট | প্রযোজ্য নয় |
|---|---|
| উপস্থিতি | প্রয়োজনীয় |
| প্রকার | স্ট্রিং |
বৈশিষ্ট্য
নিম্নলিখিত সারণিতে <Parameter> এলিমেন্টের অ্যাট্রিবিউটগুলো বর্ণনা করা হলো:
| বৈশিষ্ট্য | বর্ণনা | ডিফল্ট | উপস্থিতি |
|---|---|---|---|
| রেফারেন্স | এমন একটি ভেরিয়েবলের নাম নির্দিষ্ট করে, যার মানটিতে আপনি যে কী-টি তৈরি, পেতে বা মুছে ফেলতে চান তার সঠিক নামটি থাকে। | প্রযোজ্য নয় | ওপেনিং এবং ক্লোজিং ট্যাগের মধ্যে কোনো আক্ষরিক মান না দেওয়া হলে এটি আবশ্যক। আক্ষরিক মান দেওয়া হলে এটি নিষিদ্ধ। |
<উপাদান রাখুন>
একটি কী-ভ্যালু ম্যাপে একটি কী/ভ্যালু পেয়ার লেখে, ম্যাপটি এনক্রিপ্টেড বা আনএনক্রিপ্টেড যাই হোক না কেন। যদি প্যারেন্ট এলিমেন্টের mapIdentifier অ্যাট্রিবিউটে নির্দিষ্ট করা কী-ভ্যালু ম্যাপটি বিদ্যমান না থাকে, তবে ম্যাপটি স্বয়ংক্রিয়ভাবে (আনএনক্রিপ্টেড হিসেবে) তৈরি হয়ে যায়। যদি কী-ভ্যালু ম্যাপটি আগে থেকেই বিদ্যমান থাকে, তবে কী/ভ্যালুগুলো এতে যুক্ত করা হয়।
একটি এনক্রিপ্টেড কী ভ্যালু ম্যাপ তৈরি করতে, কী/ভ্যালু ম্যাপস ম্যানেজমেন্ট এপিআই ব্যবহার করুন; অথবা ইউআই-তে এনক্রিপ্টেড এনভায়রনমেন্ট-স্কোপড কেভিএম তৈরি করার জন্য ‘ক্রিয়েটিং অ্যান্ড এডিটিং এনভায়রনমেন্ট কী ভ্যালু ম্যাপস’ দেখুন।
<Put override="false"> <Key> <Parameter ref="mykeyvar"/> </Key> <Value ref="myvalvar1"/> </Put>
| ডিফল্ট | প্রযোজ্য নয় |
|---|---|
| উপস্থিতি | <Get> বা <Delete> উপস্থিত না থাকলে এটি আবশ্যক। |
| প্রকার | প্রযোজ্য নয় |
বৈশিষ্ট্য
নিম্নলিখিত সারণিতে <Put> এলিমেন্টের অ্যাট্রিবিউটগুলো বর্ণনা করা হলো:
| বৈশিষ্ট্য | বর্ণনা | ডিফল্ট | উপস্থিতি |
|---|---|---|---|
| ওভাররাইড | | false | ঐচ্ছিক |
<Scope> উপাদান
কী-ভ্যালু ম্যাপের অ্যাক্সেসযোগ্যতার সীমা নির্ধারণ করে। ডিফল্ট স্কোপ হলো environment , যার অর্থ হলো, ডিফল্টরূপে, একটি এনভায়রনমেন্টে (যেমন, টেস্ট বা প্রোড) চলমান সমস্ত এপিআই প্রক্সি ম্যাপের এন্ট্রিগুলো শেয়ার করে। যদি আপনি স্কোপটি apiproxy সেট করেন, তাহলে কী-ভ্যালু ম্যাপের এন্ট্রিগুলো শুধুমাত্র সেই এপিআই প্রক্সি দ্বারা অ্যাক্সেসযোগ্য হবে যেটি ম্যাপে ভ্যালুগুলো লেখে।
মনে রাখবেন যে, কোনো ম্যাপ বা ম্যাপ এন্ট্রি অ্যাক্সেস করার সময়, ম্যাপটি তৈরি করার সময় আপনি যে স্কোপ ভ্যালুটি ব্যবহার করেছিলেন, আপনাকে অবশ্যই সেটিই উল্লেখ করতে হবে। উদাহরণস্বরূপ, যদি ম্যাপটি apiproxy স্কোপ দিয়ে তৈরি করা হয়ে থাকে, তাহলে এর ভ্যালু পুনরুদ্ধার করতে, পরিবর্তন যোগ করতে বা এন্ট্রি মুছে ফেলার সময় আপনাকে অবশ্যই ' apiproxy স্কোপটি ব্যবহার করতে হবে।
<Scope>environment</Scope>
| ডিফল্ট | environment |
|---|---|
| উপস্থিতি | ঐচ্ছিক |
| প্রকার | স্ট্রিং |
| বৈধ মান: |
|
<মান> উপাদান
একটি কী-এর মান নির্দিষ্ট করে। আপনি মানটিকে একটি আক্ষরিক স্ট্রিং হিসাবে অথবা, ref অ্যাট্রিবিউট ব্যবহার করে, রান টাইমে পুনরুদ্ধার করার জন্য একটি ভেরিয়েবল হিসাবে নির্দিষ্ট করতে পারেন:
<!-- Specify a literal value --> <Value>literal<Value>
অথবা:
<!-- Specify the name of variable value to be populated at run time. --> <Value ref="variable_name"/>
একাধিক অংশবিশিষ্ট মান নির্দিষ্ট করতে আপনি একাধিক <Value> এলিমেন্টও অন্তর্ভুক্ত করতে পারেন। মানগুলো রান টাইমে একত্রিত করা হয়।
নিম্নলিখিত উদাহরণে, KVM-এ দুটি কী যোগ করা হয়েছে:
-
k1কী যার মানv1,v2 -
k2কী যার মানv3,v4
<InitialEntries>
<Entry>
<Key>
<Parameter>k1</Parameter>
</Key>
<Value>v1</Value>
<Value>v2</Value>
</Entry>
<Entry>
<Key>
<Parameter>k2</Parameter>
</Key>
<Value>v3</Value>
<Value>v4</Value>
</Entry>
</InitialEntries>নিচের উদাহরণে, দুটি ভ্যালু দিয়ে একটি কী তৈরি করা হয়েছে। ধরা যাক, অর্গানাইজেশনের নাম হলো foo_org , এপিআই প্রক্সির নাম হলো bar , এবং এনভায়রনমেন্ট হলো test :
- কী
foo_orgযার মানbar,test
<Put>
<Key>
<Parameter ref="organization.name"/>
</Key>
<Value ref="apiproxy.name"/>
<Value ref="environment.name"/>
</Put>| ডিফল্ট | প্রযোজ্য নয় |
|---|---|
| উপস্থিতি | প্রয়োজনীয় |
| প্রকার | স্ট্রিং |
বৈশিষ্ট্য
নিম্নলিখিত সারণিতে <Value> এলিমেন্টের অ্যাট্রিবিউটগুলো বর্ণনা করা হলো:
| বৈশিষ্ট্য | বর্ণনা | ডিফল্ট | উপস্থিতি |
|---|---|---|---|
| রেফারেন্স | এমন একটি ভেরিয়েবলের নাম নির্দিষ্ট করে, যার মানে আপনার সেট করতে চাওয়া কী-ভ্যালু(গুলো) থাকে। | প্রযোজ্য নয় | ওপেনিং এবং ক্লোজিং ট্যাগের মধ্যে কোনো আক্ষরিক মান না দেওয়া হলে এটি আবশ্যক। আক্ষরিক মান দেওয়া হলে এটি নিষিদ্ধ। |
ত্রুটির রেফারেন্স
এজ পলিসি থেকে প্রাপ্ত ত্রুটিগুলি 'ত্রুটি কোড রেফারেন্স' -এ বর্ণিত একটি সামঞ্জস্যপূর্ণ বিন্যাস অনুসরণ করে।
এই বিভাগটি ফল্ট কোড এবং ত্রুটির বার্তাগুলি বর্ণনা করে যেগুলি ফেরত দেওয়া হয় এবং ত্রুটি ভেরিয়েবলগুলি যেগুলি এজ দ্বারা সেট করা হয় যখন এই নীতিটি একটি ত্রুটি ট্রিগার করে৷ এই তথ্যটি জানা গুরুত্বপূর্ণ যে আপনি ত্রুটিগুলি পরিচালনা করার জন্য ত্রুটির নিয়ম তৈরি করছেন কিনা। আরও জানতে, নীতিগত ত্রুটি এবং হ্যান্ডলিং ফল্ট সম্পর্কে আপনার যা জানা দরকার তা দেখুন৷
রানটাইম ত্রুটি
নীতি কার্যকর করার সময় এই ত্রুটিগুলি ঘটতে পারে৷
| ফল্ট কোড | HTTP স্থিতি | কারণ | ঠিক করুন |
|---|---|---|---|
steps.keyvaluemapoperations.SetVariableFailed | 500 | এই ত্রুটিটি ঘটে যদি আপনি একটি এনক্রিপ্ট করা কী মান মানচিত্র থেকে একটি মান পুনরুদ্ধার করার চেষ্টা করেন এবং মানটিকে একটি ভেরিয়েবলে সেট করেন যার নামের উপসর্গ | build |
steps.keyvaluemapoperations.UnsupportedOperationException | 500 | মূল মান মানচিত্র অপারেশন নীতিতে | build |
স্থাপনার ত্রুটি
আপনি যখন এই নীতি সম্বলিত একটি প্রক্সি স্থাপন করেন তখন এই ত্রুটিগুলি ঘটতে পারে৷
| ত্রুটির নাম | কারণ | ঠিক করুন |
|---|---|---|
InvalidIndex | যদি মূল মান মানচিত্র অপারেশন নীতির <Get> উপাদানে নির্দিষ্ট করা index বৈশিষ্ট্যটি শূন্য বা একটি ঋণাত্মক সংখ্যা হয়, তাহলে API প্রক্সির স্থাপনা ব্যর্থ হয়। সূচকটি 1 থেকে শুরু হয়, তাই শূন্য বা ঋণাত্মক পূর্ণসংখ্যার একটি সূচক অবৈধ হিসাবে বিবেচিত হয়। | build |
KeyIsMissing | এই ত্রুটিটি ঘটে যদি <Key> উপাদানটি সম্পূর্ণভাবে অনুপস্থিত থাকে বা মূল মান মানচিত্র অপারেশন নীতির <InitialEntries> উপাদানের <Entry> নীচে <Key> উপাদানের মধ্যে <Parameter> উপাদানটি অনুপস্থিত থাকে। | build |
ValueIsMissing | মূল মান মানচিত্র অপারেশন নীতির <InitialEntries> উপাদানের <Entry> উপাদানের নিচে <Value> উপাদানটি অনুপস্থিত থাকলে এই ত্রুটি ঘটে। | build |
স্কিমা
ব্যবহারের নির্দেশাবলী
কী-ভ্যালু ম্যাপ সম্পর্কে একটি সার্বিক ধারণা পেতে, “কী-ভ্যালু ম্যাপ নিয়ে কাজ করা” দেখুন।
একটি কী-ভ্যালু ম্যাপ স্টোর কী/ভ্যালু জোড়া হিসেবে বিন্যস্ত ডেটার জন্য একটি হালকা সংরক্ষণ ব্যবস্থা প্রদান করে। আপনি রানটাইমে পলিসি বা কোডের মাধ্যমে এগুলো অ্যাক্সেস করতে পারেন। একটি ম্যাপে key=value বিন্যাসে যেকোনো যথেচ্ছ ডেটা থাকে।
উদাহরণস্বরূপ localhost=127.0.0.1 , zip_code=94110 , অথবা first_name=felix । প্রথম উদাহরণে, localhost হলো একটি key এবং 127.0.0.1 হলো একটি value । প্রতিটি key/value জোড়া একটি key value ম্যাপের এন্ট্রি হিসেবে সংরক্ষিত থাকে। একটি key value ম্যাপে অনেকগুলো এন্ট্রি সংরক্ষণ করা যায়।
এখানে কী-ভ্যালু ম্যাপ ব্যবহারের একটি উদাহরণ দেওয়া হলো। ধরুন, আপনাকে বিভিন্ন ব্যাকএন্ড এনভায়রনমেন্টের সাথে যুক্ত আইপি অ্যাড্রেসের একটি তালিকা সংরক্ষণ করতে হবে। আপনি ipAddresses নামে একটি কী-ভ্যালু ম্যাপ তৈরি করতে পারেন, যেখানে এন্ট্রি হিসেবে কী/ভ্যালু পেয়ারের একটি তালিকা থাকবে। উদাহরণস্বরূপ, এই JSON-টি এই ধরনের একটি ম্যাপকে উপস্থাপন করতে পারে:
{
"entry" : [ {
"name" : "Development",
"value" : "65.87.18.18"
}, {
"name" : "Staging",
"value" : "65.87.18.22"
} ],
"name" : "ipAddresses"
}আপনি এই কাঠামোটি ব্যবহার করে আইপি অ্যাড্রেসের একটি ভান্ডার তৈরি করতে পারেন, যা রানটাইমে পলিসি দ্বারা আইপি অ্যালাওলিস্টিং বা ডিনাইলিস্টিং প্রয়োগ করতে, ডায়নামিকভাবে একটি ব্যাকএন্ড টার্গেট অ্যাড্রেস নির্বাচন করতে, ইত্যাদি কাজে ব্যবহার করা যেতে পারে। সাধারণত, KeyValueMapOperations পলিসিটি এমন দীর্ঘস্থায়ী তথ্য সংরক্ষণ বা পুনরুদ্ধার করতে ব্যবহৃত হয়, যা একাধিক অনুরোধ/প্রতিক্রিয়া লেনদেনে পুনরায় ব্যবহার করা প্রয়োজন।
Key/value ম্যাপ KeyValueMapOperations পলিসির মাধ্যমে, অথবা সরাসরি Apigee Edge ম্যানেজমেন্ট API-এর মাধ্যমে পরিচালনা করা যায়। Organization key/value maps API সম্পর্কে বিস্তারিত জানতে ম্যানেজমেন্ট API রেফারেন্স দেখুন। আপনি এই API ব্যবহার করে, উদাহরণস্বরূপ, key/value স্টোরে বড় ডেটা সেট আপলোড করতে পারেন, অথবা key/value ম্যাপ এন্ট্রিগুলো পরিচালনা করার জন্য স্ক্রিপ্ট তৈরি করতে পারেন। KeyValueMapOperations পলিসি দিয়ে এটি অ্যাক্সেস করার আগে আপনাকে API ব্যবহার করে একটি key/value ম্যাপ তৈরি করতে হবে।
কী নাম নির্দিষ্ট করা এবং পুনরুদ্ধার করা
<Parameter> এবং <Value> এলিমেন্ট ব্যবহার করে, আপনি একটি আক্ষরিক মান (যেখানে মানটি ওপেনিং এবং ক্লোজিং ট্যাগের মধ্যে থাকে) নির্দিষ্ট করতে পারেন, অথবা ref অ্যাট্রিবিউট ব্যবহার করে এমন একটি ভেরিয়েবলের নাম নির্দিষ্ট করতে পারেন যার মান রানটাইমে ব্যবহৃত হবে।
প্যারামিটার এলিমেন্টটি বিশেষ উল্লেখের দাবি রাখে, কারণ এটি তৈরি হতে যাওয়া কী-এর নাম, সেইসাথে আপনি যে কী-টি পুনরুদ্ধার বা মুছে ফেলতে চান তার নামও নির্ধারণ করে। নিচে দুটি উদাহরণ দেওয়া হলো। প্রথমটিতে একটি কী-এর নাম আক্ষরিকভাবে নির্দিষ্ট করা হয়েছে, এবং দ্বিতীয়টিতে একটি ভ্যারিয়েবল ব্যবহার করে কী-এর নাম নির্দিষ্ট করা হয়েছে। ধরা যাক, একটি KVM-এ কী তৈরি করার জন্য নিম্নলিখিত বিষয়গুলো ব্যবহৃত হয়:
<Parameter>key_name_literal</Parameter> <Parameter ref="key.name.variable"/>
প্রথম ক্ষেত্রে, 'key_name_literal'-এর আক্ষরিক মানটি KVM-এ কী-এর নাম হিসেবে সংরক্ষিত হয়। দ্বিতীয় ক্ষেত্রে, key.name.variable এ যে মানটি থাকে, সেটিই KVM-এ কী-এর নাম হয়ে যায়। উদাহরণস্বরূপ, যদি key.name.variable এ foo ' মানটি থাকে, তাহলে কী-টির নাম হবে 'foo'।
যখন আপনি একটি GET অপারেশনের মাধ্যমে কী এবং কী ভ্যালু পুনরুদ্ধার করতে চান (অথবা একটি DELETE অপারেশনের মাধ্যমে মুছে ফেলতে চান), তখন <Parameter> সেটিংটি KVM-এর কী নামের সাথে মিলতে হবে। উদাহরণস্বরূপ, যদি KVM-এ কী নামটি "foo" হয়, তাহলে আপনি <Parameter>foo</Parameter> ব্যবহার করে আক্ষরিক মানটি নির্দিষ্ট করতে পারেন অথবা এমন একটি ভেরিয়েবল নির্দিষ্ট করতে পারেন যাতে হুবহু "foo" মানটি থাকে, যেমন: <Parameter ref="variable.containing.foo"/> ।