Kebijakan KeyValueMapOperations

Anda sedang melihat dokumentasi Apigee Edge.
Buka dokumentasi Apigee X.
info

Ikon Operasi Peta Nilai Kunci dari UI Edge

Apa

Menyediakan akses berbasis kebijakan ke penyimpanan Peta Nilai Kunci (KVM) yang tersedia di Apigee Edge. Pasangan nilai/kunci 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 lebih lanjut KVM.

Video Deskripsi
Mengapa Peta Nilai Kunci? 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 ke dalam permintaan API menggunakan variabel alur.
Membuat dan memperbarui KVM saat runtime API Buat KVM saat runtime API menggunakan kebijakan KVM.
Meng-cache KVM untuk meningkatkan performa Meningkatkan performa Kebijakan KVM dengan melakukan caching data.
Simpan terenkripsi KVM Simpan informasi sensitif di KVM dalam format terenkripsi dan ambil nilai saat runtime menggunakan kebijakan KVM dan variabel pribadi.
Mengelola akses menggunakan cakupan KVM Batasi KVM ke organisasi, lingkungan, revisi proxy API, atau revisi proxy API menggunakan atribut cakupan kebijakan KVM.
Menghapus entri KVM pada waktu proses API Hapus entri KVM saat runtime API menggunakan operasi DELETE kebijakan KVM.

Contoh

PUT KVM dengan literal

Saat kebijakan berikut dijalankan, kebijakan tersebut 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). Saat 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". Artinya, Anda dapat melihat KVM di UI pengelolaan di bagian APIs > Environment Configuration > Key Value Maps. KVM yang ditampilkan di halaman tersebut semuanya dicakup ke 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 peta nilai kunci yang berguna adalah layanan pemendek URL. Peta nilai kunci dapat dikonfigurasi untuk menyimpan URL yang disingkat bersama dengan URL lengkap yang sesuai.

Contoh kebijakan ini membuat peta nilai kunci. Kebijakan ini menempatkan kunci dengan dua nilai terkait ke dalam peta key/value 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, misalnya), lalu disimpan dalam variabel ini, tempat kebijakan KeyValueMapOperations dapat mengaksesnya.

Untuk setiap kunci, requesturl.hashed, dua nilai disimpan:

  • Isi variabel kustom bernama urlencoding.longurl.encoded
  • Isi variabel yang telah ditentukan sebelumnya request.queryparam.url

Misalnya, saat kebijakan dijalankan pada waktu proses, nilai variabel mungkin sebagai berikut:

  • urlencoding.requesturl.hashed: ed24e12820f2f900ae383b7cc4f2b31c402db1be
  • urlencoding.longurl.encoded: http://tinyurl.com/38lwmlr
  • request.queryparam.url: http://apigee.com

Peta dan entri nilai/kunci berikut akan dibuat di penyimpanan nilai/kunci Edge dan ditetapkan cakupannya 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 nilai/kunci didistribusikan di seluruh instance Edge yang menjalankan cloud.

MENDAPATKAN KVM dari variabel

Contoh sederhana peta nilai kunci yang berguna adalah layanan 'pemendekan' URL. Peta nilai kunci dapat dikonfigurasi untuk menyimpan URL yang disingkat bersama dengan URL lengkap yang sesuai.

Untuk mengambil nilai entri peta nilai/kunci, seperti yang dibahas di 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, maka variabel kustom bernama urlencoding.shorturl akan disetel dengan nilai http://tinyurl.com/38lwmlr.

Setelah data diambil, kebijakan dan kode lain dapat mengaksesnya dengan mengekstrak nilai dari variabel tersebut.

MENDAPATKAN 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 mengetahui informasi tentang cara membuat peta nilai kunci terenkripsi, lihat topik "create" di API pengelolaan Peta Nilai/Kunci.

<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 Public Cloud. Misalnya, foobar berbeda dengan FooBar.

Jika Anda mengecualikan atribut ini, KVM bernama kvmap akan digunakan.

Dalam cakupan organisasi/lingkungan/apiproxy, Anda dapat menggunakan atribut mapIdentifier untuk menentukan nama peta Anda sendiri.

T/A Opsional

Tabel berikut menjelaskan atribut yang umum untuk semua elemen induk kebijakan:

