Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. bilgi
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, Kotayı Sıfırla politikasının <Quota>
öğesinde belirtilen Kota politikası API proxy'sinde tanımlı değilse ortaya çıkar. <Quota>
öğesi zorunludur ve sayacının Kota Sıfırlama politikası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österildiği gibi tanımlandığını varsayalım. Ancak MyQuotaPolicy
, API Proxy'sinde tanımlı değilse yukarıdaki hatayı alırsınız.
<Quota name="MyQuotaPolicy">
Teşhis
Kotayı Sıfırlama 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ı adı
MyQuotaPolicy:
şeklindedir."faultstring": "Invalid rate limit policy MyQuotaPolicy"
Hatanın meydana geldiği API Proxy'sinde Kota Sıfırlama politikalarının her birini inceleyin. Zorunlu
<Quota>
öğesinde belirtilen Kota politikasının, yukarıdaki 1. adımda belirtilen adla eşleştiği özel Kota Sıfırlama politikasını tanımlayın.Örneğin, aşağıdaki Kota Sıfırlama politikası, hata dizesindekiyle eşleşen
MyQuotaPolicy
adlı bir Kota politikasını 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'sinde mevcut değilse hatanın nedeni budur.
Yukarıda gösterilen örnekte, Kotayı Sıfırlama politikası (
Reset_Quota_Demo
) yürütülmeden önce akıştaMyQuotaPolicy
Kota politikasının mevcut olması gerekir.Akışta Kota Politikası
MyQuotaPolicy
bulunmadığı için şu hata kodunu alırsınız:
"errorcode": "policies.resetquota.InvalidRLPolicy"
Çözünürlük
<Quota>
öğesinde tanımlanan Kota Politikası'nın API proxy'sinde tanımlandığından emin olun. Bu hedef Kota politikası, Kotayı Sıfırla politikası yürütüldüğünde kullanılabilir olmalıdır.
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 basit olarak şu şekildedir: policies.ratelimit.QuotaViolation
.
Neden
Bu hata, politikanın <Allow>
öğesinde izin verilen sayıyı içeren değişken referansı bir değere çözümlenemezse ortaya çıkar. Bu öğe zorunludur ve kota sayacının azaltılacağı miktarı belirtir.
Teşhis
Hatanın ortaya çıktığı Kotayı Sıfırlama politikasını ve çözümlenemeyen referans değişkeninin adını tanımlayın. Bu öğelerin ikisini de hata yanıtında bulabilirsiniz.
Örneğin, aşağıdaki hata dizesinde politika adı
ResetQuota
ve referansrequest.header.allowcount
'tır: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 hatadaki öğeyle eşleşen
request.header.allowcount
adlı referansa sahip olacak şekilde ayarlar:<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şkenin, Kota Sıfırlama politikasının yürüttüğü akışta tanımlı ve kullanılabilir olup olmadığı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ımlanmadı)
hatanın nedeni budur.
Yukarıda gösterilen örnekte,
<Allow>
öğesindeki izin verilen sayının değerinin, allowcount istek başlığından alınması beklenir. Ancak Edge, request.header.allowcount dosyasını çözemiyor. Bu durum, allowcount başlığı API isteğinin bir parçası olarak iletilmezse meydana gelir.Aşağıda, isteğin bir parçası olarak allowcount başlığını iletmeyen bir API isteği örneği verilmiştir:
curl -v http://demo-eval-test.apigee.net/v1/reset_quota -H "Content-Type: application/json"
allowcount başlığı istek kapsamında iletilmediği için yukarıdaki Kota Sıfırlama politikasındaki
<Allow>
öğesinde kullanılan request.header.allowcount değişkeni tanımsızdır ve bu nedenle çözümlenemez. Bu durumda bir hata yanıtı 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 başvurulan değişkenin, Kota Sıfırlama politikasının yürütüldüğü belirli akışta mevcut/tanımlanmış ve kullanılabilir olduğundan 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 referans verilen 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 mevcut değilse yukarıdaki hatayı alırsınız.
<Quota ref="request.header.quotapolicy">
Teşhis
Hatanın meydana geldiği API Proxy'sinde Kota Sıfırlama politikalarının her birini inceleyin ve
<Quota>
öğesinde belirtilen referans değişkeninin adının doğru bir şekilde çözümlenemediği Kotayı Sıfırlama politikasını belirleyin.Değişkenin tanımlanmış ve Kota Sıfırla politikasının yürütüldüğü akışta kullanılabilir olup olmadığını belirleyin.
Değişken şunlardan biriyse:
- kapsam dışı (politikanın uygulandığı belirli akışta kullanılamaz) veya
- çözülemiyor (tanımlanmadı)
hatanın nedeni budur.
Aşağıdaki örnekte, hedef Kota politikasının adının QUOTApolicy adlı istek başlığından alınması gerekir. Ancak Edge, request.header.quotapolicy sorununu çözemez. Bu durum, QUOTApolicy başlığı API isteğinin bir parçası olarak iletilmezse meydana gelir.
<?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>
Aşağıda, isteğin bir parçası olarak QUOTApolicy başlığını iletmeyen bir API isteği örneği verilmiştir:
curl -v http://demo-eval-test.apigee.net/v1/reset_quota -H "Content-Type: application/json"
Kotalar başlığı istek kapsamında iletilmediği için, yukarıdaki Kotayı Sıfırla politikasındaki
<Quota>
öğesinde kullanılan request.header.QUOTApolicy referansı tanımsızdır ve çözümlenemez. Sonuç olarak, şu hata yanıtını alırsınız:"errorcode": "policies.resetquota.FailedToResolveRLPolicy"
Çözünürlük
<Quota>
öğesinde başvurulan ref
özelliğinin çalışma zamanında çözümlendiğinden ve Kotayı Sıfırla politikasının yürüttüğü belirli akışta kullanılabilir olduğundan 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"