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

Wyświetlasz dokumentację Apigee Edge.
Przejdź do Dokumentacja Apigee X.
informacje.

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 limitów określona w elemencie <Quota> funkcji Zasada resetowania limitu nie jest zdefiniowana na serwerze proxy interfejsu API. Element <Quota> jest wymagany i identyfikuje zasadę dotyczącą limitu docelowego, której licznik powinien być aktualizowany zasady resetowania limitów. Tę zasadę dotyczącą limitów docelowych należy utworzyć i zdefiniować w ten sam serwer proxy API i musi być dostępny podczas procesu.

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

<Quota name="MyQuotaPolicy">

Diagnostyka

  1. Znajdź nieprawidłową nazwę zasady dotyczącej limitu określoną w zasadzie resetowania limitu. Nazwę zasady dotyczącej limitów znajdziesz w ciągu błędu. Na przykład w polu ten ciąg błędów, nazwa zasady limitów to MyQuotaPolicy:

    "faultstring": "Invalid rate limit policy MyQuotaPolicy"
    
  2. Sprawdź każdą zasadę resetowania limitu na serwerze proxy API, w którym wystąpił błąd miało miejsce. Wskaż konkretną zasadę resetowania limitu, w której znajduje się zasada dotycząca limitów określone w obowiązkowym elemencie <Quota> pasuje do nazwy zidentyfikowanej w kroku 1 powyżej.

    Na przykład ta zasada resetowania limitu określa zasadę limitu o nazwie MyQuotaPolicy, który jest zgodny z tekstem w ciągu znakó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. Określ, czy ta zasada limitów została utworzona i zdefiniowana na tym samym serwerze proxy interfejsu API. Jeśli w tym samym interfejsie API nie ma limitu, to jest przyczyną błędu.

    W przykładzie powyżej zasada dotycząca limitów MyQuotaPolicy powinna istnieją w przepływie przed wykonaniem zasady Reset_Quota_Demo dotyczącą resetowania limitów.

    Ponieważ zasada limitów MyQuotaPolicy nie istnieje w tym przepływie, zostanie wyświetlony kod błędu:

"errorcode": "policies.resetquota.InvalidRLPolicy"

Rozdzielczość

Upewnij się, że zasada limitów zadeklarowana w elemencie <Quota> jest zdefiniowana w parametrze Proxy API. Ta zasada dotycząca limitu docelowego musi być dostępna, gdy zasada resetowania limitu .

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 do klienta będzie po prostu: policies.ratelimit.QuotaViolation.

Przyczyna

Ten błąd występuje, jeśli odwołanie do zmiennej zawierającej liczbę dozwolonych elementów w argumencie elementu <Allow> zasady nie można przekształcić w wartość. Ten element jest wymagany i określa kwotę do zmniejszenia licznika 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 produkty znajdziesz w odpowiedzi na błąd.

    Na przykład w tym poniższym ciągu znaków nazwa zasady to ResetQuota plik referencyjny 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 nieudanym pliku XML zasady resetowania limitu sprawdź, czy nazwa pliku referencyjnego używana zmienna odpowiada nazwie referencyjnej zidentyfikowanej w odpowiedzi na błąd (krok 1 powyżej).

    Na przykład ta zasada ustawia element z odwołaniem o nazwie request.header.allowcount, która zawiera treść 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. Określ, czy zmienna referencyjna jest zdefiniowana i dostępna w przepływie uruchamianą przez zasadę resetowania limitu.

  4. Jeśli zmienna to:

    1. poza zakresem (niedostępne w ramach konkretnego procesu, w którym są realizowane zasady) lub
    2. nie można rozwiązać (nie jest zdefiniowany)

    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. Pamiętaj jednak: Edge nie może znaleźć żądania request.header.allowcount. Dzieje się tak, gdy nagłówek allowcount nie jest przekazywany w ramach żądania do interfejsu API.

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

    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 resetowania zasad dotyczących limitu kwoty jest niezdefiniowana, więc nie można jej rozwiązać. Otrzymasz więc odpowiedź na błąd:

    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ępne w ramach konkretnego procesu, w którym jest wykonywana zasada resetowania limitu.

Aby poprawić ten przykład, możesz zmodyfikować żądanie, tak aby zawierało parametr 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 do zmiennej, do której odwołuje się atrybut ref w tagu, Nie można znaleźć elementu <Quota>.

Jeśli na przykład atrybut ref jest ustawiony jako request.header.quotapolicy w <Quota>, ale jest niedostępny w procesie serwera proxy interfejsu API, otrzymasz powyżej.

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

Diagnostyka

  1. Sprawdź każdą zasadę resetowania limitu na serwerze proxy API, w którym wystąpił błąd i wskazać zasadę resetowania limitu, gdzie nazwa pliku referencyjnego zmiennej określonej w elemencie <Quota> nie można poprawnie rozwiązać.

  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 konkretnym procesie, w którym jest realizowana zasada) lub
    2. nie można rozwiązać (nie jest zdefiniowany)

    to jest jego przyczyną.

    W przykładzie poniżej nazwa zasady limitu docelowego powinna wyglądać tak: pobrane z nagłówka żądania o nazwie quotapolicy. Edge nie może jednak aby rozwiązać problem z request.header.quotapolicy. Dzieje się tak, jeśli quotapolicy nagłówka nie jest przekazywana w ramach żądania 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 nagłówka quotapolicy jako do żądania:

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

    Nagłówek quotapolicy nie jest przekazywany jako część żądania, więc odwołanie request.header.quotapolicy użyty w elemencie <Quota> w powyższym poleceniu resetowania Zasada dotycząca limitów jest niezdefiniowana i nie można jej 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>, ma wartość środowiska wykonawczego i jest dostępne w ramach określonego procesu, w którym jest wykonywana zasada resetowania limitu.

Aby poprawić przykład powyżej, możesz zmodyfikować żądanie, tak aby zawierało nagłówek quotapolicy w następujący sposób:

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