Atribut Deskripsi Default Ketersediaan
name

Nama internal kebijakan. Nilai atribut name dapat berisi huruf, angka, spasi, tanda hubung, garis bawah, dan titik. Nilai ini tidak boleh melebihi 255 karakter.

Secara opsional, gunakan elemen <DisplayName> untuk memberi label kebijakan di editor proxy UI pengelolaan dengan nama natural language yang berbeda.

T/A Wajib
continueOnError

Tetapkan ke false untuk menampilkan error saat kebijakan gagal. Diharapkan untuk sebagian besar kebijakan.

Setel ke true agar eksekusi alur dapat dilanjutkan bahkan setelah kebijakan gagal.

salah Opsional
enabled

Setel ke true untuk menerapkan kebijakan.

Setel ke false untuk menonaktifkan kebijakan. Kebijakan ini tidak akan ditegakkan meskipun tetap terikat pada alur.

true Opsional
async

Atribut ini tidak digunakan lagi.

salah Tidak digunakan lagi

&lt;DisplayName&gt; 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 name kebijakan akan menjadi data

Ketersediaan Opsional
Jenis String

Elemen <Delete>

Menghapus pasangan kunci/nilai 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 awal untuk peta nilai kunci, yang diisi dalam peta nilai kunci saat diinisialisasi.

Untuk Edge untuk 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. Gunakan elemen <Scope> sebagai gantinya.

Elemen <ExpiryTimeInSecs>

Menentukan durasi dalam detik setelah Edge memperbarui nilai yang di-cache dari KVM yang ditentukan.

Nilai 0 atau -1, atau mengecualikan elemen ini, berarti nilai default 300 detik akan 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. Oleh karena itu, membaca dari KVM saat runtime berpotensi memperlambat performa proxy. Untuk meningkatkan performa, Edge memiliki mekanisme bawaan untuk menyimpan kunci/nilai KVM dalam cache di memori selama runtime. Kebijakan Operasi KVM ini selalu membaca dari cache untuk operasi GET.

Elemen <ExpiryTimeInSecs> memungkinkan Anda mengontrol durasi penyimpanan kunci/nilai yang digunakan dalam kebijakan di cache sebelum diperbarui lagi dari KVM. Namun, ada beberapa perbedaan antara pengaruh operasi GET dan PUT terhadap masa berlaku cache.

GET - Saat operasi GET KVM dijalankan untuk pertama kalinya, kunci/nilai yang diminta dari KVM (yang namanya ditentukan dalam atribut mapIdentifier root kebijakan) dimuat ke dalam cache, tempat kunci/nilai tersebut tetap berada untuk operasi GET berikutnya hingga salah satu hal berikut terjadi:

  • Jumlah detik yang ditentukan dalam <ExpiryTimeInSecs> telah berakhir.
    atau
  • Operasi PUT dalam kebijakan KVM akan menggantikan nilai yang ada (dijelaskan berikutnya).

PUT - Operasi PUT menulis kunci/nilai ke KVM yang ditentukan. Jika PUT menulis ke kunci yang sudah ada dalam cache, cache tersebut akan segera di-refresh dan kini menyimpan nilai baru selama beberapa detik yang ditentukan dalam elemen <ExpiryTimeInSecs> kebijakan.

Contoh - Menyimpan KVM ke dalam cache

  1. Operasi GET mengambil nilai "rating", yang menambahkan nilai "10" ke cache. The <ExpiryTimeInSecs> pada kebijakan adalah 60.
  2. 30 detik kemudian, kebijakan GET dijalankan lagi dan mengambil "10" dari cache.
  3. 5 detik kemudian, kebijakan PUT memperbarui nilai "rating" menjadi "8", dan <ExpiryTimeInSecs> pada kebijakan PUT adalah 20. Cache segera diperbarui dengan nilai baru, yang kini ditetapkan untuk tetap berada dalam cache selama 20 detik. (Jika PUT tidak terjadi, cache yang awalnya diisi oleh GET pertama akan tetap ada selama 30 detik lagi, sisa dari 60 detik awal.)
  4. 15 detik kemudian, GET lain dijalankan 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

Dalam contoh berikut, asumsikan KVM dengan kunci dan nilai berikut. Selain menyimpan daftar film terpopuler sepanjang masa yang terus diperbarui, KVM menyimpan nama sutradara untuk semua film utama.

