Rozwiązywanie problemów z resetowaniem limitu środowiska wykonawczego

Przeglądasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X.
Informacje

InvalidRLPolicy

Kod błędu

policies.resetquota.InvalidRLPolicy

Treść odpowiedzi o błędzie

{
    "fault": {
        "faultstring": "Invalid rate limit policy quota_policy_name",
        "detail": {
            "errorcode": "policies.resetquota.InvalidRLPolicy"
        }
    }
}

Przykładowy komunikat o błędzie

{
    "fault": {
        "faultstring": "Invalid rate limit policy MyQuotaPolicy",
        "detail": {
            "errorcode": "policies.resetquota.InvalidRLPolicy"
        }
    }
}

Przyczyna

Ten błąd występuje, jeśli zasada limitu określona w elemencie <Quota> zasady resetowania limitu nie jest zdefiniowana na serwerze proxy interfejsu API. Element <Quota> jest obowiązkowy i wskazuje zasadę dotyczącą docelowego limitu, której licznik należy zaktualizować za pomocą zasady resetowania limitu. Tę zasadę dotyczącą limitów docelowych należy utworzyć i zdefiniować na tym samym serwerze proxy interfejsu API i musi być dostępna w trakcie procesu.

Załóżmy np., że element <Quota> jest zdefiniowany w sposób pokazany poniżej, ale jeśli element MyQuotaPolicy nie jest zdefiniowany w serwerze proxy interfejsu API, wystąpi powyższy błąd.

<Quota name="MyQuotaPolicy">

Diagnostyka

  1. Wskaż nieprawidłową nazwę zasady dotyczącej limitów określoną w zasadzie resetowania limitu. Nazwa zasady dotyczącej limitów znajdziesz w ciągu błędów. Na przykład w tym ciągu błędów nazwa zasady dotyczącej limitów to MyQuotaPolicy:

    "faultstring": "Invalid rate limit policy MyQuotaPolicy"
    
  2. Sprawdź wszystkie zasady resetowania limitów na serwerze proxy interfejsu API, w których wystąpił błąd. Wskaż konkretną zasadę resetowania limitu, w przypadku której zasada limitu określona w obowiązkowym elemencie <Quota> jest zgodna z nazwą określoną w kroku 1 powyżej.

    Na przykład ta zasada resetowania limitu określa zasadę limitu o nazwie MyQuotaPolicy zgodną z treścią w ciągu znaków błędów:

    <?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. Sprawdź, czy ta zasada dotycząca limitów została utworzona i zdefiniowana w tym samym serwerze proxy interfejsu API. Jeśli zasada dotycząca limitów nie istnieje w tym samym serwerze proxy interfejsu API, to jest przyczyną błędu.

    W powyższym przykładzie zasada dotycząca limitów MyQuotaPolicy powinna istnieć w procesie przed uruchomieniem zasady resetowania limitu Reset_Quota_Demo.

    W ramach tego procesu nie ma zasady dotyczącej limitów MyQuotaPolicy, więc otrzymasz kod błędu:

"errorcode": "policies.resetquota.InvalidRLPolicy"

Rozdzielczość

Sprawdź, czy zasada limitu zadeklarowana w elemencie <Quota> jest zdefiniowana na serwerze proxy interfejsu API. Ta zasada limitu docelowego musi być dostępna po wykonaniu zasady resetowania limitu.

FailedToResolveAllowCountRef

Kod błędu

policies.resetquota.FailedToResolveAllowCountRef

Treść odpowiedzi o błędzie

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

Przykładowy komunikat o błędzie

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

Klient otrzyma taki błąd: policies.ratelimit.QuotaViolation.

Przyczyna

Ten błąd występuje, jeśli odwołanie do zmiennej zawierającej liczbę dozwolonych w elemencie <Allow> zasady nie może zostać dopasowane do wartości. Ten element jest wymagany i określa kwotę, o którą ma zostać zmniejszony licznik limitu.

