คุณกำลังดูเอกสารประกอบ Apigee Edge
ไปที่
เอกสารประกอบเกี่ยวกับ Apigee X. ข้อมูล
อะไร
ให้สิทธิ์เข้าถึงที่เก็บ Key Value Map (KVM) ที่มีอยู่ใน Apigee Edge ตามนโยบาย คุณสามารถจัดเก็บ เรียก และลบออกจากคู่ของคีย์/ค่าโดยการกำหนดค่า นโยบาย KeyValueMapOperations ที่ระบุการดำเนินการ PUT, GET หรือ DELETE (อย่างน้อย 1 การดำเนินการเหล่านี้ต้องดำเนินการตามนโยบาย)
วิดีโอ
ดูข้อมูลเพิ่มเติมเกี่ยวกับ KVM ได้ในวิดีโอต่อไปนี้
วิดีโอ | คำอธิบาย |
---|---|
ทำไมจึงต้องใช้คีย์-ค่า Maps | ดูเหตุผลที่คุณต้องการ KVM และวิธีการทำงาน |
สร้าง KVM โดยใช้ UI และเรียกข้อมูล KVM ขณะรันไทม์ | สร้าง KVM, ดึงค่าโดยใช้นโยบาย KVM และแทรกค่าลงใน API โดยใช้ตัวแปรโฟลว์ |
สร้างและอัปเดต KVM ที่รันไทม์ของ API | สร้าง KVM ที่รันไทม์ของ API โดยใช้นโยบาย KVM |
แคช KVM ไปยัง เพิ่มประสิทธิภาพ | ปรับปรุงประสิทธิภาพของนโยบาย KVM โดยการแคชข้อมูล |
ร้านค้าที่เข้ารหัส KVM | จัดเก็บข้อมูลที่ละเอียดอ่อนใน KVM ในรูปแบบที่เข้ารหัสและเรียกข้อมูลค่าที่ โดยใช้นโยบาย KVM และตัวแปรส่วนตัว |
จัดการการเข้าถึง โดยใช้ขอบเขต KVM | จำกัด KVM เฉพาะองค์กร สภาพแวดล้อม พร็อกซี API หรือการแก้ไขพร็อกซี API โดยใช้ KVM แอตทริบิวต์ขอบเขตนโยบาย |
ลบ KVM รายการในรันไทม์ของ API | ลบรายการ KVM ที่รันไทม์ของ API โดยใช้การดำเนินการลบนโยบาย KVM |
ตัวอย่าง
PUT KVM ที่มีลิเทอรัล
เมื่อนโยบายต่อไปนี้ทำงาน จะสร้าง KVM ที่เข้ารหัสชื่อ
FooKVM
จากนั้นสร้างคีย์ชื่อ FooKey_1
ด้วย
มีการตั้งค่า 2 ค่าด้วยสตริงตามตัวอักษร 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>
โปรดสังเกตว่าขอบเขตคือ "สภาพแวดล้อม" ซึ่งหมายความว่าคุณดู KVM ได้ในส่วนการจัดการ UI ภายใต้ API > การกำหนดค่าสภาพแวดล้อม > Key Value Maps KVM ที่แสดงในหน้านั้น ทั้งหมดกำหนดขอบเขตตามสภาพแวดล้อมที่เลือก
รับ KVM จากลิเทอรัล
นโยบายนี้จะพิจารณาแมป FooKVM
จากตัวอย่างก่อนหน้านี้
ค่าที่ 2 (index="2") จากคีย์ FooKey_1
และจัดเก็บไว้ในตัวแปร
ที่ชื่อ 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 ที่มีตัวแปร
ตัวอย่างง่ายๆ ของแมปคีย์-ค่าที่มีประโยชน์คือบริการย่อ URL แมปค่าคีย์ สามารถกำหนดค่าให้จัดเก็บ URL แบบย่อกับ URL แบบเต็มที่เกี่ยวข้อง
ตัวอย่างนโยบายนี้จะสร้างแมปค่าคีย์ นโยบาย PUT 1 คีย์ที่มีค่าที่เชื่อมโยงกัน 2 ค่า ลงในการแมปคีย์/ค่าที่ชื่อว่า "urlMapper"
<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 คำขอที่แฮชจะถูกสร้างขึ้นโดยโค้ด (JavaScript หรือ Java สำหรับ
ตัวอย่าง) แล้วจัดเก็บไว้ในตัวแปรนี้ ซึ่งนโยบาย KeyValueMapOperations สามารถเข้าถึงได้
ได้
สำหรับแต่ละคีย์ requesturl.hashed
ระบบจะจัดเก็บ 2 ค่าดังนี้
- เนื้อหาของตัวแปรที่กำหนดเองชื่อ
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 จากตัวแปร
ตัวอย่างง่ายๆ ของแมปคีย์-ค่าที่มีประโยชน์คือ "การทำให้สั้น" ของ URL service. แมปค่าคีย์ สามารถกำหนดค่าให้จัดเก็บ URL แบบย่อกับ URL แบบเต็มที่เกี่ยวข้อง
เพื่อดึงค่าของรายการการแมปคีย์/ค่า เช่น ค่าที่ครอบคลุมอยู่ใน KeyValueMapOperations PUT ให้กำหนดค่านโยบายเพื่อรับแมปค่าคีย์
<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
หากมีการเข้ารหัสแมปค่าคีย์ ให้เรียกค่าโดยใช้ "private.
"
นำหน้าในค่าแอตทริบิวต์ assignTo
ในตัวอย่างนี้ ตัวแปร
private.encryptedVar
จะเก็บค่าที่ถอดรหัสของการแมปค่าคีย์
foo
สำหรับข้อมูลเกี่ยวกับการสร้างแมปค่าคีย์ที่เข้ารหัส โปรดดูส่วน "สร้าง"
หัวข้อของการแมปคีย์/ค่า
Management 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 การจัดการ ชื่อ KVM จะพิจารณาตัวพิมพ์เล็กและตัวพิมพ์ใหญ่กับ Apigee Edge สำหรับ Public Cloud
ตัวอย่างเช่น หากคุณยกเว้นแอตทริบิวต์นี้ ระบบจะใช้ KVM ที่ชื่อ ภายในขอบเขตองค์กร/สภาพแวดล้อม/apiproxy คุณสามารถใช้
|
ไม่มี | ไม่บังคับ |
ตารางต่อไปนี้อธิบายแอตทริบิวต์ทั่วไปในองค์ประกอบระดับบนสุดของนโยบายทั้งหมด
แอตทริบิวต์ | คำอธิบาย | ค่าเริ่มต้น | การมีบุคคลอยู่ |
---|---|---|---|
name |
ชื่อภายในของนโยบาย ค่าของแอตทริบิวต์ (ไม่บังคับ) ใช้องค์ประกอบ |
ไม่มี | ต้องระบุ |
continueOnError |
ตั้งค่าเป็น ตั้งค่าเป็น |
เท็จ | ไม่บังคับ |
enabled |
ตั้งค่าเป็น ตั้งค่าเป็น |
จริง | ไม่บังคับ |
async |
แอตทริบิวต์นี้เลิกใช้งานแล้ว |
เท็จ | เลิกใช้ |
<DisplayName> องค์ประกอบ
ใช้เพิ่มเติมจากแอตทริบิวต์ name
เพื่อติดป้ายกำกับนโยบายใน
เครื่องมือแก้ไขพร็อกซี UI การจัดการด้วยชื่อที่เป็นภาษาธรรมชาติต่างกัน
<DisplayName>Policy Display Name</DisplayName>
ค่าเริ่มต้น |
ไม่มี หากไม่ใส่องค์ประกอบนี้ ค่าของแอตทริบิวต์ |
---|---|
การมีบุคคลอยู่ | ไม่บังคับ |
ประเภท | สตริง |
<Delete> องค์ประกอบ
ลบคู่คีย์/ค่าที่ระบุ อย่างน้อย 1 คนจาก <Get>
ต้องใช้ <Put>
หรือ <Delete>
โปรดระบุชื่อของ KVM ด้วยแอตทริบิวต์ mapIdentifier
ในองค์ประกอบระดับบน เช่น
<Delete> <Key> <Parameter>key_name_literal</Parameter> </Key> </Delete>
ค่าเริ่มต้น | ไม่มี |
---|---|
การมีบุคคลอยู่ | ต้องระบุหากไม่มี <Get> หรือ <Put> |
ประเภท | ไม่มี |
<Entry> องค์ประกอบ
ค่าตั้งต้นสำหรับแมปค่าคีย์ ซึ่งมีการป้อนข้อมูลในแมปค่าคีย์เมื่อ ได้เริ่มต้นแล้ว
สำหรับ Edge for Public Cloud ขนาดของคีย์จะจำกัดอยู่ที่ 2 KB เช่น
<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 ที่ระบุ
ค่า 0 หรือ -1 หรือไม่รวมองค์ประกอบนี้ หมายความว่าค่าเริ่มต้น 300 วินาทีคือ เช่น
<ExpiryTimeInSecs>600</ExpiryTimeInSecs>
ค่าเริ่มต้น | 300 (5 นาที) |
---|---|
การมีบุคคลอยู่ | ไม่บังคับ |
ประเภท | จำนวนเต็ม |
KVM เป็นกลไกการคงอยู่ในระยะยาวที่จัดเก็บคีย์และค่าไว้ในฐานข้อมูล NoSQL ด้วยเหตุนี้ การอ่านจาก KVM ขณะรันไทม์อาจทำให้ประสิทธิภาพของพร็อกซีช้าลง เพื่อปรับปรุง Edge มีกลไกในตัวสำหรับการแคชคีย์/ค่า KVM ในหน่วยความจำระหว่างรันไทม์ นโยบายการดำเนินการ KVM นี้จะอ่านจากแคชสำหรับการดำเนินการ GET เสมอ
องค์ประกอบ <ExpiryTimeInSecs>
ให้คุณควบคุมระยะเวลาของคีย์/ค่า
ที่ใช้ในนโยบายจะจัดเก็บไว้ในแคชก่อนรีเฟรชจาก KVM อีกครั้ง อย่างไรก็ตาม
มีความแตกต่างบางอย่างระหว่างการดำเนินการ GET และ PUT ส่งผลต่อการหมดอายุของแคช
GET - ครั้งแรกที่การดำเนินการ KVM GET ทำงาน คำขอ
คีย์/ค่าจาก KVM (ที่มีชื่อระบุไว้ในรูทของนโยบาย mapIdentifier
) จะได้รับการโหลดลงในแคช ซึ่งจะยังคงอยู่สำหรับการดำเนินการ GET เพิ่มเติมจนกว่าจะถึงเวลา
จะเกิดเหตุการณ์ต่อไปนี้
- จำนวนวินาทีที่ระบุใน
<ExpiryTimeInSecs>
จะหมดอายุ
หรือ - การดำเนินการ PUT ในนโยบาย KVM จะเขียนทับค่าที่มีอยู่ (อธิบายถัดไป)
PUT - การดำเนินการ PUT จะเขียนคีย์/ค่าไปยัง KVM ที่ระบุ หาก PUT
เขียนไปยังคีย์ที่มีอยู่แล้วในแคช แคชนั้นจะรีเฟรชทันทีและตอนนี้มีการคงไว้ชั่วคราว
ค่าใหม่สำหรับจำนวนวินาทีที่ระบุใน
องค์ประกอบ <ExpiryTimeInSecs>
ตัวอย่าง - การแคช KVM
- การดำเนินการ GET จะดึงค่าของ "rating" ซึ่งจะเพิ่มค่า "10" เพื่อแคช
<ExpiryTimeInSecs>
ในนโยบายเท่ากับ 60 - หลังจากนั้น 30 วินาที นโยบาย GET จะทำงานอีกครั้งและเรียกข้อมูล "10" ออกจากแคช
- หลังจากนั้น 5 วินาที นโยบาย PUT จะอัปเดตค่าของ "rating" "8" และ
<ExpiryTimeInSecs>
ในนโยบาย PUT คือ 20 ระบบจะล้างแคชทันที รีเฟรชด้วยค่าใหม่ ซึ่งตอนนี้ตั้งไว้ให้คงอยู่ในแคชเป็นเวลา 20 วินาที (หาก PUT แคชที่ถูกสร้างขึ้นโดย GET แรกจะยังคงมีอยู่ใน 30 วินาที จากเวลาเดิม 60 วินาที) - หลังจากนั้น 15 วินาที GET อีกรายการจะเรียกใช้และดึงค่า "8"
<Get> องค์ประกอบ
ดึงค่าของคีย์ที่ระบุ อย่างน้อย 1 คนจาก <Get>
ต้องใช้ <Put>
หรือ <Delete>
โปรดระบุชื่อของ KVM ด้วยแอตทริบิวต์ mapIdentifier
บน
องค์ประกอบระดับบน
คุณสามารถรวมการบล็อก Get
หลายรายการในนโยบายเพื่อดึงข้อมูลหลายรายการ
จาก KVM
ค่าเริ่มต้น | ไม่มี |
---|---|
การมีบุคคลอยู่ | ต้องระบุหากไม่มี <Put> หรือ <Delete>
ปัจจุบัน |
ประเภท | ไม่มี |
รับไอเทมเดียวจาก KVM
<Get assignTo="myvar" index="1"> <Key> <Parameter>key_name_literal</Parameter> </Key> </Get>
รับไอเทมหลายรายการจาก KVM
ในตัวอย่างต่อไปนี้ ให้สมมติว่า KVM ที่มีคีย์และค่าต่อไปนี้ นอกจากนี้ ไปจนถึงการจัดเก็บรายการภาพยนตร์ที่ได้รับความนิยมมากที่สุดตลอดกาล KVM Store ชื่อผู้กำกับของภาพยนตร์ใหญ่ทุกเรื่อง
คีย์ | ค่า |
---|---|
top_movies | เจ้าสาวเจ้าสาว,เจ้าพ่อพ่อ,พลเมืองเคน |
พลเมือง เคน | ออร์สัน เวลส์ |
เจ้าสาวเจ้าสาว | ร็อบ ไรเนอร์ |
The Godfather | ฟรานซิส ฟอร์ด คอปโปลา |
นี่คือการกำหนดค่านโยบาย 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 Bride
movie.director=Rob Reiner
Attributes
ตารางต่อไปนี้อธิบายแอตทริบิวต์ขององค์ประกอบ <Get>
แอตทริบิวต์ | คำอธิบาย | ค่าเริ่มต้น | การมีบุคคลอยู่ |
---|---|---|---|
assignTo |
ตัวแปรที่ควรกำหนดค่าที่ดึงมา หากแมปค่าคีย์มีการเข้ารหัส ให้ขึ้นต้นชื่อ assignTo ด้วย
" <Get assignTo="private.myvar"> นโยบายจะแสดงข้อผิดพลาดหากคุณพยายามเรียกแมปค่าคีย์ที่เข้ารหัสโดยไม่มี โดยใช้คำนำหน้า คำนำหน้า ซึ่งจำเป็นสำหรับวัตถุประสงค์ด้านความปลอดภัยขั้นพื้นฐานระหว่าง การแก้ไขข้อบกพร่อง จะซ่อนค่าที่เข้ารหัสจากเซสชันการติดตามและแก้ไขข้อบกพร่องของพร็อกซี API สำหรับข้อมูลเกี่ยวกับการสร้างแมปค่าคีย์ที่เข้ารหัส โปรดดูส่วน "สร้าง" ของ การจัดการคีย์/ค่า API และการสร้างและ แก้ไขแมปค่าคีย์สภาพแวดล้อม |
ไม่มี | ต้องระบุ |
ดัชนี |
หมายเลขดัชนี (ในดัชนีที่อิงตาม 1) ของสินค้าที่จะดึงข้อมูลจากคีย์ที่มีหลายค่า
เช่น การระบุ ตัวอย่างเช่น โปรดดู "รับค่าที่เข้ารหัสจาก KVM" แท็บในฟีดลองฟัง |
ไม่มี | ไม่บังคับ |
<InitialEntries> องค์ประกอบ
ค่าตั้งต้นสำหรับแมปค่าคีย์ ซึ่งอยู่ในแมปค่าคีย์เมื่อเริ่มต้น
อย่าลืมระบุชื่อของ KVM โดยเปิดแอตทริบิวต์ mapIdentifier
องค์ประกอบระดับบนสุด เช่น
<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">
ขนาดของคีย์ต้องไม่เกิน 2 KB สำหรับทั้ง Edge สำหรับระบบคลาวด์สาธารณะ และ Edge for the Private Can จำกัดค่า KVM ไว้ที่ 2 KB
หากต้องการสร้าง KVM ที่เข้ารหัส ให้ใช้ API การจัดการแผนที่คีย์/ค่า
ค่าเริ่มต้น | ไม่มี |
---|---|
การมีบุคคลอยู่ | ไม่บังคับ |
ประเภท | ไม่มี |
<Key> องค์ประกอบ
ระบุคีย์ในรายการแมปคีย์/ค่า แต่ละคีย์อาจเป็นการผสมได้ ซึ่งหมายความว่ามากกว่า
สามารถใส่พารามิเตอร์ 1 รายการต่อท้ายเพื่อสร้างคีย์ได้ เช่น userID
และ
ระบบอาจรวม role
เข้าด้วยกันเพื่อสร้าง key
เช่น
<Key> <Parameter>key_name_literal</Parameter> </Key>
ตรวจสอบองค์ประกอบ <Parameter> เพื่อดูข้อมูลเฉพาะเกี่ยวกับวิธี ตั้งชื่อคีย์
เมื่อใช้ Edge for Public Cloud ขนาดของคีย์จะจำกัดอยู่ที่ 2 KB โปรดดูข้อมูลเพิ่มเติมในความแตกต่างระหว่าง Edge สำหรับ Public Cloud API และ Private Cloud 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>
เมื่อองค์ประกอบหลักมีองค์ประกอบพารามิเตอร์หลายรายการ สตริงคีย์ที่มีประสิทธิภาพคือ
การต่อค่าของพารามิเตอร์แต่ละตัวเข้าด้วยกันด้วยเครื่องหมายขีดล่าง 2 ขีด ตัวอย่างเช่น ใน
จากตัวอย่างข้างต้น หากตัวแปร apiproxy.name
มีค่า "abc1" ค่า
คีย์ที่มีประสิทธิภาพจะเป็น targeturl__abc1__weight
ไม่ว่าคุณจะได้รับ การอัปเดต หรือลบรายการคีย์/ค่า ชื่อคีย์ต้องตรงกับ ชื่อของคีย์ในแมปค่าคีย์ ดูการระบุและ เรียกดูชื่อคีย์เพื่อเป็นหลักเกณฑ์
ค่าเริ่มต้น | ไม่มี |
---|---|
การมีบุคคลอยู่ | ต้องระบุ |
ประเภท | สตริง |
Attributes
ตารางต่อไปนี้อธิบายแอตทริบิวต์ขององค์ประกอบ <Parameter>
แอตทริบิวต์ | คำอธิบาย | ค่าเริ่มต้น | การมีบุคคลอยู่ |
---|---|---|---|
อ้างอิง | ระบุชื่อของตัวแปรซึ่งมีค่าที่มีชื่อคีย์ที่คุณตรงกันทุกประการ ต้องการสร้าง รับ หรือลบ | ไม่มี | ต้องระบุหากไม่มีค่าลิเทอรัลระหว่างช่องเปิดและ แท็กปิด ห้ามหากระบุค่าลิเทอรัล |
<Put> องค์ประกอบ
เขียนคู่คีย์/ค่าในแมปค่าคีย์ ไม่ว่าแมปค่าคีย์จะมีการเข้ารหัส หรือ
ไม่ได้เข้ารหัส หากแมปค่าคีย์ที่ระบุในแอตทริบิวต์ mapIdentifier
ใน
ไม่มีองค์ประกอบระดับบนสุด แผนที่จะถูกสร้างขึ้นโดยอัตโนมัติ (เป็นแผนที่ไม่ได้เข้ารหัส) หากค่าคีย์
มีการแมปอยู่แล้ว คีย์/ค่าจะถูกเพิ่มลงไป
หากต้องการสร้างแมปค่าคีย์ที่เข้ารหัส ให้ใช้ API การจัดการแผนที่คีย์/ค่า หรือดูหัวข้อการสร้างและแก้ไขแมปค่าคีย์สภาพแวดล้อม เพื่อสร้าง KVM ระดับสภาพแวดล้อมที่เข้ารหัสใน UI
<Put override="false"> <Key> <Parameter ref="mykeyvar"/> </Key> <Value ref="myvalvar1"/> </Put>
ค่าเริ่มต้น | ไม่มี |
---|---|
การมีบุคคลอยู่ | ต้องระบุหากไม่มี <Get> หรือ <Delete>
ปัจจุบัน |
ประเภท | ไม่มี |
Attributes
ตารางต่อไปนี้อธิบายแอตทริบิวต์ขององค์ประกอบ <Put>
แอตทริบิวต์ | คำอธิบาย | ค่าเริ่มต้น | การมีบุคคลอยู่ |
---|---|---|---|
ลบล้าง |
หากตั้งค่าเป็น |
false |
ไม่บังคับ |
<Scope> องค์ประกอบ
กำหนดขอบเขตของการเข้าถึงสำหรับแมปค่าคีย์ ขอบเขตเริ่มต้นคือ
environment
ซึ่งหมายความว่าโดยค่าเริ่มต้น พร็อกซี API ทั้งหมดจะแชร์รายการแผนที่
ทำงานในสภาพแวดล้อม (เช่น การทดสอบหรือ Prod) หากคุณกำหนดขอบเขตเป็น
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>
หลายรายการเพื่อระบุหลายส่วนได้ด้วย
ระบบจะรวมค่าต่างๆ เข้าด้วยกันเมื่อเรียกใช้
ในตัวอย่างต่อไปนี้ จะมีการเพิ่ม 2 คีย์ลงใน 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>
ในตัวอย่างต่อไปนี้ จะมีการสร้างคีย์ 1 คีย์ที่มี 2 ค่า สมมติว่าองค์กร
ชื่อคือ foo_org
ชื่อพร็อกซี API คือ bar
และสภาพแวดล้อมคือ
test
:
- คีย์
foo_org
ที่มีค่าbar,test
<Put> <Key> <Parameter ref="organization.name"/> </Key> <Value ref="apiproxy.name"/> <Value ref="environment.name"/> </Put>
ค่าเริ่มต้น | ไม่มี |
---|---|
การมีบุคคลอยู่ | ต้องระบุ |
ประเภท | สตริง |
Attributes
ตารางต่อไปนี้อธิบายแอตทริบิวต์ขององค์ประกอบ <Value>
แอตทริบิวต์ | คำอธิบาย | ค่าเริ่มต้น | การมีบุคคลอยู่ |
---|---|---|---|
อ้างอิง | ระบุชื่อของตัวแปรที่มีค่าซึ่งมีค่าคีย์ที่คุณต้องการ ตั้งค่า | ไม่มี | ต้องระบุหากไม่มีค่าลิเทอรัลระหว่างช่องเปิดและ แท็กปิด ห้ามหากระบุค่าลิเทอรัล |
ข้อมูลอ้างอิงข้อผิดพลาด
ข้อผิดพลาดที่แสดงผลจากนโยบาย Edge จะมีรูปแบบที่สอดคล้องกันตามที่อธิบายไว้ในข้อมูลอ้างอิงรหัสข้อผิดพลาด
ส่วนนี้จะอธิบายโค้ดข้อผิดพลาดและข้อความแสดงข้อผิดพลาดที่แสดงผลและตัวแปรข้อผิดพลาดที่ Edge กําหนดเมื่อนโยบายนี้ทําให้เกิดข้อผิดพลาด ข้อมูลนี้เป็นสิ่งสำคัญที่ต้องทราบหากคุณกำลังกำหนดกฎข้อผิดพลาดเพื่อจัดการกับข้อผิดพลาด ดูข้อมูลเพิ่มเติมได้ที่สิ่งที่คุณต้องทราบเกี่ยวกับข้อผิดพลาดของนโยบายและการจัดการข้อผิดพลาด
ข้อผิดพลาดเกี่ยวกับรันไทม์
ข้อผิดพลาดเหล่านี้อาจเกิดขึ้นเมื่อนโยบายทำงาน
รหัสข้อผิดพลาด | สถานะ HTTP | สาเหตุ | แก้ไข |
---|---|---|---|
steps.keyvaluemapoperations.SetVariableFailed |
500 |
ข้อผิดพลาดนี้เกิดขึ้นหากคุณพยายามเรียกค่าจากแมปค่าคีย์ที่เข้ารหัส แล้วตั้งค่าเป็นตัวแปรที่มีชื่อไม่ได้ขึ้นต้นด้วย |
build |
steps.keyvaluemapoperations.UnsupportedOperationException |
500 |
ข้อผิดพลาดนี้เกิดขึ้นหากมีการตั้งค่าแอตทริบิวต์ |
build |
ข้อผิดพลาดในการทำให้ใช้งานได้
ข้อผิดพลาดเหล่านี้อาจเกิดขึ้นเมื่อคุณใช้พร็อกซีที่มีนโยบายนี้
ชื่อข้อผิดพลาด | สาเหตุ | แก้ไข |
---|---|---|
InvalidIndex |
หากแอตทริบิวต์ index ที่ระบุในองค์ประกอบ <Get> ของนโยบายการดำเนินการแมปค่าคีย์เป็น 0 หรือเป็นตัวเลขลบ จะทำให้การทำให้พร็อกซี API ใช้งานได้ไม่สำเร็จ ดัชนีจะเริ่มต้นจาก 1 ดังนั้นดัชนีที่เป็นจำนวนเต็ม 0 หรือจำนวนเต็มลบจึงถือว่าไม่ถูกต้อง
|
build |
KeyIsMissing |
ข้อผิดพลาดนี้เกิดขึ้นหากองค์ประกอบ <Key> หายไปทั้งหมด หรือองค์ประกอบ <Parameter> หายไปภายในองค์ประกอบ <Key> ภายใต้องค์ประกอบ <Entry> ขององค์ประกอบ <InitialEntries> ของนโยบายการดำเนินการแมปค่าคีย์
|
build |
ValueIsMissing |
ข้อผิดพลาดนี้เกิดขึ้นหากองค์ประกอบ <Value> หายไปใต้องค์ประกอบ <Entry> ขององค์ประกอบ <InitialEntries> ของนโยบายการดำเนินการแมปค่าคีย์ |
build |
สคีมา
หมายเหตุการใช้งาน
โปรดดูภาพรวมของการแมปค่าคีย์ที่หัวข้อการใช้งานแมปค่าคีย์
ที่จัดเก็บการแมปค่าที่สำคัญมีกลไกการคงอยู่ขนาดเล็กสำหรับข้อมูลที่มีการจัดรูปแบบเป็น
คู่คีย์/ค่า โดยคุณจะเข้าถึงได้ขณะรันไทม์ผ่านนโยบายหรือโค้ด แผนที่ประกอบด้วย
ข้อมูลที่กําหนดเองในรูปแบบ key=value
เช่น localhost=127.0.0.1
, zip_code=94110
หรือ
first_name=felix
ในตัวอย่างแรก localhost
คือคีย์ และ
127.0.0.1
คือ ค่า คู่คีย์/ค่าแต่ละคู่จะจัดเก็บเป็นรายการในคีย์
การแมปมูลค่า แมปค่าคีย์จะเก็บข้อมูลได้หลายรายการ
ต่อไปนี้เป็นตัวอย่างการใช้แมปค่าคีย์ สมมติว่าคุณต้องการจัดเก็บรายการที่อยู่ IP
ที่เชื่อมโยงกับแบ็กเอนด์ต่างๆ
สภาพแวดล้อมการใช้งาน คุณสามารถสร้างแมปค่าคีย์ชื่อ ipAddresses
ซึ่งมี
แสดงคู่คีย์/ค่าเป็นรายการ ตัวอย่างเช่น JSON นี้สามารถแสดงแผนที่ดังกล่าว
{ "entry" : [ { "name" : "Development", "value" : "65.87.18.18" }, { "name" : "Staging", "value" : "65.87.18.22" } ], "name" : "ipAddresses" }
คุณสามารถใช้โครงสร้างนี้เพื่อสร้างที่เก็บของที่อยู่ IP ที่นโยบายใช้ได้ ขณะรันไทม์เพื่อบังคับใช้รายการที่อนุญาตหรือรายการที่ปฏิเสธของ IP เพื่อเลือกเป้าหมายแบ็กเอนด์แบบไดนามิก ที่อยู่ และอื่นๆ โดยปกติแล้ว ระบบจะใช้นโยบาย KeyValueMapOperations เพื่อจัดเก็บหรือเรียกข้อมูล ข้อมูลที่ใช้ได้นานซึ่งจำเป็นต้องนำมาใช้ซ้ำในธุรกรรมการขอ/ตอบกลับหลายครั้ง
สามารถจัดการแมปคีย์/ค่าผ่านนโยบาย KeyValueMapOperations หรือทำโดยตรงผ่าน API การจัดการ Apigee Edge โปรดดูรายละเอียดเกี่ยวกับ API การแมปคีย์/ค่าขององค์กรในข้อมูลอ้างอิงของ API การจัดการ คุณสามารถใช้ API เพื่อ เช่น อัปโหลดชุดข้อมูลขนาดใหญ่ไปยังแหล่งเก็บคีย์/ค่า หรือสร้างสคริปต์เพื่อจัดการคีย์/ค่า รายการแผนที่ คุณจะต้องสร้างการแมปคีย์/ค่าด้วย API ก่อนเข้าถึงด้วย นโยบาย KeyValueMapOperations
การระบุและเรียกข้อมูลชื่อคีย์
เมื่อใช้องค์ประกอบ <Parameter>
และ <Value>
คุณจะทำสิ่งต่อไปนี้ได้
ระบุค่าลิเทอรัล (โดยที่ค่าอยู่ระหว่างแท็กเปิดและแท็กปิด) หรือใช้
แอตทริบิวต์ ref
เพื่อระบุชื่อของตัวแปรที่ควรใช้ค่า
รันไทม์
องค์ประกอบพารามิเตอร์ควรมีการกล่าวถึงพิเศษ เนื่องจากเป็นตัวกำหนดชื่อของคีย์ รวมทั้งชื่อคีย์ที่คุณต้องการเรียกหรือลบ ต่อไปนี้เป็นตัวอย่าง 2 ตัวอย่าง รายการที่ 1 ระบุชื่อคีย์ตามตัวอักษร ส่วนรายการที่สองระบุชื่อคีย์โดยใช้ตัวแปร สมมติว่ามีการใช้ตัวอย่างต่อไปนี้เพื่อสร้างคีย์ใน KVM
<Parameter>key_name_literal</Parameter> <Parameter ref="key.name.variable"/>
ในอินสแตนซ์แรก ค่าลิเทอรัลของ "key_name_literal" ถูกจัดเก็บไว้ใน KVM เป็นคีย์
ชื่อ ในอินสแตนซ์ที่ 2 ค่าที่อยู่ใน key.name.variable
จะกลายเป็น
ชื่อของคีย์ใน KVM ตัวอย่างเช่น ถ้า key.name.variable
มีพารามิเตอร์
ค่า foo
คีย์จะมีชื่อว่า "foo"
เมื่อคุณต้องการเรียกคีย์และค่าคีย์ด้วยการดำเนินการ GET (หรือลบด้วย
DELETE) <พารามิเตอร์> ต้องตรงกับชื่อคีย์ใน KVM สำหรับ
เช่น ถ้าชื่อคีย์ใน KVM คือ "foo" คุณอาจระบุค่าลิเทอรัลด้วย
<Parameter>foo</Parameter>
หรือระบุตัวแปรที่มี
ค่า "foo" ดังนี้ <Parameter ref="variable.containing.foo"/>