Kunci Nilai
top_movies Princess Bride,The Godfather,Citizen Kane
Citizen Kane Orson Welles
Princess Bride Rob Reiner
The Godfather Francis Ford Coppola

Berikut konfigurasi kebijakan KVM yang dapat kita gunakan untuk mengambil film terpopuler 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 diberi nilai yang diambil.

Jika peta nilai kunci dienkripsi, awali nama assignTo dengan "private.". Misalnya:

<Get assignTo="private.myvar">

Kebijakan 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 debug dan Trace proxy API.

Untuk mengetahui informasi tentang cara membuat peta nilai kunci terenkripsi, lihat topik "create" di API pengelolaan Peta Nilai/Kunci dan Membuat dan mengedit peta nilai kunci lingkungan.

T/A Wajib
indeks

Nomor indeks (dalam indeks berbasis 1) item yang akan diambil dari kunci bernilai ganda. Misalnya, menentukan index=1 akan menampilkan nilai pertama dan menetapkannya ke variabel assignTo. Jika tidak ada nilai indeks yang ditentukan, semua nilai entri tersebut akan ditetapkan ke variabel sebagai java.util.List.

Untuk contohnya, lihat tab "Get Encrypted Value from KVM" di Samples.

T/A Opsional

Elemen <InitialEntries>

Nilai awal untuk peta nilai kunci, yang diisi dalam 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>

Saat menggunakan elemen ini, saat 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 dibuat secara otomatis di KVM (sebagai tidak terenkripsi). Jika nilai dalam kebijakan berbeda dengan nilai dalam KVM, nilai dalam KVM akan diganti 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 berupa literal. Misalnya, <Parameter ref="request.queryparam.key"> tidak didukung dalam elemen ini.

Ukuran kunci dibatasi hingga 2 KB untuk Edge untuk Public Cloud dan Edge untuk Private Cloud. 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 berupa gabungan, yang berarti 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 untuk melihat elemen <Parameter> untuk mengetahui secara spesifik cara menetapkan nama kunci.

Dengan Edge untuk Public Cloud, ukuran kunci dibatasi hingga 2 KB. Lihat Perbedaan antara Edge untuk API Cloud Publik dan API Cloud Pribadi untuk mengetahui informasi selengkapnya.

Default T/A
Ketersediaan Opsional
Jenis T/A

Elemen <Parameter>

Menentukan kunci dalam pasangan kunci/nilai. Elemen ini menentukan nama saat membuat, menempatkan, mengambil, atau menghapus pasangan nilai/kunci.

Anda dapat menentukan nama menggunakan:

  • String literal

    <Key>
      <Parameter>literal</Parameter>
    </Key>
  • Variabel yang akan diambil saat runtime, 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 penggabungan nilai setiap parameter, yang digabungkan dengan garis bawah ganda. Misalnya, pada contoh di atas, jika variabel apiproxy.name memiliki nilai "abc1", maka kunci efektifnya adalah targeturl__abc1__weight.

Baik Anda mengambil, memperbarui, atau menghapus entri nilai/kunci, nama kunci harus cocok dengan nama kunci dalam peta nilai kunci. Lihat Menentukan dan mengambil nama kunci untuk mengetahui panduannya.

Default T/A
Ketersediaan Wajib
Jenis String

Atribut

Tabel berikut menjelaskan atribut elemen <Parameter>:

Atribut Deskripsi Default Ketersediaan
ref Menentukan nama variabel yang nilainya berisi nama persis kunci yang ingin Anda buat, dapatkan, atau hapus. T/A Wajib diisi jika tidak ada nilai literal yang diberikan di 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 dienkripsi. Jika peta nilai kunci yang ditentukan dalam atribut mapIdentifier pada elemen induk tidak ada, peta akan dibuat secara otomatis (sebagai tidak dienkripsi). Jika peta nilai kunci sudah ada, kunci/nilai akan ditambahkan ke peta tersebut.

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 yang tercakup dalam lingkungan 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 disetel ke true, nilai ini akan menggantikan nilai untuk kunci.

false Opsional

Elemen <Scope>

