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

Wyświetlasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X.
info

InvalidRLPolicy

Kod błędu

policies.resetquota.InvalidRLPolicy

Treść odpowiedzi na błąd

{
    "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 dotycząca limitu określona w elemencie <Quota> zasady resetowania limitu nie jest zdefiniowana na serwerze proxy interfejsu API. Element <Quota> jest obowiązkowy i identyfikuje docelowe zasady dotyczące limitu, których licznik powinien zostać zaktualizowany za pomocą zasad dotyczących resetowania limitu. Ta docelowa zasada dotycząca limitu musi zostać utworzona i zdefiniowana w tym samym serwerze proxy interfejsu API oraz musi być dostępna podczas przepływu.

Załóżmy na przykład, że element <Quota> jest zdefiniowany poniżej, ale jeśli MyQuotaPolicy nie jest zdefiniowany na serwerze proxy interfejsu API, występuje ten błąd.

<Quota name="MyQuotaPolicy">

Diagnostyka

  1. Odszukaj nieprawidłowe imię i nazwisko w zasadach dotyczących limitu, które są określone w zasadach dotyczących resetowania limitu. Nazwa zasady dotyczącej limitu znajdzie się w ciągu tekstowym błędu. Na przykład w następującej informacji o błędzie nazwa zasady dotyczącej limitu to MyQuotaPolicy:

    "faultstring": "Invalid rate limit policy MyQuotaPolicy"
    
  2. Sprawdź każdą zasadę resetowania limitu na serwerze proxy API, na którym wystąpił błąd. Zidentyfikuj konkretną zasadę Resetowanie limitu, w której zasada limitu określona w obowiązkowym elemencie <Quota> odpowiada nazwie określonej w kroku 1 powyżej.

    Na przykład ta zasada resetowania limitu określa zasadę limitu o nazwie MyQuotaPolicy, która jest zgodna z ciągiem znaków błędu:

    <?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 limitu została utworzona i zdefiniowana w tym samym internetowym serwerze proxy. Jeśli w tym samym interfejsie API nie ma limitu, to jest przyczyną błędu.

    W wybranym przykładzie zasada dotycząca limitu MyQuotaPolicy powinna występować w przepływie przed wykonaniem zasady Reset limitu Reset_Quota_Demo.

    Ponieważ zasada limitów MyQuotaPolicy nie istnieje w przepływie, otrzymasz kod błędu:

"errorcode": "policies.resetquota.InvalidRLPolicy"

Rozdzielczość

Upewnij się, że zasada limitów zadeklarowana w elemencie <Quota> jest zdefiniowana na serwerze proxy interfejsu API. Ta docelowa zasada dotycząca limitu musi być dostępna, gdy zasada Resetowanie limitu jest wykonywana.

FailedToResolveAllowCountRef

Kod błędu

policies.resetquota.FailedToResolveAllowCountRef

Treść odpowiedzi na błąd

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

Błąd zwrócony klientowi będzie wyglądał tak: 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ć przywrócone do wartości. Ten element jest wymagany i określa kwotę, o którą licznik ma zostać zmniejszony.

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 na błąd.

    Na przykład w tym przykładowym 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 zasad Resetowanie limitu, który nie został zaktualizowany, sprawdź, czy nazwa użytej zmiennej referencyjnej jest zgodna z nazwą referencyjną wskazaną w odpowiedzi na błąd (patrz krok 1 powyżej).

    Na przykład ta zasada ustawia element z odwołaniem o nazwie request.header.allowcount, które jest zgodne z tym, co jest w błędzie:

    <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 przepływie, w którym działa zasada resetowania limitu.

  4. Jeśli zmienna jest:

    1. poza zakresem (niedostępne w ramach konkretnego procesu, w którym jest wykonywana zasada) lub
    2. nie może zostać rozwiązana (nie jest zdefiniowana).

    to jest przyczyna błędu.

    W wymienionym powyżej przykładzie wartość dozwolonej liczby w elemencie <Allow> powinna być pobierana z nagłówka żądania o nazwie allowcount. Zespół Edge nie może jednak przetworzyć żądania request.header.allowcount. Dzieje się tak, gdy nagłówek allowcount nie jest przekazywany w ramach żądania interfejsu API.

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

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

    Ponieważ nagłówek allowcount nie jest przekazywany jako część żądania, zmienna request.header.allowcount użyta w elemencie <Allow> w powyższym poleceniu RESET Quota policy jest niezdefiniowana, więc nie można jej rozwiązać. Otrzymasz więc odpowiedź z błędem:

    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ść

Upewnij się, że zmienna, do której odwołuje się element <Allow>, istnieje, jest zdefiniowana i dostępna w konkretnym przepływie, w którym działa zasada Resetowanie limitu.

Aby poprawić powyższy przykład, możesz zmodyfikować żądanie, aby zawierało 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 na błąd

{
    "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 odnaleźć zmiennej, do której odwołuje się atrybut ref w elemencie <Quota>.

Jeśli na przykład atrybut ref ma wartość request.header.quotapolicy w elemencie <Quota>, ale jest niedostępny w procesie proxy interfejsu API, pojawi się powyższy błąd.

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

Diagnostyka

  1. Sprawdź każdą z zasad resetowania limitu w serwerze proxy interfejsu API, w której wystąpił błąd, i zidentyfikuj zasadę resetowania limitu, w której nazwa zmiennej referencyjnej określona w elemencie <Quota> nie może zostać poprawnie rozwiązana.

  2. Sprawdź, czy zmienna jest zdefiniowana i dostępna w przepływie, w którym działa zasada resetowania limitu.

  3. Jeśli zmienna to:

    1. poza zakresem (niedostępne w ramach konkretnego procesu, w którym jest wykonywana zasada) lub
    2. nie może zostać rozwiązana (nie jest zdefiniowana).

    to jest przyczyna błędu.

    W przykładzie poniżej nazwa zasady limitu docelowego powinna być pobierana z nagłówka żądania o nazwie quotapolicy. Edge nie może jednak rozwiązać parametru request.header.quotapolicy. Dzieje się tak, jeśli 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ład żądania interfejsu API, które nie zawiera nagłówka quotapolicy:

    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, odwołanie request.header.quotapolicy użyte w elemencie <Quota> w powyższym poleceniu resetowania zasad dotyczących limitu kwoty jest nieokreślone i nie można go rozwiązać. W rezultacie otrzymasz ten komunikat o błędzie:

    "errorcode": "policies.resetquota.FailedToResolveRLPolicy"
    

Rozdzielczość

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

Aby poprawić powyższy przykład, możesz zmodyfikować żądanie, aby zawierało 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"