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 ada dengan mengonfigurasi kebijakan KeyValueMapOperations yang menentukan operasi PUT, GET, atau DELETE. (Setidaknya salah satu operasi ini harus dilakukan oleh kebijakan.)
Video
Tonton video berikut untuk mempelajari KVM lebih lanjut.
Video | Deskripsi |
---|---|
Mengapa Maps Nilai Utama? | Pelajari alasan Anda memerlukan KVM dan cara kerjanya. |
Membuat KVM menggunakan UI dan mengambil KVM saat runtime | Buat KVM, ambil nilainya menggunakan kebijakan KVM, dan masukkan nilai tersebut ke dalam permintaan API menggunakan variabel alur. |
Membuat dan mengupdate KVM di runtime API | Membuat KVM pada runtime API menggunakan kebijakan KVM. |
Meng-cache KVM untuk meningkatkan performa | Tingkatkan performa Kebijakan KVM dengan meng-cache data. |
KVM terenkripsi di toko | Simpan informasi sensitif di KVM dalam format terenkripsi dan ambil nilainya saat runtime menggunakan kebijakan KVM dan variabel pribadi. |
Mengelola akses menggunakan cakupan KVM | Batasi KVM ke organisasi, lingkungan, proxy API, atau revisi proxy API menggunakan atribut cakupan kebijakan KVM. |
Menghapus entri KVM pada runtime API | Menghapus entri KVM pada runtime API menggunakan operasi DELETE kebijakan KVM. |
Contoh
PUT KVM dengan literal
Saat dijalankan, kebijakan berikut akan membuat KVM terenkripsi bernama
FooKVM
, lalu membuat kunci bernama FooKey_1
dengan
dua nilai yang ditetapkan dengan string literal foo
dan bar
(tidak ditetapkan dengan nilai yang diekstrak dari variabel). Ketika GET
kunci pada 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 ruang lingkupnya adalah "lingkungan". Artinya, Anda dapat melihat KVM di UI pengelolaan di bagian APIs > Environment Configuration > Key Value Maps. KVM yang ditampilkan di halaman tersebut semuanya tercakup dalam 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 yang 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 dari peta nilai kunci yang berguna adalah layanan penyingkat URL. Peta nilai kunci dapat dikonfigurasi untuk menyimpan URL yang disingkat beserta URL lengkap yang sesuai.
Contoh kebijakan ini membuat peta nilai kunci. Kebijakan ini MENYIMPANKAN kunci dengan dua nilai terkait ke dalam 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 dihasilkan oleh kode (misalnya JavaScript atau Java) lalu disimpan dalam variabel ini, tempat kebijakan KeyValueMapOperations dapat mengaksesnya.
Dua nilai akan disimpan untuk setiap kunci requesturl.hashed
:
- Konten variabel kustom bernama
urlencoding.longurl.encoded
- Konten variabel standar
request.queryparam.url
Misalnya, jika kebijakan dijalankan pada waktu proses, nilai variabelnya mungkin sebagai berikut:
urlencoding.requesturl.hashed: ed24e12820f2f900ae383b7cc4f2b31c402db1be
urlencoding.longurl.encoded: http://tinyurl.com/38lwmlr
request.queryparam.url: http://apigee.com
Peta dan entri kunci/nilai berikut akan dibuat di penyimpanan kunci/nilai Edge dan dicakupkan ke proxy API yang terkait dengan kebijakan:
{ "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 seluruh instance Edge yang menjalankan cloud.
MENDAPATKAN KVM dari variabel
Contoh sederhana dari peta nilai kunci yang berguna adalah layanan 'mempersingkat' URL. Peta nilai kunci dapat dikonfigurasi untuk menyimpan URL yang disingkat beserta URL lengkap yang sesuai.
Untuk mengambil nilai entri peta kunci/nilai, seperti yang dicakup pada tab KeyValueMapOperations PUT, konfigurasikan 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
, 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 tersebut.
DAPATKAN nilai terenkripsi dari KVM
Jika peta nilai kunci dienkripsi, ambil nilai menggunakan awalan "private.
" dalam nilai atribut assignTo
. Dalam contoh ini, variabel private.encryptedVar
menyimpan nilai yang didekripsi dari kunci foo
peta nilai kunci. Untuk informasi tentang cara membuat peta nilai kunci terenkripsi, lihat topik "buat" pada API pengelolaan Key/Value Maps.
<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 kebijakan 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>
Atribut <KeyValueMapOperations>
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 kebijakan ini atau di UI pengelolaan. Nama KVM peka huruf besar/kecil dengan Apigee Edge untuk Cloud Publik.
Misalnya, Jika Anda mengecualikan atribut ini, KVM yang bernama Dalam cakupan organisasi/lingkungan/apiproxy, Anda dapat menggunakan atribut |
T/A | Opsional |
Tabel berikut menjelaskan atribut yang sama untuk semua elemen induk kebijakan:
Atribut | Deskripsi | Default | Ketersediaan |
---|---|---|---|
name |
Nama internal kebijakan. Nilai atribut Atau, gunakan elemen |
T/A | Wajib |
continueOnError |
Setel ke Setel ke |
false | Opsional |
enabled |
Setel ke Setel ke |
true | Opsional |
async |
Atribut ini sudah tidak digunakan lagi. |
false | Tidak digunakan lagi |
Elemen <DisplayName>
Gunakan selain atribut name
untuk memberi label kebijakan di
editor proxy UI pengelolaan 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 |
Elemen <Delete>
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 jika <Get> atau <Put> tidak ada. |
Jenis | T/A |
Elemen <Entry>
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 |
Elemen <ExclusiveCache>
Tidak digunakan lagi. Sebagai gantinya, gunakan elemen <Scope>
.
Elemen <ExpiryTimeInSecs>
Menentukan durasi dalam detik setelah Edge memperbarui nilai yang tersimpan dalam cache dari KVM yang ditentukan.
Nilai 0 atau -1, atau mengecualikan elemen ini, berarti nilai default 300 detik digunakan. 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 performa, Edge memiliki mekanisme bawaan untuk meng-cache kunci/nilai KVM dalam memori selama runtime. Kebijakan Operasi KVM ini selalu membaca dari cache untuk operasi GET.
Elemen <ExpiryTimeInSecs>
memungkinkan Anda mengontrol berapa lama kunci/nilai
yang digunakan dalam kebijakan disimpan dalam cache sebelum di-refresh kembali dari KVM. Namun, ada beberapa perbedaan antara cara operasi GET dan PUT memengaruhi masa berlaku cache.
GET - Saat pertama kali operasi GET KVM dieksekusi, kunci/nilai
yang diminta dari KVM (yang namanya ditentukan dalam atribut mapIdentifier
root
kebijakan) akan dimuat ke dalam cache, tempat kunci/nilai tersebut tetap berada untuk operasi GET berikutnya hingga salah satu dari
hal berikut terjadi:
- Jumlah detik yang ditentukan dalam
<ExpiryTimeInSecs>
akan 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
melakukan operasi tulis ke kunci yang sudah ada dalam cache, cache tersebut akan langsung dimuat ulang dan sekarang menyimpan
nilai baru selama jumlah detik yang ditentukan dalam elemen
<ExpiryTimeInSecs>
kebijakan.
Contoh - Menyimpan cache KVM
- Operasi GET mengambil nilai "rating", yang menambahkan nilai "10" ke cache.
<ExpiryTimeInSecs>
pada kebijakan adalah 60. - 30 detik kemudian, kebijakan GET dijalankan kembali dan mengambil "10" dari cache.
- 5 detik kemudian, kebijakan PUT akan memperbarui nilai "rating" menjadi "8", dan
<ExpiryTimeInSecs>
pada kebijakan PUT adalah 20. Cache akan langsung diperbarui dengan nilai baru, yang kini disetel agar tetap berada dalam cache selama 20 detik. (Jika PUT tidak terjadi, cache yang awalnya diisi oleh GET pertama akan tetap ada selama 30 detik berikutnya, yang tersisa dari 60 detik yang asli.) - 15 detik kemudian, GET lain dieksekusi dan mengambil nilai "8".
Elemen <Get>
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 blok Get
dalam kebijakan untuk mengambil beberapa item
dari KVM.
Default | T/A |
---|---|
Ketersediaan | Wajib jika <Put> atau <Delete> tidak ada. |
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 menyimpan daftar berjalan dari film paling populer sepanjang masa, KVM menyimpan nama sutradara untuk semua film besar.
Kunci | Nilai |
---|---|
top_movies | Pengantin Putri,Bapak Bapak,Warga Kane |
Kane Warga Negara | Sumur Orson |
Pengantin Perempuan Putri | Rob Reiner |
Sang Bapak | Francis Ford Coppola |
Berikut adalah konfigurasi kebijakan KVM yang dapat kita gunakan untuk mengambil film paling populer saat ini dan nama sutradaranya:
<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 variabel berikut 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 akan menetapkan nilai yang diambil. Jika peta nilai kunci dienkripsi, awali nama assignTo dengan " <Get assignTo="private.myvar"> Kebijakan ini akan menampilkan error jika Anda mencoba mengambil peta nilai kunci terenkripsi tanpa menggunakan awalan. Awalan yang diperlukan untuk tujuan keamanan dasar selama proses debug menyembunyikan nilai terenkripsi dari sesi Trace dan debug proxy API. Untuk informasi tentang cara membuat peta nilai kunci terenkripsi, lihat topik "membuat" API pengelolaan Key/Value Maps dan Membuat dan mengedit peta nilai kunci lingkungan. |
T/A | Wajib |
index |
Nomor indeks (dalam indeks berbasis 1) item yang akan diambil dari kunci multi-nilai.
Misalnya, menentukan Sebagai contoh, lihat tab "Get Encrypted Value from KVM" di Samples. |
T/A | Opsional |
Elemen <InitialEntries>
Nilai awal untuk peta nilai kunci, yang diisi di peta nilai kunci saat diinisialisasi.
Pastikan untuk menentukan nama KVM dengan atribut mapIdentifier
pada
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>
Ketika menggunakan elemen ini, ketika Anda menyimpan kebijakan di UI pengelolaan pada versi proxy yang di-deploy, atau men-deploy paket proxy API yang berisi kebijakan dengan elemen ini, kunci akan otomatis dibuat di KVM (sebagai tidak dienkripsi). Jika nilai dalam kebijakan berbeda dengan nilai di KVM, nilai dalam KVM akan ditimpa saat proxy di-deploy. Setiap kunci/nilai baru ditambahkan ke KVM yang ada bersama dengan kunci/nilai yang ada.
Kunci dan nilai yang diisi oleh elemen ini harus literal. Misalnya, <Parameter
ref="request.queryparam.key">
tidak didukung dalam elemen ini.
Ukuran kunci dibatasi hingga 2 KB untuk Edge untuk Cloud Publik dan Edge untuk Private Business. Nilai KVM dibatasi hingga 2 KB.
Untuk membuat KVM terenkripsi, gunakan Key/Value Maps management API.
Default | T/A |
---|---|
Ketersediaan | Opsional |
Jenis | T/A |
Elemen <Key>
Menentukan kunci dalam entri peta kunci/nilai. Kunci dapat bersifat gabungan, artinya lebih dari satu parameter dapat ditambahkan untuk membuat kunci. Misalnya, userID
dan
role
dapat digabungkan untuk membuat key
. Contoh:
<Key> <Parameter>key_name_literal</Parameter> </Key>
Pastikan Anda melihat elemen <Parameter> untuk mengetahui hal-hal spesifik tentang cara menetapkan 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 informasi selengkapnya.
Default | T/A |
---|---|
Ketersediaan | Opsional |
Jenis | T/A |
Elemen <Parameter>
Menentukan kunci dalam key-value pair. Elemen ini menentukan nama saat membuat, menempatkan, mengambil, atau menghapus key-value pair.
Anda dapat menentukan nama menggunakan:
-
Sebuah {i>string<i} literal
<Key> <Parameter>literal</Parameter> </Key>
-
Variabel yang akan diambil pada waktu proses, menggunakan atribut
ref
<Key> <Parameter ref="variable_name"/> </Key>
-
Kombinasi literal dan referensi variabel
<Key> <Parameter>targeturl</Parameter> <Parameter ref="apiproxy.name"/> <Parameter>weight</Parameter> </Key>
Jika elemen Kunci menyertakan beberapa elemen Parameter, string kunci yang efektif adalah penyambungan nilai setiap parameter, yang digabungkan dengan garis bawah ganda. Misalnya, dalam contoh di atas, jika variabel apiproxy.name
memiliki nilai "abc1", kunci yang efektif adalah targeturl__abc1__weight
.
Baik Anda mendapatkan, memperbarui, atau menghapus entri kunci/nilai, nama kunci harus cocok dengan nama kunci dalam 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 kunci yang ingin Anda buat, dapatkan, atau hapus. | T/A | Wajib jika tidak ada nilai literal yang diberikan antara tag pembuka dan penutup. Dilarang jika nilai literal diberikan. |
Elemen <Put>
Menulis key-value pair ke peta nilai kunci, baik peta nilai kunci dienkripsi maupun tidak. Jika peta nilai kunci yang ditentukan dalam atribut mapIdentifier
pada elemen induk tidak ada, peta akan otomatis dibuat (sebagai tidak dienkripsi). Jika peta nilai kunci sudah ada, kunci/nilai tersebut akan 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 cakupan lingkungan terenkripsi di UI.
<Put override="false"> <Key> <Parameter ref="mykeyvar"/> </Key> <Value ref="myvalvar1"/> </Put>
Default | T/A |
---|---|
Ketersediaan | Wajib jika <Get> atau <Delete> tidak ada. |
Jenis | T/A |
Atribut
Tabel berikut menjelaskan atribut elemen <Put>
:
Atribut | Deskripsi | Default | Ketersediaan |
---|---|---|---|
penggantian |
Jika ditetapkan ke |
false |
Opsional |
Elemen <Scope>
Menentukan batas aksesibilitas untuk peta nilai kunci. Cakupan defaultnya adalah environment
, artinya, secara default, entri peta digunakan bersama oleh semua proxy API yang berjalan di lingkungan (misalnya, pengujian atau produksi). Jika Anda menetapkan cakupan ke apiproxy
, entri dalam peta nilai kunci hanya dapat diakses oleh proxy API yang menulis nilai ke peta.
Perhatikan bahwa saat mengakses peta atau entri peta, Anda harus menetapkan nilai cakupan yang sama dengan yang digunakan saat peta dibuat. Misalnya, jika peta dibuat dengan cakupan apiproxy
, Anda harus menggunakan cakupan apiproxy
saat mengambil nilainya, menempatkan perubahan, atau menghapus entri.
<Scope>environment</Scope>
Default | environment |
---|---|
Ketersediaan | Opsional |
Jenis | String |
Nilai valid: |
|
Elemen <Value>
Menentukan nilai kunci. Anda dapat menentukan nilai sebagai string literal atau, menggunakan atribut ref
, sebagai variabel yang akan diambil pada saat runtime:
<!-- 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 nilai
multi-bagian. Nilai digabungkan pada runtime.
Dalam contoh berikut, dua kunci ditambahkan ke KVM:
- 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>
Pada contoh berikut, satu kunci dibuat dengan dua nilai. Anggaplah nama organisasinya adalah foo_org
, nama proxy API-nya adalah bar
, dan lingkungannya adalah 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 tetapkan. | T/A | Wajib jika tidak ada nilai literal yang diberikan antara tag pembuka dan 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.
Bagian ini menjelaskan kode kesalahan dan pesan error yang ditampilkan dan variabel kesalahan yang disetel oleh Edge saat kebijakan ini memicu error. Informasi ini penting untuk diketahui apakah Anda mengembangkan aturan kesalahan untuk menangani kesalahan. Untuk mempelajari lebih lanjut, lihat Yang perlu Anda ketahui tentang error kebijakan dan Menangani kesalahan.
Error runtime
Error ini dapat terjadi saat kebijakan dieksekusi.
Kode kesalahan | Status HTTP | Penyebab | Perbaiki |
---|---|---|---|
steps.keyvaluemapoperations.SetVariableFailed |
500 |
Error ini terjadi jika Anda mencoba mengambil nilai dari peta nilai kunci terenkripsi dan menetapkan nilainya ke variabel yang namanya tidak memiliki awalan |
build |
steps.keyvaluemapoperations.UnsupportedOperationException |
500 |
Error ini terjadi jika atribut |
build |
Error saat deployment
Error ini dapat terjadi saat Anda men-deploy proxy yang berisi kebijakan ini.
Nama error | Penyebab | Perbaiki |
---|---|---|
InvalidIndex |
Jika atribut index yang ditentukan dalam elemen <Get> kebijakan Operasi Peta Nilai Kunci adalah nol atau angka negatif, deployment proxy API akan gagal. Indeks dimulai dari
1 , sehingga indeks bilangan bulat nol atau negatif dianggap tidak valid.
|
build |
KeyIsMissing |
Error ini terjadi jika elemen <Key> sama sekali tidak ada atau elemen <Parameter> tidak ada dalam elemen <Key> di bawah <Entry> elemen <InitialEntries> dalam kebijakan Operasi Peta Nilai Kunci.
|
build |
ValueIsMissing |
Error ini terjadi jika elemen <Value> tidak ada di bawah elemen <Entry> elemen <InitialEntries> kebijakan Operasi Peta Nilai Kunci. |
build |
Skema
Catatan penggunaan
Untuk ringkasan peta nilai kunci, lihat Bekerja dengan peta nilai kunci.
Penyimpanan peta nilai kunci menyediakan mekanisme persistensi ringan untuk data yang diformat sebagai key-value pair. Anda dapat mengaksesnya saat runtime melalui kebijakan atau kode. Peta berisi data arbitrer apa pun dalam format key=value
.
Misalnya localhost=127.0.0.1
, zip_code=94110
, atau
first_name=felix
. Pada contoh pertama, localhost
adalah kunci, dan
127.0.0.1
adalah nilai. Setiap key-value pair disimpan sebagai entri dalam peta nilai kunci. 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 lingkungan backend. Anda dapat membuat peta nilai kunci bernama ipAddresses
yang berisi daftar key-value pair sebagai entri. Misalnya, JSON ini dapat merepresentasikan peta berikut:
{ "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 IP yang diizinkan atau ditolak, untuk memilih alamat target backend secara dinamis, dan sebagainya. Biasanya, kebijakan KeyValueMapOperations digunakan untuk menyimpan atau mengambil informasi berumur panjang yang perlu digunakan kembali melalui beberapa transaksi permintaan/respons.
Peta kunci/nilai dapat dimanipulasi melalui kebijakan KeyValueMapOperations, atau langsung melalui API pengelolaan Apigee Edge. Lihat referensi API pengelolaan untuk mengetahui detail tentang API peta/kunci organisasi. Anda dapat menggunakan API untuk, misalnya, mengupload set data besar ke penyimpanan kunci/nilai, atau membuat skrip untuk mengelola entri peta kunci/nilai. Anda harus membuat peta kunci/nilai dengan API sebelum mengaksesnya dengan kebijakan KeyValueMapOperations.
Menentukan dan mengambil nama kunci
Dengan elemen <Parameter>
dan <Value>
, Anda dapat menentukan nilai literal (nilai berada di antara tag pembuka dan penutup) atau menggunakan atribut ref
untuk menentukan nama variabel yang nilainya harus digunakan pada runtime.
Elemen Parameter perlu disebutkan secara khusus, karena menentukan nama kunci yang dibuat, serta nama kunci yang ingin diambil atau dihapus. Berikut adalah dua contohnya. Yang pertama menentukan nama kunci secara harfiah, dan yang kedua menentukan nama kunci menggunakan variabel. Anggaplah 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 nama kunci. Pada instance kedua, nilai apa pun yang ada dalam key.name.variable
akan menjadi nama kunci di KVM. Misalnya, jika key.name.variable
berisi nilai foo
, kunci akan diberi nama "foo".
Jika Anda ingin mengambil kunci dan nilai kunci dengan operasi GET (atau menghapus dengan operasi DELETE), setelan <Parameter> harus cocok dengan nama kunci di KVM. Misalnya, jika nama kunci dalam KVM adalah "foo", Anda dapat menentukan nilai literal dengan <Parameter>foo</Parameter>
atau menentukan variabel yang berisi nilai persis "foo", seperti ini: <Parameter ref="variable.containing.foo"/>
.