Anda sedang melihat dokumentasi Apigee dan Apigee hybrid.
Lihat dokumentasi
Apigee Edge.
InvalidRLPolicy
Kode error
policies.resetquota.InvalidRLPolicy
Isi respons error
{ "fault": { "faultstring": "Invalid rate limit policy quota_policy_name", "detail": { "errorcode": "policies.resetquota.InvalidRLPolicy" } } }
Contoh pesan error
{
"fault": {
"faultstring": "Invalid rate limit policy MyQuotaPolicy",
"detail": {
"errorcode": "policies.resetquota.InvalidRLPolicy"
}
}
}
Penyebab
Error ini terjadi jika kebijakan Kuota yang ditentukan dalam elemen <Quota>
dari
kebijakan Reset Kuota tidak ditentukan di proxy API. Elemen <Quota>
bersifat wajib
dan mengidentifikasi kebijakan Kuota target yang penghitungnya harus diperbarui melalui
kebijakan Reset Kuota. Kebijakan Kuota target ini harus dibuat dan ditentukan dalam
proxy API yang sama dan harus tersedia selama alur.
Misalnya, misalkan elemen <Quota>
ditentukan seperti yang terlihat di bawah, tetapi jika MyQuotaPolicy
tidak ditentukan di API Proxy, Anda akan mendapatkan error di atas.
<Quota name="MyQuotaPolicy">
Diagnosis
Identifikasi nama kebijakan Kuota yang tidak valid yang ditentukan dalam kebijakan Reset Kuota. Anda dapat menemukan nama kebijakan Kuota dari faultstring. Misalnya, dalam faultstring berikut, nama kebijakan Kuota adalah
MyQuotaPolicy:
"faultstring": "Invalid rate limit policy MyQuotaPolicy"
Periksa setiap kebijakan Reset Kuota di Proxy API tempat kegagalan terjadi. Identifikasi kebijakan Reset Kuota tertentu dengan kebijakan Kuota yang ditentukan dalam elemen wajib
<Quota>
cocok dengan nama yang diidentifikasi pada Langkah 1 di atas.Misalnya, kebijakan Reset Kuota berikut menentukan kebijakan Kuota bernama
MyQuotaPolicy
, yang cocok dengan yang ada dalam faultstring:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ResetQuota async="false" continueOnError="false" enabled="true" name="Reset_Quota_Demo"> <DisplayName>Reset_Quota_Demo</DisplayName> <Properties/> <Quota name="MyQuotaPolicy"> <Identifier name="identifierName" ref="request.header.identifier"> <Allow>100</Allow> </Identifier> </Quota> </ResetQuota>
Tentukan apakah kebijakan Kuota ini dibuat dan ditentukan dalam proxy API yang sama. Jika kebijakan Kuota tidak ada dalam proxy API yang sama, hal itu adalah penyebab error.
Pada contoh yang ditampilkan di atas, kebijakan Kuota
MyQuotaPolicy
seharusnya ada dalam alur sebelum kebijakan Reset KuotaReset_Quota_Demo
dijalankan.Karena Kebijakan Kuota
MyQuotaPolicy
tidak ada dalam alur, Anda akan menerima kode error:
"errorcode": "policies.resetquota.InvalidRLPolicy"
Resolusi
Pastikan Kebijakan Kuota yang dideklarasikan dalam elemen <Quota>
ditentukan dalam
proxy API. Kebijakan Kuota target ini harus tersedia saat kebijakan Reset Kuota
dijalankan.
FailedToResolveAllowCountRef
Kode error
policies.resetquota.FailedToResolveAllowCountRef
Isi respons error
Failed to resolve allow count reference reference_name for identifier identifier_name in ResetQuotaStepDefinition:policy_name;API Proxy:proxy_name;Revision: revision_number;Environment:env_name;Organization:org_name
Contoh pesan error
Failed to resolve allow count reference request.header.allowcount for identifier
identifierName in ResetQuotaStepDefinition:ResetQuota;API Proxy:Reset_Quota;
Revision:10;Environment:test;Organization:demo
Catatan: Pesan error di atas tidak dikirim sebagai respons kepada klien. Error ini hanya terlihat di alat Trace sebagai error dari kebijakan Reset Kuota. Contoh screenshot ditampilkan di bawah.
Error yang ditampilkan ke klien akan berupa: policies.ratelimit.QuotaViolation
.
Penyebab
Error ini terjadi jika referensi ke variabel yang berisi jumlah izin di elemen <Allow>
kebijakan tidak dapat di-resolve ke nilai. Elemen
ini bersifat wajib dan menentukan jumlah untuk mengurangi penghitung kuota.
Diagnosis
Identifikasi kebijakan Reset Kuota tempat error terjadi dan nama variabel referensi yang tidak dapat di-resolve. Anda dapat menemukan kedua item ini dalam respons error.
Misalnya, dalam faultstring berikut, nama kebijakan adalah
ResetQuota
dan referensinya adalahrequest.header.allowcount
:Failed to resolve allow count reference request.header.allowcount for identifier identifierName in ResetQuotaStepDefinition:ResetQuota;API Proxy:Reset_Quota; Revision:10;Environment:test;Organization:demo
Dalam XML kebijakan Reset Kuota yang gagal, pastikan nama variabel referensi yang digunakan cocok dengan nama referensi yang diidentifikasi dalam respons error (Langkah 1 di atas).
Misalnya, kebijakan berikut menetapkan elemen dengan referensi bernama
request.header.allowcount
, yang cocok dengan yang ada dalam error:<ResetQuota async="false" continueOnError="false" enabled="true" name="ResetQuota"> <DisplayName>ResetQuota</DisplayName> <Properties/> <Quota name="MyQuotaPolicy"> <Identifier name="identifierName"> <Allow ref="request.header.allowcount"/> </Identifier> </Quota> </ResetQuota>
Tentukan apakah variabel referensi ditentukan dan tersedia dalam alur tempat kebijakan Reset Kuota dijalankan.
Jika variabel adalah:
- di luar cakupan (tidak tersedia dalam alur tertentu tempat kebijakan dijalankan) atau
- tidak dapat diselesaikan (tidak ditentukan)
maka itu adalah penyebab error.
Pada contoh yang ditampilkan di atas, nilai jumlah yang diizinkan dalam elemen
<Allow>
seharusnya diambil dari header permintaan bernama allowcount. Namun, Apigee tidak dapat me-resolve request.header.allowcount. Hal ini terjadi jika header allowcount tidak diteruskan sebagai bagian dari permintaan API.Berikut adalah contoh permintaan API yang tidak meneruskan header allowcount sebagai bagian dari permintaan:
curl -v http://your_host_alias/v1/reset_quota -H "Content-Type: application/json"
Dengan your_host_alias adalah domain yang ditampilkan secara publik yang digunakan untuk mengakses API Anda, seperti yang dikonfigurasi dalam properti
virtualhosts.hostAliases
di file penggantian Anda. Lihat Menentukan penggantian konfigurasi.Karena header allowcount tidak diteruskan sebagai bagian dari permintaan, variabel request.header.allowcount yang digunakan dalam elemen
<Allow>
dalam kebijakan Reset Quota di atas tidak ditentukan sehingga tidak dapat di-resolve. Jadi, Anda akan menerima respons error:Failed to resolve allow count reference request.header.allowcount for identifier identifierName in ResetQuotaStepDefinition:ResetQuota;API Proxy:Reset_Quota; Revision:10;Environment:test;Organization:demo
Resolusi
Pastikan variabel yang dirujuk dalam elemen <Allow>
ada/ditentukan
dan tersedia dalam alur tertentu, tempat kebijakan Reset Kuota dijalankan.
Untuk memperbaiki contoh yang ditampilkan di atas, Anda dapat mengubah permintaan untuk menyertakan header allowcount seperti yang ditunjukkan di bawah ini:
curl -v http://your_host_alias/v1/reset_quota -H "Content-Type: application/json" -H "allowcount:30"
Dengan your_host_alias adalah domain yang ditampilkan secara publik yang digunakan untuk mengakses API Anda,
seperti yang dikonfigurasi dalam properti virtualhosts.hostAliases
di file penggantian Anda.
Lihat Menentukan penggantian konfigurasi.
FailedToResolveRLPolicy
Kode error
policies.resetquota.FailedToResolveRLPolicy
Isi respons error
{
"fault": {
"faultstring": "Failed to resolve rate limit policy",
"detail": {
"errorcode": "policies.resetquota.FailedToResolveRLPolicy"
}
}
}
Contoh pesan error
{
"fault": {
"faultstring": "Failed to resolve rate limit policy",
"detail": {
"errorcode": "policies.resetquota.FailedToResolveRLPolicy"
}
}
}
Penyebab
Error ini terjadi jika variabel yang dirujuk oleh atribut ref
dalam elemen <Quota>
tidak dapat di-resolve.
Misalnya, jika atribut ref
ditetapkan sebagai request.header.quotapolicy
di elemen <Quota>
, tetapi tidak tersedia dalam alur proxy API, Anda akan mendapatkan error di atas.
<Quota ref="request.header.quotapolicy">
Diagnosis
Periksa setiap kebijakan Reset Kuota di Proxy API tempat kegagalan terjadi dan identifikasi kebijakan Reset Kuota tempat nama variabel referensi yang ditentukan dalam elemen
<Quota>
tidak dapat di-resolve dengan benar.Tentukan apakah variabel ditentukan dan tersedia dalam alur tempat kebijakan Reset Kuota dijalankan.
Jika variabel adalah:
- di luar cakupan (tidak tersedia dalam alur tertentu tempat kebijakan dijalankan) atau
- tidak dapat diselesaikan (tidak ditentukan)
maka itu adalah penyebab error.
Pada contoh yang ditampilkan di bawah, nama kebijakan Kuota target seharusnya diambil dari header permintaan bernama quotapolicy. Namun, Apigee tidak dapat menyelesaikan request.header.quotapolicy. Hal ini terjadi jika header quotapolicy tidak diteruskan sebagai bagian dari permintaan API.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ResetQuota async="false" continueOnError="false" enabled="true" name="Reset_Quota_Demo"> <DisplayName>Reset_Quota_Demo</DisplayName> <Properties/> <Quota ref="request.header.quotapolicy"> <Identifier name="identifierName" ref="request.header.identifier"> <Allow>100</Allow> </Identifier> </Quota> </ResetQuota>
Berikut adalah contoh permintaan API yang tidak meneruskan header quotapolicy sebagai bagian dari permintaan:
curl -v http://your_host_alias/v1/reset_quota -H "Content-Type: application/json"
Dengan your_host_alias adalah domain yang ditampilkan secara publik yang digunakan untuk mengakses API Anda, seperti yang dikonfigurasi dalam properti
virtualhosts.hostAliases
di file penggantian Anda. Lihat Menentukan penggantian konfigurasi.Karena header quotapolicy tidak diteruskan sebagai bagian dari permintaan, referensi request.header.quotapolicy yang digunakan dalam elemen
<Quota>
di kebijakan Reset Kuota di atas tidak ditentukan dan tidak dapat di-resolve. Akibatnya, Anda akan menerima respons error:"errorcode": "policies.resetquota.FailedToResolveRLPolicy"
Resolusi
Pastikan atribut ref
yang dirujuk dalam elemen <Quota>
di-resolve saat
runtime dan tersedia dalam alur tertentu, tempat kebijakan Reset Kuota dijalankan.
Untuk memperbaiki contoh yang ditampilkan di atas, Anda dapat mengubah permintaan untuk menyertakan header quotapolicy seperti yang ditunjukkan di bawah:
curl -v http://your_host_alias/v1/reset_quota -H "Content-Type: application/json" -H "quotapolicy:MyQuotaPolicy"
Dengan your_host_alias adalah domain yang ditampilkan secara publik yang digunakan untuk mengakses API Anda,
seperti yang dikonfigurasi dalam properti virtualhosts.hostAliases
di file penggantian Anda.
Lihat Menentukan penggantian konfigurasi.