Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. info
InvalidRLPolicy
Hata kodu
policies.resetquota.InvalidRLPolicy
Hata yanıtı gövdesi
{ "fault": { "faultstring": "Invalid rate limit policy quota_policy_name", "detail": { "errorcode": "policies.resetquota.InvalidRLPolicy" } } }
Örnek hata mesajı
{
"fault": {
"faultstring": "Invalid rate limit policy MyQuotaPolicy",
"detail": {
"errorcode": "policies.resetquota.InvalidRLPolicy"
}
}
}
Neden
Bu hata, kota sıfırlama politikasının <Quota>
öğesinde belirtilen kota politikası API proxy'sinde tanımlanmamışsa ortaya çıkar. <Quota>
öğesi zorunludur ve sayacı Kotayı Sıfırla politikası aracılığıyla güncellenmesi gereken hedef kota politikasını tanımlar. Bu hedef kota politikası, aynı API proxy'sinde oluşturulup tanımlanmalı ve akış sırasında kullanılabilir olmalıdır.
Örneğin, <Quota>
öğesinin aşağıda görüldüğü gibi tanımlandığını varsayalım. Ancak MyQuotaPolicy
, API Proxy'sinde tanımlanmazsa yukarıdaki hatayı alırsınız.
<Quota name="MyQuotaPolicy">
Teşhis
Kotayı Sıfırla politikasında belirtilen geçersiz kota politikası adını tanımlayın. Kota politikasının adını hata dizesinde bulabilirsiniz. Örneğin, aşağıdaki hata dizesinde Kota politikasının adı
MyQuotaPolicy:
şeklindedir"faultstring": "Invalid rate limit policy MyQuotaPolicy"
Hatanın oluştuğu API Proxy'sindeki Kotayı Sıfırla politikalarının her birini inceleyin. Zorunlu
<Quota>
öğesinde belirtilen Kota politikasının yukarıdaki 1. Adım'da belirtilen adla eşleştiği özel Kota Sıfırlama politikasını tanımlayın.Örneğin, aşağıdaki Kotayı Sıfırla politikası, hata dizesindekiyle eşleşen
MyQuotaPolicy
adlı bir kota politikası belirtir:<?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>
Bu kota politikasının aynı API proxy'sinde oluşturulup tanımlanmadığını belirleyin. Kota politikası aynı API proxy'si içinde yer almıyorsa hatanın nedeni budur.
Yukarıda gösterilen örnekte, Kotayı Sıfırla politikası
Reset_Quota_Demo
yürütülmeden önce Kota politikasıMyQuotaPolicy
'ün akışta bulunması gerekir.MyQuotaPolicy
kota politikası akışta bulunmadığından aşağıdaki hata kodunu alırsınız:
"errorcode": "policies.resetquota.InvalidRLPolicy"
Çözünürlük
<Quota>
öğesinde beyan edilen kota politikasının API proxy'sinde tanımlandığından emin olun. Bu hedef Kota politikasının, Kota Sıfırlama politikası yürütüldüğünde kullanılabilir olması gerekir.
FailedToResolveAllowCountRef
Hata kodu
policies.resetquota.FailedToResolveAllowCountRef
Hata yanıtı gövdesi
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
Örnek hata mesajı
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
İstemciye döndürülen hata şöyle olur: policies.ratelimit.QuotaViolation
.
Neden
Bu hata, politikanın <Allow>
öğesinde izin sayısını içeren değişkene yapılan referans bir değere çözülemiyorsa ortaya çıkar. Bu öğe zorunludur ve kota sayacının azaltılacağı miktarı belirtir.
Teşhis
Hatanın oluştuğu kota sıfırlama politikasını ve çözülemeyen referans değişkeninin adını belirleyin. Bu iki öğeyi de hata yanıtında bulabilirsiniz.
Örneğin, aşağıdaki hata dizesinde politika adı
ResetQuota
, referans iserequest.header.allowcount
şeklindedir: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
Başarısız kota sıfırlama politikası XML'inde, kullanılan referans değişkeninin adının hata yanıtında tanımlanan referans adıyla eşleştiğini doğrulayın (yukarıdaki 1. adım).
Örneğin, aşağıdaki politika, öğeyi
request.header.allowcount
adlı referansla ayarlar. Bu referans, hatada belirtilen referansla eşleşir:<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>
Referans değişkeninin, kota sıfırlama politikasının yürütüldüğü akışta tanımlanıp tanımlanmadığını ve kullanılıp kullanılamayacağını belirleyin.
Değişken şunlardan biriyse:
- Kapsam dışında (politikanın yürütüldüğü belirli akışta kullanılamaz) veya
- çözülemiyor (tanımlanmamış)
Bu durumda, hatanın nedeni budur.
Yukarıda gösterilen örnekte,
<Allow>
öğesindeki izin verilen sayının değerinin allowcount adlı istek başlığından alınması gerekir. Ancak Edge, request.header.allowcount parametresini çözemiyor. Bu durum, allowcount başlığı, API isteğinin bir parçası olarak iletilmez.İsteğin bir parçası olarak allowcount başlığını iletmeyen örnek bir API isteği aşağıda verilmiştir:
curl -v http://demo-eval-test.apigee.net/v1/reset_quota -H "Content-Type: application/json"
allowcount başlığı, isteğin bir parçası olarak iletilmediğinden, yukarıdaki Kota Sıfırlama politikasında
<Allow>
öğesinde kullanılan request.header.allowcount değişkeni tanımsızdır ve bu nedenle çözümlenemez. Bu nedenle, şu hata yanıtını alırsınız: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
Çözünürlük
<Allow>
öğesinde atıfta bulunulan değişkenin mevcut olduğundan/tanımlandığından ve kota sıfırlama politikasının yürütüldüğü belirli akışta kullanılabildiğinden emin olun.
Yukarıda gösterilen örneği düzeltmek için isteği aşağıda gösterildiği gibi allowcount başlığını içerecek şekilde değiştirebilirsiniz:
curl -v http://demo-eval-test.apigee.net/v1/reset_quota -H "Content-Type: application/json" -H "allowcount:30"
FailedToResolveRLPolicy
Hata kodu
policies.resetquota.FailedToResolveRLPolicy
Hata yanıtı gövdesi
{
"fault": {
"faultstring": "Failed to resolve rate limit policy",
"detail": {
"errorcode": "policies.resetquota.FailedToResolveRLPolicy"
}
}
}
Örnek hata mesajı
{
"fault": {
"faultstring": "Failed to resolve rate limit policy",
"detail": {
"errorcode": "policies.resetquota.FailedToResolveRLPolicy"
}
}
}
Neden
Bu hata, <Quota>
öğesindeki ref
özelliği tarafından başvurulan değişken çözümlenemezse ortaya çıkar.
Örneğin ref
özelliği, <Quota>
öğesinde request.header.quotapolicy
olarak ayarlanmışsa ancak API proxy akışında yoksa yukarıdaki hatayı alırsınız.
<Quota ref="request.header.quotapolicy">
Teşhis
API Proxy'de hatanın oluştuğu kota sıfırlama politikalarının her birini inceleyin ve
<Quota>
öğesinde belirtilen referans değişkeninin adının düzgün şekilde çözülemediği kota sıfırlama politikasını belirleyin.Değişkenin, kota sıfırlama politikasının yürütüldüğü akışta tanımlanıp tanımlanmadığını ve kullanılıp kullanılamayacağını belirleyin.
Değişken şunlardan biriyse:
- kapsam dışında (politikanın yürütüldüğü belirli akışta kullanılamaz) veya
- çözülemez (tanımlanmamıştır)
Bu durumda, hatanın nedeni budur.
Aşağıda gösterilen örnekte, hedef kota politikasının adının quotapolicy adlı istek başlığından alınması beklenmektedir. Ancak Edge, request.header.quotapolicy parametresini çözemiyor. Bu durum, quotapolicy başlığının API isteğinin bir parçası olarak iletilmemesi durumunda gerçekleşir.
<?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>
İsteğin bir parçası olarak quotapolicy üst bilgisini iletmeyen örnek bir API isteği aşağıda verilmiştir:
curl -v http://demo-eval-test.apigee.net/v1/reset_quota -H "Content-Type: application/json"
quotapolicy üstbilgisi istek kapsamında iletilmediğinden, yukarıdaki "Kota politikasını sıfırla" bölümündeki
<Quota>
öğesinde kullanılan request.header.quotapolicy referansı tanımlanmamış ve çözülememiştir. Sonuç olarak şu hata yanıtını alırsınız:"errorcode": "policies.resetquota.FailedToResolveRLPolicy"
Çözünürlük
<Quota>
öğesinde referans verilen ref
özelliğinin çalışma zamanında çözüldüğünden ve kota sıfırlama politikasının yürütüldüğü belirli akışta kullanılabildiğinden emin olun.
Yukarıda gösterilen örneği düzeltmek için isteği, aşağıda gösterildiği gibi quotapolicy başlığını içerecek şekilde değiştirebilirsiniz:
curl -v http://demo-eval-test.apigee.net/v1/reset_quota -H "Content-Type: application/json" -H "quotapolicy:MyQuotaPolicy"