Diagnostyka

  1. Zidentyfikuj zasadę resetowania limitu, w której wystąpił błąd, oraz nazwę zmiennej referencyjnej, której nie można rozwiązać. Oba te elementy znajdziesz w odpowiedzi z komunikatem o błędzie.

    Na przykład w tym ciągu błędów nazwa zasady to ResetQuota, a odwołanie to 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. W pliku XML, który nie zezwala na zresetowanie limitów, sprawdź, czy nazwa używanej zmiennej referencyjnej odpowiada nazwie referencyjnej w odpowiedzi o błędzie (krok 1 powyżej).

    Na przykład ta zasada ustawia element z odwołaniem o nazwie request.header.allowcount, które odpowiada wywołaniu błędu:

    <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. Sprawdź, czy zmienna referencyjna jest zdefiniowana i dostępna w procesie, w którym wykonywana jest zasada resetowania limitu.

  4. Jeśli zmienna to:

    1. poza zakresem (niedostępne w konkretnym procesie, w którym jest wykonywana zasada) lub
    2. Nie można rozwiązać (nie określono)

    to jest jego przyczyna.

    W powyższym przykładzie wartość dozwolonej liczby w elemencie <Allow> powinna zostać pobrana z nagłówka żądania o nazwie allowcount. Edge nie może jednak przetworzyć żądania request.header.allowcount. Dzieje się tak, gdy w żądaniu do interfejsu API nie jest przekazywana wartość allowcount nagłówka.

    Oto przykładowe żądanie do interfejsu API, które nie przekazuje w żądaniu nagłówka allowcount:

    curl -v http://demo-eval-test.apigee.net/v1/reset_quota -H "Content-Type: application/json"
    

    Nagłówek allowcount nie jest przekazywany w ramach żądania, dlatego zmienna request.header.allowcount używana w elemencie <Allow> w powyższej zasadzie resetowania limitu jest niezdefiniowana, dlatego nie można jej rozwiązać. Otrzymasz wtedy odpowiedź o błędzie:

    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
    

Rozdzielczość

Sprawdź, czy zmienna, do której odwołuje się element <Allow>, istnieje lub jest zdefiniowana i dostępna w określonym procesie, w którym jest wykonywana zasada resetowania limitu.

Aby poprawić powyższy przykład, możesz zmodyfikować żądanie i uwzględnić w nim nagłówek allowcount, jak pokazano poniżej:

curl -v http://demo-eval-test.apigee.net/v1/reset_quota -H "Content-Type: application/json" -H "allowcount:30"

FailedToResolveRLPolicy

Kod błędu

policies.resetquota.FailedToResolveRLPolicy

Treść odpowiedzi o błędzie

{
    "fault": {
        "faultstring": "Failed to resolve rate limit policy",
        "detail": {
            "errorcode": "policies.resetquota.FailedToResolveRLPolicy"
        }
    }
}

Przykładowy komunikat o błędzie

{
    "fault": {
        "faultstring": "Failed to resolve rate limit policy",
        "detail": {
            "errorcode": "policies.resetquota.FailedToResolveRLPolicy"
        }
    }
}

Przyczyna

Ten błąd występuje, jeśli nie można znaleźć zmiennej, do której odwołuje się atrybut ref w elemencie <Quota>.

Jeśli na przykład atrybut ref jest ustawiony jako request.header.quotapolicy w elemencie <Quota>, ale nie jest dostępny w procesie serwera proxy interfejsu API, wystąpi błąd opisany powyżej.

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

Diagnostyka

  1. Sprawdź wszystkie zasady resetowania limitów na serwerze proxy interfejsu API, w których wystąpił błąd, i odszukaj zasadę resetowania limitu, w której nie można prawidłowo rozpoznać nazwy zmiennej referencyjnej określonej w elemencie <Quota>.

  2. Określ, czy zmienna jest zdefiniowana i dostępna w procesie, w którym wykonywana jest zasada resetowania limitu.

  3. Jeśli zmienna to:

    1. poza zakresem (niedostępne w konkretnym procesie, w którym jest wykonywana zasada) lub
    2. Nie można rozwiązać (nie określono)

    to jest jego przyczyna.

    W przykładzie poniżej nazwa zasady dotyczącej limitów docelowych powinna zostać pobrana z nagłówka żądania o nazwie quotapolicy. Edge nie może jednak rozwiązać żądania request.header.quotapolicy. Dzieje się tak, gdy nagłówek quotapolicy nie jest przekazywany w żądaniu do interfejsu 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>
    

    Oto przykładowe żądanie do interfejsu API, które nie przekazuje limitu nagłówka w żądaniu:

    curl -v http://demo-eval-test.apigee.net/v1/reset_quota -H "Content-Type: application/json"
    

    Ponieważ nagłówek quotapolicy nie jest przekazywany w ramach żądania, odniesienie request.header.quotapolicy używane w elemencie <Quota> w powyższej zasadzie resetowania limitu jest niezdefiniowane i nie można go rozwiązać. W rezultacie otrzymujesz odpowiedź o błędzie:

    "errorcode": "policies.resetquota.FailedToResolveRLPolicy"
    

Rozdzielczość

Sprawdź, czy atrybut ref, do którego odwołuje się element <Quota>, jest rozpoznawany w czasie działania i jest dostępny w konkretnym procesie, w którym jest wykonywana zasada resetowania limitu.

Aby poprawić powyższy przykład, możesz zmodyfikować żądanie i dodać do żądania nagłówek quotapolicy, jak pokazano poniżej:

curl -v http://demo-eval-test.apigee.net/v1/reset_quota -H "Content-Type: application/json" -H "quotapolicy:MyQuotaPolicy"