আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন দেখুন। তথ্য
কী
Apigee Edge-এ উপলভ্য কী ভ্যালু ম্যাপ (KVM) স্টোরে নীতি-ভিত্তিক অ্যাক্সেস প্রদান করে। PUT, GET বা DELETE অপারেশন নির্দিষ্ট করে এমন KeyValueMapOperations নীতি কনফিগার করে আগে থেকে থাকা নামযুক্ত ম্যাপ থেকে কী/ভ্যালু পেয়ার স্টোর, রিট্রিভ ও মুছে ফেলা যেতে পারে। (নীতিকে এইসব অপারেশনের মধ্যে অন্তত একটি অপারেশন পারফর্ম করতে হবে।)
ভিডিও
KVM সম্পর্কে আরও জানতে নিম্নলিখিত ভিডিও দেখুন।
| ভিডিও | বিবরণ |
|---|---|
| কী ভ্যালু ম্যাপ কেন? | KVM কেন প্রয়োজন এবং এটি কীভাবে কাজ করে তা জানুন। |
| UI ব্যবহার করে KVM তৈরি করুন এবং রানটাইমে KVM রিট্রিভ করুন | KVM তৈরি করুন, KVM নীতি ব্যবহার করে এর ভ্যালু রিট্রিভ করুন এবং ফ্লো ভেরিয়েবল ব্যবহার করে API অনুরোধে ভ্যালু ইনজেক্ট করুন। |
| API রানটাইমে KVM তৈরি ও আপডেট করা | KVM নীতি ব্যবহার করে API রানটাইমে KVM তৈরি করুন। |
| পারফর্ম্যান্স বাড়াতে KVM ক্যাশে করুন | ডেটা ক্যাশে করে KVM নীতির পারফর্ম্যান্স উন্নত করুন। |
| এনক্রিপ্ট করা স্টোর KVM | এনক্রিপ্টেড ফর্ম্যাটে KVM-এ সংবেদনশীল তথ্য স্টোর করুন এবং KVM নীতি ও ব্যক্তিগত ভেরিয়েবল ব্যবহার করে রানটাইমে ভ্যালু রিট্রিভ করুন। |
| KVM স্কোপ ব্যবহার করে অ্যাক্সেস ম্যানেজ করা | KVM নীতি স্কোপ অ্যাট্রিবিউট ব্যবহার করে KVM-কে সংস্থা, এনভায়রনমেন্ট, API প্রক্সি বা API প্রক্সি রিভিশনে সীমাবদ্ধ করুন। |
| API রানটাইমে KVM এন্ট্রি মুছে দেওয়া | KVM নীতি DELETE অপারেশন ব্যবহার করে API রানটাইমে KVM এন্ট্রি মুছে দিন। |
নমুনা
লিটারেল সহ KVM PUT করুন
নিম্নলিখিত নীতিটি রান করলে, এটি
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-তে API > এনভায়রনমেন্ট কনফিগারেশন > কী-ভ্যালু ম্যাপ বিকল্পের অধীনে KVM দেখতে পাবেন। সেই পৃষ্ঠায় দেখানো KVM সবই বেছে নেওয়া এনভায়রনমেন্টের স্কোপে আছে।
লিটেরাল থেকে KVM পাওয়া
এই নীতিটি আগের উদাহরণের 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>
ভেরিয়েবেল সহ KVM PUT করুন
কী ভ্যালু ম্যাপের একটি সহজ উদাহরণ হল URL ছোট করার পরিষেবা। সম্পূর্ণ URL-এর সাথে সাথে ছোট করা URL সেভ করার জন্য কী-ভ্যালু ম্যাপ কনফিগার করা যেতে পারে।
এই নীতির নমুনা একটি কী-ভ্যালু ম্যাপ তৈরি করে। নীতিটি "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, হল একটি
কাস্টম ভেরিয়েবলের উদাহরণ। কোড (যেমন, জাভাস্ক্রিপ্ট বা জাভা) হ্যাশ করা অনুরোধ URL তৈরি করবে এবং তারপরে এই ভেরিয়েবলে স্টোর করবে, যেখানে KeyValueMapOperations নীতি এটি অ্যাক্সেস করতে
পারবে।
প্রতিটি কী, requesturl.hashed-এর জন্য, দুটি ভ্যালু স্টোর করা হয়:
urlencoding.longurl.encodedনামের কাস্টম ভেরিয়েবলের কন্টেন্ট- আগে থেকে সংজ্ঞায়িত ভেরিয়েবল
request.queryparam.url-এর কন্টেন্ট
যেমন, রানটাইমে নীতি এক্সিকিউট করার সময়, ভেরিয়েবলের ভ্যালুগুলি নিম্নলিখিত হতে পারে:
urlencoding.requesturl.hashed: ed24e12820f2f900ae383b7cc4f2b31c402db1beurlencoding.longurl.encoded: http://tinyurl.com/38lwmlrrequest.queryparam.url: http://apigee.com
Edge-এর কী/ভ্যালু স্টোরে নিম্নলিখিত কী/ভ্যালু ম্যাপ ও এন্ট্রি তৈরি হবে এবং যে API প্রক্সির সাথে নীতি অ্যাটাচ করা আছে সেটির স্কোপে থাকবে:
{
"entry" :[
{
"name" : "ed24e12820f2f900ae383b7cc4f2b31c402db1be",
"value" : "http://tinyurl.com/38lwmlr,http://apigee.com"
}
],
"name" : "urlMapper"
}মুছে না দেওয়া পর্যন্ত এন্ট্রিটি থেকে যাবে। ক্লাউডে রান করছে এমন Edge-এর ইনস্ট্যান্স জুড়ে কী/ভ্যালু স্টোর এন্ট্রি ডিস্ট্রিবিউট করা হয়।
ভেরিয়েবেল থেকে KVM পান
কী ভ্যালু ম্যাপের একটি সহজ উদাহরণ হল URL 'ছোট করা' পরিষেবা। সম্পূর্ণ URL-এর সাথে সাথে ছোট করা URL সেভ করার জন্য কী-ভ্যালু ম্যাপ কনফিগার করা যেতে পারে।
কী/ভ্যালু ম্যাপ এন্ট্রির ভ্যালু রিট্রিভ করতে, যেমন 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 থেকে এনক্রিপ্ট করা ভ্যালু পান
কোনও কী-ভ্যালু ম্যাপ এনক্রিপ্ট করা থাকলে, assignTo অ্যাট্রিবিউট ভ্যালুতে "private."
প্রিফিক্স ব্যবহার করে ভ্যালু রিট্রিভ করুন। এই উদাহরণে, ভেরিয়েবল
private.encryptedVar কী ভ্যালু ম্যাপের
foo কী-এর ডিক্রিপ্ট করা ভ্যালু হোল্ড করে। এনক্রিপ্ট করা কী-ভ্যালু ম্যাপ তৈরি করা সংক্রান্ত তথ্যের জন্য, কী/ভ্যালু ম্যাপ
ম্যানেজমেন্ট API-এর "তৈরি করুন"
বিষয় দেখুন।
<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> ট্যাগের নির্দিষ্ট অ্যাট্রিবিউট সম্পর্কে বর্ণনা করা হয়েছে:
| অ্যাট্রিবিউট | বিবরণ | ডিফল্ট | উপস্থিতি |
|---|---|---|---|
| mapIdentifier |
এই নীতি বা ম্যানেজমেন্ট UI দ্বারা তৈরি করা ম্যাপ অ্যাক্সেস করার সময় ব্যবহার করার জন্য একটি শনাক্তকারী নির্দিষ্ট করে। পাবলিক ক্লাউডের জন্য Apigee Edge-এ KVM-এর নামে ছোট ও বড় হাতের অক্ষরের পার্থক্য করা হয়।
যেমন, আপনি এই অ্যাট্রিবিউট বাদ দিলে, সংস্থা/এনভায়রনমেন্ট/apiproxy-এর স্কোপের মধ্যে, আপনি নিজের ম্যাপের নাম নির্দিষ্ট করতে
|
প্রযোজ্য নয় | ঐচ্ছিক |
নিম্নলিখিত সারণী সমস্ত নীতির মূল উপাদানগুলির জন্য সাধারণ বৈশিষ্ট্যগুলি বর্ণনা করে:
| বৈশিষ্ট্য | বর্ণনা | ডিফল্ট | উপস্থিতি |
|---|---|---|---|
name | নীতির অভ্যন্তরীণ নাম। ঐচ্ছিকভাবে, ম্যানেজমেন্ট UI প্রক্সি এডিটরে নীতিটিকে একটি ভিন্ন, প্রাকৃতিক-ভাষা নামের সাথে লেবেল করতে | N/A | প্রয়োজন |
continueOnError | একটি নীতি ব্যর্থ হলে একটি ত্রুটি ফেরত দিতে একটি নীতি ব্যর্থ হওয়ার পরেও ফ্লো এক্সিকিউশন চালিয়ে যেতে | মিথ্যা | ঐচ্ছিক |
enabled | নীতি প্রয়োগ করতে নীতি বন্ধ করতে | সত্য | ঐচ্ছিক |
async | এই বৈশিষ্ট্যটি অবমূল্যায়ন করা হয়েছে৷ | মিথ্যা | অবচয় |
<DisplayName> উপাদান
ম্যানেজমেন্ট UI প্রক্সি এডিটরে নীতিটিকে একটি ভিন্ন, প্রাকৃতিক-ভাষা নামের সাথে লেবেল করতে name বৈশিষ্ট্য ছাড়াও ব্যবহার করুন।
<DisplayName>Policy Display Name</DisplayName>
| ডিফল্ট | N/A আপনি এই উপাদানটি বাদ দিলে, নীতির |
|---|---|
| উপস্থিতি | ঐচ্ছিক |
| টাইপ | স্ট্রিং |
<Delete> এলিমেন্ট
নির্দিষ্ট কী/ভ্যালু পেয়ার মুছে দেয়। <Get>,
<Put> অথবা <Delete>-এর মধ্যে অন্তত একটি ব্যবহার করতে হবে।
প্যারেন্ট এলিমেন্টে mapIdentifier অ্যাট্রিবিউট
সহ KVM-এর নাম উল্লেখ করতে ভুলবেন না। যেমন:
<Delete>
<Key>
<Parameter>key_name_literal</Parameter>
</Key>
</Delete>| ডিফল্ট | প্রযোজ্য নয় |
|---|---|
| উপস্থিতি | <Get> বা <Put> না থাকলে এটি প্রয়োজন। |
| ধরন | প্রযোজ্য নয় |
<Entry> এলিমেন্ট
কী-ভ্যালু ম্যাপের জন্য সিড ভ্যালু, যা কী-ভ্যালু ম্যাপ ইনিশিয়ালাইজ করার সময় পপুলেট করা হয়।
পাবলিক ক্লাউডের জন্য Edge-এর ক্ষেত্রে, কী-এর সাইজ ২ কেবি পর্যন্ত সীমিত থাকে। যেমন:
<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>
| ডিফল্ট | প্রযোজ্য নয় |
|---|---|
| উপস্থিতি | ঐচ্ছিক |
| ধরন | প্রযোজ্য নয় |
<ExclusiveCache> এলিমেন্ট
বন্ধ করে দেওয়া হয়েছে। এর পরিবর্তে <Scope> এলিমেন্ট ব্যবহার করুন।
<ExpiryTimeInSecs> এলিমেন্ট
এটি সেকেন্ডে সেই সময়সীমা নির্দিষ্ট করে যার পরে Edge নির্দিষ্ট KVM থেকে এর ক্যাশে করা ভ্যালু রিফ্রেশ করে।
০ বা -১ মান অথবা এই এলিমেন্ট বাদ দেওয়া হলে, এর অর্থ হল ৩০০ সেকেন্ডের ডিফল্ট মান ব্যবহার করা হবে। যেমন:
<ExpiryTimeInSecs>600</ExpiryTimeInSecs>
| ডিফল্ট | 300 (৫ মিনিট) |
|---|---|
| উপস্থিতি | ঐচ্ছিক |
| ধরন | পূর্ণসংখ্যা |
KVM হল একটি দীর্ঘমেয়াদী পারসিস্টেন্স মেকানিজম যা NoSQL ডেটাবেসে কী ও ভ্যালু সেভ করে। এই কারণে, রানটাইমে 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>-এর মান হল ৬০। - ৩০ সেকেন্ড পরে, GET নীতি আবার এক্সিকিউট হয় এবং ক্যাশে থেকে "10" মানটি রিট্রিভ করে।
- ৫ সেকেন্ড পরে, একটি PUT নীতি "রেটিং"-এর ভ্যালু আপডেট করে "৮" করে দেয় এবং
<ExpiryTimeInSecs>PUT নীতিতে ২০ হয়। নতুন ভ্যালু দিয়ে ক্যাশে অবিলম্বে রিফ্রেশ করা হয়, যা এখন ২০ সেকেন্ডের জন্য ক্যাশে থাকবে বলে সেট করা হয়েছে। (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 আছে বলে ধরে নিন। এছাড়াও, সর্বকালের সবচেয়ে জনপ্রিয় সিনেমার একটি চলমান তালিকা সেভ করার পাশাপাশি, KVM সব বড় সিনেমার পরিচালকের নাম সেভ করে।
| কী | ভ্যালু |
|---|---|
| top_movies | প্রিন্সেস ব্রাইড,দ্য গডফাদার,সিটিজেন কেন |
| সিটিজেন কেন | অরসন ওয়েলস |
| প্রিন্সেস ব্রাইড | রব রেইনার |
| দ্য গডফাদার | ফ্রান্সিস ফোর্ড কোপলা |
বর্তমান সবচেয়ে জনপ্রিয় সিনেমা এবং তার ডিরেক্টরের নাম পেতে আমরা এখানে 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>
API প্রক্সি কল করা হলে, Edge নিম্নলিখিত ভেরিয়েবল তৈরি করে যা আপনি API প্রক্সি ফ্লোতে ব্যবহার করতে পারবেন:
top.movie.pick=Princess Bridemovie.director=Rob Reiner
অ্যাট্রিবিউট
নিচের সারণীতে <Get> এলিমেন্টের অ্যাট্রিবিউট সম্পর্কে বর্ণনা করা হয়েছে:
| অ্যাট্রিবিউট | বিবরণ | ডিফল্ট | উপস্থিতি |
|---|---|---|---|
| assignTo |
যে ভেরিয়েবলে ফিরিয়ে আনা ভ্যালু অ্যাসাইন করা হবে। কী ভ্যালু ম্যাপ এনক্রিপ্ট করা থাকলে, assignTo নামের শুরুতে
" <Get assignTo="private.myvar"> আপনি যদি প্রিফিক্স ব্যবহার না করে এনক্রিপ্ট করা কী ভ্যালু ম্যাপ রিট্রিভ করার চেষ্টা করেন, তাহলে নীতিটি একটি সমস্যা দেখায়। ডিবাগিংয়ের সময় প্রাথমিক নিরাপত্তা সংক্রান্ত কারণে প্রয়োজনীয় প্রিফিক্স API প্রক্সি ট্রেস ও ডিবাগ সেশন থেকে এনক্রিপ্ট করা ভ্যালু লুকিয়ে রাখে। এনক্রিপ্ট করা কী-ভ্যালু ম্যাপ তৈরি করা সম্পর্কে তথ্য পেতে, কী/ভ্যালু ম্যাপ ম্যানেজমেন্ট API এবং এনভায়রনমেন্ট কী-ভ্যালু ম্যাপ তৈরি ও এডিট করা সংক্রান্ত বিষয় দেখুন। |
প্রযোজ্য নয় | প্রয়োজনীয় |
| ইনডেক্স |
মাল্টি-ভ্যালু কী থেকে আইটেম ফেচ করার জন্য ইনডেক্স নম্বর (১-ভিত্তিক ইনডেক্সে)।
যেমন, যেমন, Samples-এ "KVM থেকে এনক্রিপ্ট করা ভ্যালু পান" ট্যাব দেখুন। |
প্রযোজ্য নয় | ঐচ্ছিক |
<InitialEntries> এলিমেন্ট
কী-ভ্যালু ম্যাপের জন্য সিড ভ্যালু, যা কী-ভ্যালু ম্যাপ ইনিশিয়ালাইজ করার সময় তাতে পপুলেট করা হয়।
প্যারেন্ট এলিমেন্টে 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-এর ভ্যালু ওভাররাইট হয়ে যায়। আগে থেকে থাকা কী/ভ্যালুর সাথে নতুন কী/ভ্যালু যোগ করা হয়।
এই এলিমেন্ট দ্বারা পপুলেট করা কী ও ভ্যালু অবশ্যই লিটেরাল হতে হবে। যেমন, এই এলিমেন্টের মধ্যে <Parameter
ref="request.queryparam.key"> কাজ করে না।
পাবলিক ক্লাউড ও প্রাইভেট ক্লাউড, দু'টির ক্ষেত্রেই Edge-এর কী সাইজ ২ কেবি পর্যন্ত সীমাবদ্ধ। KVM ভ্যালু ২ কেবি পর্যন্ত সীমিত।
এনক্রিপ্টেড KVM তৈরি করতে, Key/Value Maps ম্যানেজমেন্ট API ব্যবহার করুন।
| ডিফল্ট | প্রযোজ্য নয় |
|---|---|
| উপস্থিতি | ঐচ্ছিক |
| ধরন | প্রযোজ্য নয় |
<Key> এলিমেন্ট
কী/ভ্যালু ম্যাপ এন্ট্রিতে কী নির্দিষ্ট করে। একটি কী কম্পোজিট হতে পারে, যার অর্থ হল কী তৈরি করার জন্য
একাধিক প্যারামিটার যোগ করা যেতে পারে। যেমন, userID এবং
role একসাথে মিশিয়ে key তৈরি করা হতে পারে। যেমন:
<Key>
<Parameter>key_name_literal</Parameter>
</Key>কীওয়ার্ডের নাম কীভাবে সেট করবেন সেই সম্পর্কে নির্দিষ্ট তথ্য পেতে, <Parameter> এলিমেন্টটি দেখতে ভুলবেন না।
পাবলিক ক্লাউডের জন্য Edge-এ, কী সাইজ ২ কেবি পর্যন্ত সীমিত থাকে। আরও জানতে পাবলিক ক্লাউড API ও প্রাইভেট ক্লাউড API-এর মধ্যে পার্থক্য দেখুন।
| ডিফল্ট | প্রযোজ্য নয় |
|---|---|
| উপস্থিতি | ঐচ্ছিক |
| ধরন | প্রযোজ্য নয় |
<Parameter> এলিমেন্ট
কী/ভ্যালু পেয়ারে কী নির্দিষ্ট করে। কী/ভ্যালু পেয়ার তৈরি, প্লেস করা, রিট্রিভ করা বা মুছে দেওয়ার সময় এই এলিমেন্ট নাম নির্দিষ্ট করে।
আপনি এগুলি ব্যবহার করে নাম নির্দিষ্ট করতে পারবেন:
-
লিটারাল স্ট্রিং
<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> এলিমেন্টের অ্যাট্রিবিউট সম্পর্কে বর্ণনা করা হয়েছে:
| অ্যাট্রিবিউট | বিবরণ | ডিফল্ট | উপস্থিতি |
|---|---|---|---|
| ref | এমন একটি ভেরিয়েবলের নাম নির্দিষ্ট করে যার ভ্যালুতে আপনি তৈরি করতে, পেতে বা মুছে ফেলতে চান এমন কী-এর সঠিক নাম থাকে। | প্রযোজ্য নয় | ওপেনিং ও ক্লোজিং ট্যাগের মধ্যে কোনও আক্ষরিক মান না দেওয়া থাকলে এটি প্রয়োজনীয়। আক্ষরিক মান দেওয়া থাকলে এটি নিষিদ্ধ। |
<Put> এলিমেন্ট
কী-ভ্যালু ম্যাপ এনক্রিপ্ট করা বা এনক্রিপ্ট করা না থাকুক, কী-ভ্যালু ম্যাপে একটি কী/ভ্যালু পেয়ার লেখে।
প্যারেন্ট এলিমেন্টে mapIdentifier অ্যাট্রিবিউটে নির্দিষ্ট করা কী-ভ্যালু ম্যাপ
না থাকলে, ম্যাপটি অটোমেটিক তৈরি হয়ে যায় (এনক্রিপ্ট না করা হিসেবে)। কী ভ্যালু
ম্যাপ আগে থেকেই থাকলে, কী/ভ্যালু এতে যোগ করা হয়।
এনক্রিপ্টেড কী ভ্যালু ম্যাপ তৈরি করতে,কী/ভ্যালু ম্যাপ ম্যানেজমেন্ট API ব্যবহার করুন; অথবা UI-তে এনক্রিপ্টেড এনভায়রনমেন্ট-স্কোপড KVM তৈরি করতে,এনভায়রনমেন্ট কী ভ্যালু ম্যাপ তৈরি ও এডিট করা দেখুন।
<Put override="false"> <Key> <Parameter ref="mykeyvar"/> </Key> <Value ref="myvalvar1"/> </Put>
| ডিফল্ট | প্রযোজ্য নয় |
|---|---|
| উপস্থিতি | <Get> বা <Delete> না থাকলে
প্রয়োজনীয়। |
| ধরন | প্রযোজ্য নয় |
অ্যাট্রিবিউট
নিচের সারণীতে <Put> এলিমেন্টের অ্যাট্রিবিউট সম্পর্কে বর্ণনা করা হয়েছে:
| অ্যাট্রিবিউট | বিবরণ | ডিফল্ট | উপস্থিতি |
|---|---|---|---|
| ওভাররাইড |
|
false |
ঐচ্ছিক |
<Scope> এলিমেন্ট
কী-ভ্যালু ম্যাপের অ্যাক্সেসিবিলিটির সীমানা নির্ধারণ করে। ডিফল্ট স্কোপ হল
environment, অর্থাৎ, ডিফল্ট হিসেবে, কোনও এনভায়রনমেন্টে (যেমন, টেস্ট বা প্রোডাকশন) রান করা সব API প্রক্সি
ম্যাপ এন্ট্রি শেয়ার করে। আপনি স্কোপ
apiproxy হিসেবে সেট করলে, কী ভ্যালু ম্যাপের এন্ট্রি শুধুমাত্র সেই API প্রক্সি অ্যাক্সেস করতে পারবে যা
ম্যাপে ভ্যালু লেখে।
মনে রাখবেন, কোনও ম্যাপ বা ম্যাপ এন্ট্রি অ্যাক্সেস করার সময়, ম্যাপ তৈরি করার সময় আপনি যে স্কোপ ভ্যালু ব্যবহার করেছিলেন, আপনাকে সেই একই ভ্যালু উল্লেখ করতে হবে।
যেমন, ম্যাপটি যদি
apiproxy স্কোপ নিয়ে তৈরি করা হয়, তাহলে এর ভ্যালু রিট্রিভ করার সময়,
পরিবর্তন করার সময় বা এন্ট্রি মুছে দেওয়ার সময় আপনাকে অবশ্যই apiproxy স্কোপ ব্যবহার করতে হবে।
<Scope>environment</Scope>
| ডিফল্ট | environment |
|---|---|
| উপস্থিতি | ঐচ্ছিক |
| ধরন | স্ট্রিং |
| বৈধ মানসমূহ: |
|
<Value> এলিমেন্ট
কী-এর মান নির্দিষ্ট করে। আপনি ভ্যালুটিকে হয় লিটেরাল স্ট্রিং হিসেবে অথবা রান টাইমে রিট্রিভ করার জন্য ভেরিয়েবল হিসেবে 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-এ দুটি কী যোগ করা হয়েছে:
- ভ্যালু
v1,v2সহ কীk1 - ভ্যালু
v3,v4সহ কীk2
<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, API প্রক্সি নাম হল bar এবং এনভায়রনমেন্ট হল
test:
- ভ্যালু
bar,testসহ কীfoo_org
<Put>
<Key>
<Parameter ref="organization.name"/>
</Key>
<Value ref="apiproxy.name"/>
<Value ref="environment.name"/>
</Put>| ডিফল্ট | প্রযোজ্য নয় |
|---|---|
| উপস্থিতি | প্রয়োজনীয় |
| ধরন | স্ট্রিং |
অ্যাট্রিবিউট
নিচের সারণীতে <Value> এলিমেন্টের অ্যাট্রিবিউট সম্পর্কে বর্ণনা করা হয়েছে:
| অ্যাট্রিবিউট | বিবরণ | ডিফল্ট | উপস্থিতি |
|---|---|---|---|
| ref | আপনি যে কী ভ্যালু সেট করতে চান, সেটির ভ্যালু যে ভেরিয়েবলে আছে, সেটির নাম উল্লেখ করে। | প্রযোজ্য নয় | ওপেনিং ও ক্লোজিং ট্যাগের মধ্যে কোনও আক্ষরিক মান না দেওয়া থাকলে এটি প্রয়োজনীয়। আক্ষরিক মান দেওয়া থাকলে এটি নিষিদ্ধ। |
সমস্যার রেফারেন্স
Edge নীতি থেকে ফেরত আসা সমস্যার কোড সমস্যার কোড রেফারেন্স-এ বর্ণিত একটি সামঞ্জস্যপূর্ণ ফর্ম্যাট অনুসরণ করে।
এই নীতি কোনও সমস্যার কারণে ট্রিগার হলে, Edge-এর মাধ্যমে ফেরত আসা ফল্ট কোড ও সমস্যার মেসেজ এবং সেট করা ফল্ট ভেরিয়েবল সম্পর্কে এই বিভাগে বর্ণনা করা হয়েছে। সমস্যা সমাধানের জন্য আপনি যদি ফল্ট রুল ডেভেলপ করেন, তাহলে এই তথ্য জানা আপনার জন্য গুরুত্বপূর্ণ। আরও জানতে, নীতি সংক্রান্ত সমস্যা সম্পর্কে আপনার যা জানা প্রয়োজন এবং ত্রুটি মোকাবেলা করা দেখুন।
রানটাইম সমস্যা
নীতি এক্সিকিউট করার সময় এই সমস্যা হতে পারে।
| সমস্যার কোড | 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 |
Key Value Map Operations নীতির <InitialEntries> এলিমেন্টের মধ্যে <Entry> এলিমেন্টের নিচে <Value> এলিমেন্ট না থাকলে এই সমস্যা হয়।
|
build |
স্কিমা
ব্যবহার সংক্রান্ত নোট
কী ভ্যালু ম্যাপের ওভারভিউ পেতে, কী ভ্যালু ম্যাপের সাথে কাজ করা দেখুন।
কী-ভ্যালু ম্যাপ স্টোর, কী/ভ্যালু পেয়ার হিসেবে ফর্ম্যাট করা ডেটার জন্য
লাইটওয়েট পারসিস্টেন্স মেকানিজম প্রদান করে। আপনি রানটাইমে নীতি বা কোডের মাধ্যমে এগুলি অ্যাক্সেস করতে পারবেন। ম্যাপে key=value ফর্ম্যাটে
যেকোনও ডেটা থাকে।
যেমন, localhost=127.0.0.1, zip_code=94110 অথবা
first_name=felix. প্রথম উদাহরণে, localhost হল কী এবং
127.0.0.1 হল ভ্যালু। প্রতিটি কী/ভ্যালু পেয়ারকে key
value ম্যাপে এন্ট্রি হিসেবে স্টোর করা হয়। একটি কী-ভ্যালু ম্যাপে অনেক এন্ট্রি সেভ করা যায়।
কী ভ্যালু ম্যাপ ব্যবহারের একটি উদাহরণ এখানে দেওয়া হল। ধরে নিন, আপনাকে বিভিন্ন ব্যাকএন্ড
এনভায়রনমেন্টের সাথে যুক্ত
IP অ্যাড্রেসের একটি তালিকা সেভ করতে হবে। আপনি ipAddresses নামের একটি কী-ভ্যালু ম্যাপ তৈরি করতে পারেন, যেখানে এন্ট্রি হিসেবে
কী/ভ্যালু পেয়ারের একটি তালিকা থাকবে। যেমন, এই JSON এই ধরনের ম্যাপের প্রতিনিধিত্ব করতে পারে:
{
"entry" : [ {
"name" : "Development",
"value" : "65.87.18.18"
}, {
"name" : "Staging",
"value" : "65.87.18.22"
} ],
"name" : "ipAddresses"
}আপনি এই স্ট্রাকচার ব্যবহার করে IP অ্যাড্রেসের একটি স্টোর তৈরি করতে পারেন যা রানটাইমে নীতি দ্বারা IP হোয়াইটলিস্ট বা ব্ল্যাকলিস্ট প্রয়োগ করতে, ডায়নামিক উপায়ে ব্যাকএন্ড টার্গেট অ্যাড্রেস বেছে নিতে এবং আরও অনেক কিছু করতে ব্যবহার করা যেতে পারে। সাধারণত, KeyValueMapOperations নীতিটি দীর্ঘস্থায়ী তথ্য সেভ বা রিট্রিভ করতে ব্যবহৃত হয় যা একাধিক অনুরোধ/উত্তর ট্রানজ্যাকশনে আবার ব্যবহার করতে হয়।
KeyValueMapOperations নীতির মাধ্যমে বা সরাসরি Apigee Edge ম্যানেজমেন্ট API-এর মাধ্যমে কী/ভ্যালু ম্যাপ ম্যানিপুলেট করা যেতে পারে। সংস্থা কী/ভ্যালু ম্যাপ API API সম্পর্কে বিস্তারিত জানতে ম্যানেজমেন্ট API রেফারেন্স দেখুন। আপনি API ব্যবহার করে, যেমন, কী/ভ্যালু স্টোরে বড় ডেটা সেট আপলোড করতে পারেন অথবা কী/ভ্যালু ম্যাপ এন্ট্রি ম্যানেজ করার জন্য স্ক্রিপ্ট তৈরি করতে পারেন। KeyValueMapOperations নীতি ব্যবহার করে API অ্যাক্সেস করার আগে আপনাকে API-এর সাথে একটি কী/ভ্যালু ম্যাপ তৈরি করতে হবে।
কী নামের উল্লেখ ও তা পাওয়া
<Parameter> ও <Value> এলিমেন্টের সাহায্যে, আপনি
কোনও লিটারাল ভ্যালু (যেখানে ভ্যালু ওপেনিং ও ক্লোজিং ট্যাগের মধ্যে থাকে) নির্দিষ্ট করতে পারেন অথবা
রানটাইমে যে ভেরিয়েবলের ভ্যালু ব্যবহার করা উচিত তার নাম নির্দিষ্ট করতে ref অ্যাট্রিবিউট
ব্যবহার করতে পারেন।
Parameter এলিমেন্টটি বিশেষ উল্লেখের দাবি রাখে, কারণ এটি তৈরি করা কী-এর নাম নির্ধারণ করে, পাশাপাশি আপনি যে কী-এর নাম পুনরুদ্ধার বা মুছে ফেলতে চান সেটিও নির্ধারণ করে। নিচে দুটি উদাহরণ দেওয়া হল। প্রথমটি আক্ষরিকভাবে একটি কীয়ের নাম নির্দিষ্ট করে এবং দ্বিতীয়টি একটি ভেরিয়েবেল ব্যবহার করে একটি কীয়ের নাম নির্দিষ্ট করে। ধরে নেওয়া যাক, KVM-এ কী তৈরি করার জন্য নিম্নলিখিতগুলি ব্যবহার করা হয়:
<Parameter>key_name_literal</Parameter> <Parameter ref="key.name.variable"/>
প্রথম ক্ষেত্রে, "key_name_literal"-এর আক্ষরিক মান KVM-এ key
নাম হিসেবে সেভ করা হয়। দ্বিতীয় উদাহরণে, key.name.variable-এ যে ভ্যালু থাকবে সেটিই KVM-এর কী-এর
নাম হয়ে যাবে। যেমন, key.name.variable-এ যদি
ভ্যালু foo থাকে, তাহলে কী-এর নাম হবে "foo"।
আপনি যখন GET অপারেশন (বা DELETE অপারেশন দিয়ে মুছে ফেলা) সহ কী ও কী ভ্যালু রিট্রিভ করতে চান, তখন <Parameter> সেটিংকে KVM-এর কী নামের সাথে ম্যাচ করতে হবে।
যেমন, KVM-এ কী-এর নাম "foo" হলে, আপনি <Parameter>foo</Parameter>-এর মাধ্যমে লিটেরাল ভ্যালু নির্দিষ্ট করতে পারেন
অথবা এমন কোনও ভেরিয়েবল নির্দিষ্ট করতে পারেন যাতে "foo"-এর মতো হুবহু
ভ্যালু আছে, যেমন: <Parameter ref="variable.containing.foo"/>।