Anda sedang melihat dokumentasi Apigee Edge.
Buka
Dokumentasi Apigee X. info
Apa
Memberikan akses berbasis kebijakan ke penyimpanan Key Value Map (KVM) yang tersedia di Apigee Edge. Key-value pair dapat disimpan, diambil, dan dihapus dari peta bernama yang sudah ada dengan mengonfigurasi Kebijakan KeyValueMapOperations yang menentukan operasi PUT, GET, atau DELETE. (Setidaknya salah satu dari operasi ini harus dijalankan oleh kebijakan.)
Video
Tonton video berikut untuk mempelajari KVM lebih lanjut.
Video | Deskripsi |
---|---|
Alasan Nilai Kunci Maps? | Pelajari mengapa Anda membutuhkan KVM dan cara kerjanya. |
Buat KVM menggunakan UI dan mengambil KVM saat runtime | Membuat KVM, mengambil nilainya menggunakan kebijakan KVM, dan memasukkan nilainya ke dalam API permintaan menggunakan variabel alur. |
Membuat dan memperbarui KVM di runtime API | Buat KVM pada runtime API menggunakan kebijakan KVM. |
Cache KVM ke meningkatkan performa | Meningkatkan performa Kebijakan KVM dengan meng-cache data. |
Simpan terenkripsi KVM | Simpan informasi sensitif di KVM dalam format terenkripsi dan ambil nilainya runtime yang menggunakan kebijakan KVM dan variabel pribadi. |
Kelola akses menggunakan cakupan KVM | Membatasi KVM ke organisasi, lingkungan, proxy API, atau revisi proxy API menggunakan KVM kebijakan cakupan. |
Hapus KVM entri pada runtime API | Hapus entri KVM saat runtime API menggunakan operasi DELETE kebijakan KVM. |
Contoh
PUT KVM dengan literal
Ketika dijalankan, kebijakan berikut akan membuat KVM terenkripsi yang bernama
FooKVM
, lalu membuat kunci bernama FooKey_1
dengan
dua nilai yang ditetapkan dengan string literal foo
dan bar
(not set dengan nilai yang diekstrak dari variabel). Jika Anda
GET
kunci dalam contoh berikutnya, Anda menentukan nomor indeks
untuk mengambil nilai yang Anda inginkan.
<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>
Perhatikan bahwa cakupannya adalah "environment". Itu berarti Anda dapat melihat KVM di bagian manajemen UI di bagian APIs > Konfigurasi Lingkungan > Peta Nilai Kunci. KVM yang ditampilkan di halaman tersebut mencakup semua lingkungan yang dipilih.
MENDAPATKAN KVM dari literal
Kebijakan ini melihat peta FooKVM
dari contoh sebelumnya, mendapatkan
nilai kedua (index="2") dari kunci FooKey_1
, dan menyimpannya dalam variabel
disebut 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 dengan variabel
Contoh sederhana peta nilai kunci yang berguna adalah layanan pemendekan URL. Peta nilai kunci dapat dikonfigurasi untuk menyimpan URL singkat beserta URL lengkap yang sesuai.
Contoh kebijakan ini membuat peta nilai kunci. Kebijakan PUT kunci dengan dua nilai terkait ke peta kunci/nilai bernama "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>
Kunci dalam contoh ini, urlencoding.requesturl.hashed
, adalah contoh
variabel kustom. URL permintaan yang di-hash akan dibuat oleh kode (JavaScript atau Java, untuk
misalnya) lalu disimpan dalam variabel ini, tempat kebijakan KeyValueMapOperations dapat mengakses
anotasi.
Untuk setiap kunci, requesturl.hashed
, ada dua nilai yang disimpan:
- Konten variabel khusus bernama
urlencoding.longurl.encoded
- Konten variabel yang telah ditetapkan
request.queryparam.url
Misalnya, jika kebijakan dieksekusi pada runtime, nilai variabel mungkin sebagai berikut ini:
urlencoding.requesturl.hashed: ed24e12820f2f900ae383b7cc4f2b31c402db1be
urlencoding.longurl.encoded: http://tinyurl.com/38lwmlr
request.queryparam.url: http://apigee.com
Peta kunci/nilai dan entri berikut akan dibuat di penyimpanan kunci/nilai Edge dan yang dicakupkan ke proxy API tempat kebijakan dilampirkan:
{ "entry" :[ { "name" : "ed24e12820f2f900ae383b7cc4f2b31c402db1be", "value" : "http://tinyurl.com/38lwmlr,http://apigee.com" } ], "name" : "urlMapper" }
Entri akan tetap ada hingga dihapus. Entri penyimpanan kunci/nilai didistribusikan di instance Edge yang menjalankan cloud.
MENDAPATKAN KVM dari variabel
Contoh sederhana peta nilai kunci yang berguna adalah 'pemendekan' URL layanan. Peta nilai kunci dapat dikonfigurasi untuk menyimpan URL singkat beserta URL lengkap yang sesuai.
Untuk mengambil nilai entri peta kunci/nilai, seperti yang dibahas pada Tab PUT KeyValueMapOperations, konfigurasi kebijakan untuk MENDAPATKAN peta nilai kunci:
<KeyValueMapOperations name="getUrl" mapIdentifier="urlMapper"> <Scope>apiproxy</Scope> <Get assignTo="urlencoding.shorturl" index='1'> <Key> <Parameter ref="urlencoding.requesturl.hashed"/> </Key> </Get> </KeyValueMapOperations>
Saat kebijakan ini dijalankan, jika nilai
Variabel urlencoding.requesturl.hashed
adalah
ed24e12820f2f900ae383b7cc4f2b31c402db1be
, lalu variabel kustom bernama
urlencoding.shorturl
akan ditetapkan dengan nilai
http://tinyurl.com/38lwmlr
.
Setelah data diambil, kebijakan dan kode lain dapat mengaksesnya dengan mengekstrak nilai dari variabel-variabel tersebut.
GET nilai terenkripsi dari KVM
Jika peta nilai kunci dienkripsi, ambil nilai menggunakan "private.
"
di nilai atribut assignTo
. Dalam contoh ini, variabel
private.encryptedVar
menyimpan nilai yang didekripsi dari peta nilai kunci
Tombol foo
. Untuk informasi tentang pembuatan peta nilai kunci terenkripsi, lihat dokumentasi "create"
topik Peta Kunci/Nilai
Google Cloud Management API.
<KeyValueMapOperations name="getEncrypted" mapIdentifier="encrypted_map"> <Scope>apiproxy</Scope> <Get assignTo="private.encryptedVar" index='1'> <Key> <Parameter>foo</Parameter> </Key> </Get> </KeyValueMapOperations>
Setelah data diambil, kebijakan dan kode lain dapat mengaksesnya dengan mengekstrak nilai dari variabel tersebut.
Referensi elemen
Referensi elemen menjelaskan elemen dan atribut KeyValueMapOperations kebijakan:
<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> atribut
Contoh berikut menunjukkan atribut pada tag <KeyValueMapOperations>
:
<KeyValueMapOperations async="false" continueOnError="false" enabled="true" name="Key-Value-Map-Operations-1" mapIdentifier="map_name">
Tabel berikut menjelaskan atribut khusus untuk tag <KeyValueMapOperations>
:
Atribut | Deskripsi | Default | Ketersediaan |
---|---|---|---|
mapIdentifier |
Menentukan ID yang akan digunakan saat mengakses peta yang dibuat oleh entitas ini kebijakan atau di UI pengelolaan. Nama KVM peka huruf besar/kecil dengan Apigee Edge for Public Cloud.
Misalnya, Jika Anda mengecualikan atribut ini, KVM bernama Dalam cakupan organisasi/environment/apiproxy, Anda dapat menggunakan
Atribut |
T/A | Opsional |
Tabel berikut menjelaskan atribut yang umum untuk semua elemen induk kebijakan:
Atribut | Deskripsi | Default | Ketersediaan |
---|---|---|---|
name |
Nama internal kebijakan. Nilai atribut Secara opsional, gunakan elemen |
T/A | Wajib |
continueOnError |
Tetapkan ke Setel ke |
salah | Opsional |
enabled |
Setel ke Setel ke |
true | Opsional |
async |
Atribut ini tidak digunakan lagi. |
salah | Tidak digunakan lagi |
<DisplayName> elemen
Gunakan selain atribut name
untuk memberi label kebijakan di
editor proxy UI dengan nama natural language yang berbeda.
<DisplayName>Policy Display Name</DisplayName>
Default |
T/A Jika Anda menghapus elemen ini, nilai atribut |
---|---|
Ketersediaan | Opsional |
Jenis | String |
<Delete> elemen
Menghapus key-value pair yang ditentukan. Setidaknya salah satu dari <Get>
,
<Put>
, atau <Delete>
harus digunakan.
Pastikan untuk menentukan nama KVM dengan atribut mapIdentifier
pada elemen induk. Contoh:
<Delete> <Key> <Parameter>key_name_literal</Parameter> </Key> </Delete>
Default | T/A |
---|---|
Ketersediaan | Wajib diisi jika <Get> atau <Put> tidak ada. |
Jenis | T/A |
<Entry> elemen
Nilai seed untuk peta nilai kunci, yang diisi di peta nilai kunci saat diinisialisasi.
Untuk Edge for Public Cloud, ukuran kunci dibatasi hingga 2 KB. Contoh:
<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>
Default | T/A |
---|---|
Ketersediaan | Opsional |
Jenis | T/A |
<ExclusiveCache> elemen
Tidak digunakan lagi. Sebagai gantinya, gunakan elemen <Scope>
.
<ExpiryTimeInSecs> elemen
Menentukan durasi dalam detik setelah Edge memperbarui nilai yang di-cache dari yang ditentukan.
Nilai 0 atau -1, atau tidak termasuk elemen ini, berarti nilai {i>default<i} 300 detik adalah data Contoh:
<ExpiryTimeInSecs>600</ExpiryTimeInSecs>
Default | 300 (5 menit) |
---|---|
Ketersediaan | Opsional |
Jenis | Bilangan Bulat |
KVM adalah mekanisme persistensi jangka panjang yang menyimpan kunci dan nilai dalam database NoSQL. Karena itu, membaca dari KVM saat runtime berpotensi memperlambat performa proxy. Untuk meningkatkan , Edge memiliki mekanisme bawaan untuk menyimpan cache kunci/nilai KVM dalam memori selama runtime. Kebijakan Operasi KVM ini selalu membaca dari cache untuk operasi GET.
Elemen <ExpiryTimeInSecs>
memungkinkan Anda mengontrol durasi kunci/nilai
yang digunakan dalam kebijakan disimpan di {i>
cache<i} sebelum disegarkan kembali dari KVM. Namun,
ada beberapa perbedaan antara bagaimana operasi GET dan PUT memengaruhi akhir masa berlaku cache.
GET - Saat pertama kali operasi GET KVM dijalankan, permintaan
kunci/nilai dari KVM (yang namanya ditentukan dalam root kebijakan mapIdentifier
) dimuat ke dalam cache, di mana mereka tetap ada untuk operasi GET berikutnya hingga salah satu
hal berikut akan terjadi:
- Jumlah detik yang ditentukan dalam
<ExpiryTimeInSecs>
berakhir.
atau - Operasi PUT dalam kebijakan KVM menimpa nilai yang ada (dijelaskan selanjutnya).
PUT - Operasi PUT menulis kunci/nilai ke KVM yang ditentukan. Jika PUT
menulis ke kunci yang sudah ada dalam cache, cache tersebut segera diperbarui dan menyimpan
nilai baru untuk jumlah detik yang ditentukan dalam
Elemen <ExpiryTimeInSecs>
.
Contoh - Menyimpan KVM ke dalam cache
- Operasi GET mengambil nilai "rating", yang menambahkan
nilai "10" yang ingin di-cache. Tujuan
<ExpiryTimeInSecs>
pada kebijakan adalah 60. - 30 detik kemudian, kebijakan GET dijalankan lagi dan mengambil "10" dari cache.
- 5 detik kemudian, kebijakan PUT memperbarui nilai "rating" ke "8", dan
<ExpiryTimeInSecs>
pada kebijakan PUT adalah 20. Cache segera diperbarui dengan nilai baru, yang kini disetel untuk tetap berada dalam cache selama 20 detik. (Jika PUT tidak terjadi, cache yang awalnya diisi oleh GET pertama akan tetap ada untuk 30 detik, tersisa dari 60 detik sebelumnya.) - 15 detik kemudian, GET lainnya dieksekusi dan mengambil nilai "8".
<Get> elemen
Mengambil nilai untuk kunci yang ditentukan. Setidaknya salah satu dari <Get>
,
<Put>
, atau <Delete>
harus digunakan.
Pastikan untuk menentukan nama KVM dengan atribut mapIdentifier
pada
elemen induk.
Anda dapat menyertakan beberapa pemblokiran Get
dalam kebijakan untuk mengambil beberapa item
dari KVM.
Default | T/A |
---|---|
Ketersediaan | Wajib ada jika <Put> atau <Delete> tidak
saat ini. |
Jenis | T/A |
Mendapatkan satu item dari KVM
<Get assignTo="myvar" index="1"> <Key> <Parameter>key_name_literal</Parameter> </Key> </Get>
Mendapatkan beberapa item dari KVM
Pada contoh berikut, asumsikan KVM dengan kunci dan nilai berikut. Selain itu hingga menyimpan daftar film paling populer sepanjang masa, toko KVM nama sutradara untuk semua film besar.
Kunci | Nilai |
---|---|
top_movies | Princess Bride,Sang Dewa,Citizen Kane |
Warga Negara Kane | Sumur Orson |
Pengantin Putri | Rob{i> <i}Reiner |
The Godfather | Francis Ford Coppola |
Berikut adalah konfigurasi kebijakan KVM yang dapat digunakan untuk mengambil film terpopuler saat ini dan nama direkturnya:
<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>
Saat proxy API dipanggil, Edge akan membuat kode variabel yang dapat Anda gunakan dalam alur proxy API:
top.movie.pick=Princess Bride
movie.director=Rob Reiner
Atribut
Tabel berikut menjelaskan atribut elemen <Get>
:
Atribut | Deskripsi | Default | Ketersediaan |
---|---|---|---|
assignTo |
Variabel yang harus diberi nilai yang diambil. Jika peta nilai kunci dienkripsi, mulai tetapkan nama assignTo dengan
" <Get assignTo="private.myvar"> Kebijakan ini akan menampilkan error jika Anda mencoba mengambil peta nilai kunci yang dienkripsi tanpa menggunakan awalan. Awalan, yang diperlukan untuk tujuan keamanan dasar selama proses debug, menyembunyikan nilai terenkripsi dari Trace proxy API dan sesi debug. Untuk informasi tentang pembuatan peta nilai kunci terenkripsi, lihat dokumentasi "create" topik dari Pengelolaan Maps Kunci/Nilai API dan Membuat dan mengedit peta nilai kunci lingkungan. |
T/A | Wajib |
indeks |
Nomor indeks (dalam indeks berbasis 1) item yang akan diambil dari kunci multi-nilai.
Misalnya, menentukan Sebagai contoh, lihat dokumentasi "Mendapatkan Nilai Terenkripsi dari KVM" di Sample. |
T/A | Opsional |
<InitialEntries> elemen
Nilai seed untuk peta nilai kunci, yang diisi dalam peta nilai kunci saat diinisialisasi.
Pastikan untuk menentukan nama KVM dengan atribut mapIdentifier
di
elemen induk. misalnya:
<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>
Saat menggunakan elemen ini, saat Anda menyimpan kebijakan di UI pengelolaan pada versi yang di-deploy proxy, atau terapkan paket proxy API yang berisi kebijakan dengan elemen ini, kunci otomatis dibuat di KVM (sebagai tidak dienkripsi). Jika nilai dalam kebijakan berbeda daripada nilai-nilai dalam KVM, nilai-nilai dalam KVM akan ditimpa ketika proxy di-deploy. Apa saja kunci/nilai baru ditambahkan ke KVM yang ada bersama dengan kunci/nilai yang ada.
Kunci dan nilai yang diisi oleh elemen ini harus berupa literal. Misalnya, <Parameter
ref="request.queryparam.key">
tidak didukung dalam elemen ini.
Ukuran kunci dibatasi hingga 2 KB bagi Edge untuk Public Cloud dan Edge untuk Pribadi Bisa. Nilai KVM dibatasi hingga 2 KB.
Untuk membuat KVM terenkripsi, gunakan Key/Value Maps Management API.
Default | T/A |
---|---|
Ketersediaan | Opsional |
Jenis | T/A |
<Key> elemen
Menentukan kunci dalam entri peta kunci/nilai. Sebuah kunci dapat berupa komposit, yang berarti bahwa lebih dari
satu parameter dapat ditambahkan untuk membuat kunci. Misalnya, userID
dan
role
mungkin digabungkan untuk membuat key
. Contoh:
<Key> <Parameter>key_name_literal</Parameter> </Key>
Pastikan untuk melihat elemen <Parameter> untuk informasi spesifik tentang cara tetapkan nama kunci.
Dengan Edge for Public Cloud, ukuran kunci dibatasi hingga 2 KB. Lihat Perbedaan antara Edge untuk Public Cloud API dan Private Cloud API untuk mengetahui lebih lanjut.
Default | T/A |
---|---|
Ketersediaan | Opsional |
Jenis | T/A |
<Parameter> elemen
Menentukan kunci dalam pasangan kunci/nilai. Elemen ini menentukan nama saat membuat, menempatkan, mengambil, atau menghapus pasangan nilai kunci.
Anda dapat menetapkan nama dengan menggunakan:
-
String literal
<Key> <Parameter>literal</Parameter> </Key>
-
Variabel yang akan diambil pada waktu proses, menggunakan atribut
ref
<Key> <Parameter ref="variable_name"/> </Key>
-
Kombinasi dari referensi literal dan variabel
<Key> <Parameter>targeturl</Parameter> <Parameter ref="apiproxy.name"/> <Parameter>weight</Parameter> </Key>
Ketika elemen Key mencakup beberapa elemen Parameter, string kunci yang efektif adalah
gabungan nilai dari setiap parameter, digabungkan dengan garis bawah ganda. Misalnya, di
contoh di atas, jika variabel apiproxy.name
memiliki nilai "abc1", maka
kunci efektif adalah targeturl__abc1__weight
.
Baik Anda mendapatkan, memperbarui, atau menghapus entri kunci/nilai, nama kunci harus cocok dengan nama kunci pada peta nilai kunci. Lihat Menentukan dan mengambil nama kunci untuk panduan.
Default | T/A |
---|---|
Ketersediaan | Wajib |
Jenis | String |
Atribut
Tabel berikut menjelaskan atribut elemen <Parameter>
:
Atribut | Deskripsi | Default | Ketersediaan |
---|---|---|---|
referensi | Menentukan nama variabel yang nilainya berisi nama persis dari kunci yang Anda buat, dapatkan, atau hapus. | T/A | Wajib diisi jika tidak ada nilai literal yang diberikan antara pembukaan dan tag penutup. Dilarang jika nilai literal diberikan. |
<Put> elemen
Menulis pasangan kunci/nilai ke peta nilai kunci, baik peta nilai kunci dienkripsi maupun
tidak dienkripsi. Jika peta nilai kunci ditentukan dalam atribut mapIdentifier
di
elemen induk tidak ada, peta akan otomatis dibuat (sebagai tidak dienkripsi). Jika nilai kunci
peta sudah ada, kunci/nilai ditambahkan ke dalamnya.
Untuk membuat peta nilai kunci terenkripsi, gunakan Key/Value Maps management API; atau lihat Membuat dan mengedit peta nilai kunci lingkungan untuk membuat KVM terenkripsi dengan cakupan lingkungan di UI.
<Put override="false"> <Key> <Parameter ref="mykeyvar"/> </Key> <Value ref="myvalvar1"/> </Put>
Default | T/A |
---|---|
Ketersediaan | Wajib ada jika <Get> atau <Delete> tidak
saat ini. |
Jenis | T/A |
Atribut
Tabel berikut menjelaskan atribut elemen <Put>
:
Atribut | Deskripsi | Default | Ketersediaan |
---|---|---|---|
penggantian |
Jika ditetapkan ke |
false |
Opsional |
<Scope> elemen
Mendefinisikan batas aksesibilitas untuk peta nilai kunci. Cakupan default-nya adalah
environment
, artinya, secara default, entri peta digunakan bersama oleh semua proxy API
yang berjalan di suatu lingkungan (misalnya, uji atau produksi). Jika Anda mengatur
ruang lingkup ke
apiproxy
, maka entri dalam peta nilai kunci hanya dapat diakses oleh proxy API yang
menulis nilai ke peta.
Perhatikan bahwa saat mengakses entri peta atau peta, Anda harus menentukan nilai cakupan yang sama dengan yang Anda gunakan
saat peta dibuat. Misalnya, jika peta dibuat dengan cakupan
apiproxy
, Anda harus menggunakan cakupan apiproxy
saat mengambil nilainya,
membuat perubahan, atau
menghapus entri.
<Scope>environment</Scope>
Default | environment |
---|---|
Ketersediaan | Opsional |
Jenis | String |
Nilai valid: |
|
<Value> elemen
Menentukan nilai kunci. Anda dapat menentukan nilai sebagai string literal atau, menggunakan
atribut ref
, sebagai variabel yang akan diambil pada waktu proses:
<!-- Specify a literal value --> <Value>literal<Value>
atau:
<!-- Specify the name of variable value to be populated at run time. --> <Value ref="variable_name"/>
Anda juga dapat menyertakan beberapa elemen <Value>
untuk menentukan multi-bagian
dengan sejumlah nilai. Nilai digabungkan pada waktu proses.
Dua kunci ditambahkan ke KVM berikut ini:
- Kunci
k1
dengan nilaiv1,v2
- Kunci
k2
dengan nilaiv3,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>
Dalam contoh berikut, satu kunci dibuat dengan dua nilai. Mari kita asumsikan
namanya adalah foo_org
, nama proxy API adalah bar
, dan lingkungannya
test
:
- Kunci
foo_org
dengan nilaibar,test
<Put> <Key> <Parameter ref="organization.name"/> </Key> <Value ref="apiproxy.name"/> <Value ref="environment.name"/> </Put>
Default | T/A |
---|---|
Ketersediaan | Wajib |
Jenis | String |
Atribut
Tabel berikut menjelaskan atribut elemen <Value>
:
Atribut | Deskripsi | Default | Ketersediaan |
---|---|---|---|
referensi | Menentukan nama variabel yang nilainya berisi nilai kunci yang ingin Anda atur. | T/A | Wajib diisi jika tidak ada nilai literal yang diberikan antara pembukaan dan tag penutup. Dilarang jika nilai literal diberikan. |
Referensi error
Error yang ditampilkan dari kebijakan Edge mengikuti format yang konsisten seperti yang dijelaskan dalam Referensi kode error.
This section describes the fault codes and error messages that are returned and fault variables that are set by Edge when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults.
Runtime errors
These errors can occur when the policy executes.
Fault code | HTTP status | Cause | Fix |
---|---|---|---|
steps.keyvaluemapoperations.SetVariableFailed |
500 |
This error occurs if you try to retrieve a value from an encrypted key value map and set
the value to a variable whose name does not have the prefix |
build |
steps.keyvaluemapoperations.UnsupportedOperationException |
500 |
This error occurs if the |
build |
Deployment errors
These errors can occur when you deploy a proxy containing this policy.
Error name | Cause | Fix |
---|---|---|
InvalidIndex |
If the index attribute specified in the <Get> element of Key Value Map Operations policy is
zero or a negative number, then the deployment of the API proxy fails. The index starts from
1 , so an index of zero or negative integer is considered as invalid.
|
build |
KeyIsMissing |
This error occurs if the <Key> element is completely missing or <Parameter> element is
missing within <Key> element underneath the <Entry> of the <InitialEntries> element
of the Key Value Map Operations policy.
|
build |
ValueIsMissing |
This error occurs if the <Value> element is missing underneath the <Entry> element of
the <InitialEntries> element of the Key Value Map Operations policy. |
build |
Skema
Catatan penggunaan
Untuk ringkasan peta nilai kunci, lihat Menggunakan peta nilai kunci.
Penyimpanan peta nilai kunci menyediakan mekanisme persistensi yang ringan untuk data yang diformat sebagai
pasangan nilai kunci/nilai. Anda dapat mengaksesnya saat runtime melalui kebijakan atau kode. Peta berisi
data arbitrer dalam format key=value
.
Misalnya localhost=127.0.0.1
, zip_code=94110
, atau
first_name=felix
. Dalam contoh pertama, localhost
adalah key, dan
127.0.0.1
adalah nilai. Setiap key-value pair disimpan sebagai entri di kunci
peta nilai. Peta nilai kunci dapat menyimpan banyak entri.
Berikut adalah contoh penggunaan peta nilai kunci. Misalkan Anda perlu menyimpan daftar alamat IP
yang terkait dengan berbagai backend
lingkungan fleksibel App Engine. Anda dapat membuat peta nilai kunci bernama ipAddresses
yang berisi
daftar pasangan kunci/nilai sebagai entri. Misalnya, JSON ini dapat merepresentasikan peta tersebut:
{ "entry" : [ { "name" : "Development", "value" : "65.87.18.18" }, { "name" : "Staging", "value" : "65.87.18.22" } ], "name" : "ipAddresses" }
Anda dapat menggunakan struktur ini untuk membuat penyimpanan alamat IP yang dapat digunakan oleh kebijakan saat runtime untuk menerapkan daftar yang diizinkan atau ditolak IP, untuk memilih target backend secara dinamis dan sebagainya. Biasanya, kebijakan KeyValueMapOperations digunakan untuk menyimpan atau mengambil informasi berumur panjang yang perlu digunakan kembali pada beberapa transaksi permintaan/respons.
Peta kunci/nilai dapat dimanipulasi melalui kebijakan KeyValueMapOperations, atau secara langsung melalui API pengelolaan Apigee Edge. Lihat referensi API pengelolaan untuk mengetahui detail tentang API peta nilai/kunci organisasi. Anda dapat menggunakan API ini untuk misalnya, mengupload set data besar ke penyimpanan kunci/nilai, atau membuat skrip untuk mengelola kunci/nilai entri peta. Anda harus membuat peta kunci/nilai dengan API sebelum mengaksesnya dengan Kebijakan KeyValueMapOperations.
Menetapkan dan mengambil nama kunci
Dengan elemen <Parameter>
dan <Value>
, Anda dapat
tentukan nilai literal (dengan nilai di antara tag pembuka dan penutup) atau gunakan
atribut ref
untuk menentukan nama variabel yang nilainya harus digunakan
waktu beroperasi.
Elemen Parameter layak disebutkan secara khusus, karena menentukan nama kunci yang dibuat, serta nama kunci yang ingin Anda ambil atau hapus. Berikut adalah dua contoh. Yang pertama menentukan nama kunci secara harfiah, dan yang kedua menentukan nama kunci menggunakan variabel. Mari asumsikan hal berikut ini digunakan untuk membuat kunci di KVM:
<Parameter>key_name_literal</Parameter> <Parameter ref="key.name.variable"/>
Pada contoh pertama, nilai literal "key_name_literal" disimpan di KVM sebagai kunci
nama. Pada instance kedua, nilai apa pun yang ada dalam key.name.variable
akan menjadi
nama kunci dalam KVM. Misalnya, jika key.name.variable
berisi
nilai foo
, kuncinya akan diberi nama "foo".
Saat Anda ingin mengambil kunci dan nilai kunci dengan operasi GET (atau hapus dengan
DELETE), <Parameter> harus sesuai dengan
nama kunci di KVM. Sebagai
jika nama kunci dalam KVM adalah "{i>foo<i}, Anda dapat menentukan nilai literal dengan
<Parameter>foo</Parameter>
atau tentukan variabel yang berisi variabel yang tepat
"foo", seperti ini: <Parameter ref="variable.containing.foo"/>
.