Kota çalışma zamanı hatasını giderme

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 politikası<Quota> Kota politikası sıfırlama, API proxy'sinde tanımlı değil. <Quota> öğesi zorunludur ve sayacının Kota Sıfırlama politikasını. Bu hedef Kota politikası içinde oluşturulmalı ve tanımlanmalıdır. ve akış sırasında kullanılabilir olması gerekir.

Örneğin, <Quota> öğesinin aşağıda görüldüğü gibi tanımlandığını varsayalım, ancak API Proxy'sinde MyQuotaPolicy tanımlı değilse yukarıdaki hatayı alırsınız.

<Quota name="MyQuotaPolicy">

Teşhis

  1. Kota 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 dizesi: Kota politikasının adı MyQuotaPolicy:

    "faultstring": "Invalid rate limit policy MyQuotaPolicy"
    
  2. Hatanın mevcut olduğu API Proxy'sinde Kota Sıfırlama politikalarının her birini inceleyin. olmuştur. Kota politikasının geçerli olduğu Kotayı Sıfırlama politikasını zorunlu <Quota> öğesinde belirtilen adla eşleşiyor başlıklı makaleyi inceleyin.

    Örneğin aşağıdaki Kotayı Sıfırla politikası, MyQuotaPolicy, hata dizesindeki değerle eşleş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 name="MyQuotaPolicy">
           <Identifier name="identifierName" ref="request.header.identifier">
                <Allow>100</Allow>
            </Identifier>
        </Quota>
    </ResetQuota>
    
    
  3. Bu Kota politikasının aynı API proxy'si içinde oluşturulup oluşturulmadığını ve tanımlanıp tanımlanmadığını belirleyin. Kota politikası aynı API proxy'sinde bulunmuyorsa bunun nedeni budur anlamına gelir.

    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.

    Akışta MyQuotaPolicy Kota Politikası bulunmadığından şu hata kodunu alın:

"errorcode": "policies.resetquota.InvalidRLPolicy"

Çözünürlük

<Quota> öğesinde belirtilen Kota Politikasının API proxy'si. Bu hedef Kota politikasının, Kota Sıfırlama politikası yürütülü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 şö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ı azaltacak tutarı belirtir.

Teşhis

  1. Hatanın meydana geldiği yerde Kota Sıfırlama politikasını ve çözümlenemeyen referans değişkenine eklenir. Bu öğelerin her ikisini de yazın.

    Örneğin, aşağıdaki hata dizesinde politika adı ResetQuota ve referans request.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
    
  2. Başarısız Kota Sıfırlama politikası XML'inde referans adının kullanılan değişken, hata yanıtında tanımlanan referans adıyla eşleşiyor (yukarıdaki 1. Adım).

    Örneğin, aşağıdaki politika, öğeyi request.header.allowcount (hatadaki değerle 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>
    
  3. Referans değişkeninin tanımlanıp tanımlanmadığını ve akışta kullanılabilir olup olmadığını (Kota Sıfırlama politikasının yürütüleceği)

  4. Değişken şunlardan biriyse:

    1. kapsam dışında (politikanın yürütüldüğü belirli akışta kullanılamaz) veya
    2. çözülemiyor (tanımlanmamış)

    Bu durumda, hatanın nedeni budur.

    Yukarıdaki örnekte, <Allow> öğesinde izin verilen sayının değeri parametresinin 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.

    Aşağıda, parça olarak allowcount başlığını geçirmeyen örnek bir API isteği verilmiştir hakkında daha fazla bilgi edinin:

    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, değişken Yukarıdaki Sıfırlama bölümünde <Allow> öğesinde kullanılan request.header.allowcount Kota politikası tanımsız ve bu nedenle çözümlenemiyor. Böylece size hata yanıtı:

    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,ref <Quota> öğesi çözümlenemiyor.

Örneğin, ref özelliği <Quota> öğesinde request.header.quotapolicy olarak ayarlanmışsa ancak API proxy akışında kullanılamıyorsa yukarıdaki hatayı alırsınız.

<Quota ref="request.header.quotapolicy">

Teşhis

  1. Hatanın mevcut olduğu API Proxy'sinde Kota Sıfırlama politikalarının her birini inceleyin. hatasını vermelidir ve referans adı tam olarak doğru yerdedir. <Quota> öğesinde belirtilen değişken doğru şekilde çözümlenemiyor.

  2. Değişkenin, tanımlı olup olmadığını ve değişkenin Kota Sıfırlama politikası yürütülür.

  3. Değişken şunlardan biriyse:

    1. Kapsam dışında (politikanın yürütüldüğü belirli akışta kullanılamaz) veya
    2. çözülemiyor (tanımlanmamış)

    Bu durumda, hatanın nedeni budur.

    Aşağıdaki örnekte gösterilen örnekte, hedef Kota politikasının adının quotapolicy adlı istek başlığından alınır. Ancak Edge request.header.quotapolicy bölümünü içermelidir. Bu durum, başlığın quotapolicy API isteğinin bir parçası olarak iletilmez.

    <?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 başlığı, isteğin bir parçası olarak iletilmediğinden referans Yukarıdaki Sıfırlama bölümünde <Quota> öğesinde kullanılan request.header.quotapolicy Kota politikası tanımsız ve çözümlenemiyor. Bunun sonucunda, hata yanıtı:

    "errorcode": "policies.resetquota.FailedToResolveRLPolicy"
    

Çözünürlük

<Quota> öğesinde referans verilen ref özelliğinin şunda çözümlendiğinden emin olun: ve Kota Sıfırlama politikasının yürütüldüğü belirli akışta kullanılabilir.

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"