Menentukan batas aksesibilitas untuk peta nilai kunci. Cakupan default adalah environment, yang berarti bahwa, secara default, entri peta dibagikan oleh semua proxy API yang berjalan di lingkungan (misalnya, test atau prod). Jika Anda menyetel 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 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, menerapkan perubahan, atau menghapus entri.

<Scope>environment</Scope>
Default environment
Ketersediaan Opsional
Jenis String
Nilai valid:
  • organization
  • environment
  • apiproxy
  • policy (revisi proxy API)

Elemen <Value>

Menentukan nilai kunci. Anda dapat menentukan nilai sebagai string literal atau, menggunakan atribut ref, sebagai variabel yang akan diambil 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 saat runtime.

Dalam contoh berikut, dua kunci ditambahkan ke KVM:

  • Kunci k1 dengan nilai v1,v2
  • Kunci k2 dengan nilai 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>

Dalam contoh berikut, satu kunci dibuat dengan dua nilai. Misalkan nama organisasi adalah foo_org, nama proxy API adalah bar, dan lingkungannya adalah test:

  • Kunci foo_org dengan nilai bar,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
ref Menentukan nama variabel yang nilainya berisi nilai kunci yang ingin Anda tetapkan. T/A Wajib diisi jika tidak ada nilai literal yang diberikan di 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 private. Awalan yang diperlukan untuk tujuan keamanan dasar selama proses debug menyembunyikan nilai terenkripsi dari sesi Trace dan debug proxy API.

steps.keyvaluemapoperations.UnsupportedOperationException 500

Error ini terjadi jika atribut mapIdentifier disetel ke string kosong dalam kebijakan Key Value Map Operations.

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.
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.
ValueIsMissing Error ini terjadi jika elemen <Value> tidak ada di bawah elemen <Entry> elemen <InitialEntries> kebijakan Operasi Peta Nilai Kunci.

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 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. Misalnya, Anda perlu menyimpan daftar alamat IP yang terkait dengan berbagai lingkungan backend. Anda dapat membuat peta nilai kunci yang disebut ipAddresses yang berisi daftar key/value pair 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 IP yang diizinkan atau tidak diizinkan, untuk memilih alamat target backend secara dinamis, dan sebagainya. Biasanya, kebijakan KeyValueMapOperations digunakan untuk menyimpan atau mengambil informasi yang berjalan lama yang perlu digunakan kembali di beberapa transaksi permintaan/respons.

Peta key/value dapat dimanipulasi melalui kebijakan KeyValueMapOperations, atau langsung melalui Apigee Edge Management API. Lihat referensi API Management untuk mengetahui detail tentang Organization key/value maps API API. Anda dapat menggunakan API untuk, misalnya, mengupload set data besar ke penyimpanan key/value, atau membuat skrip untuk mengelola entri peta key/value. Anda harus membuat peta nilai/kunci dengan API sebelum mengaksesnya dengan kebijakan KeyValueMapOperations.

Menentukan dan mengambil nama kunci

Dengan elemen <Parameter> dan <Value>, Anda dapat menentukan nilai literal (dengan nilai di antara tag pembuka dan penutup) atau menggunakan atribut ref untuk menentukan nama variabel yang nilainya harus digunakan saat runtime.

Elemen Parameter layak disebutkan secara khusus, karena menentukan nama kunci yang dibuat, serta nama kunci yang ingin Anda ambil atau hapus. Berikut adalah dua contohnya. Yang pertama menentukan nama kunci secara harfiah, dan yang kedua menentukan nama kunci menggunakan variabel. Anggaplah hal berikut digunakan untuk membuat kunci di KVM:

<Parameter>key_name_literal</Parameter>
<Parameter ref="key.name.variable"/>

Pada instance pertama, nilai literal "key_name_literal" disimpan dalam KVM sebagai nama kunci. Pada instance kedua, nilai apa pun yang ada di key.name.variable akan menjadi nama kunci di KVM. Misalnya, jika key.name.variable berisi nilai foo, kunci akan diberi nama "foo".

Saat 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 di KVM adalah "foo", Anda dapat menentukan nilai literal dengan <Parameter>foo</Parameter> atau menentukan variabel yang berisi nilai "foo" yang tepat, seperti ini: <Parameter ref="variable.containing.foo"/>.

Topik terkait