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 Reset Quota nie jest zdefiniowana w proxy interfejsu API. Element <Quota> jest obowiązkowy i określa docelową zasadę dotyczącą limitu, której licznik powinien zostać zaktualizowany za pomocą zasady Reset Quota. Ta docelowa zasada dotycząca limitu musi być utworzona i zdefiniowana w tym samym proxy interfejsu API i musi być dostępna podczas przepływu.

Załóżmy na przykład, że element<Quota> jest zdefiniowany w sposób widoczny poniżej, ale jeśli elementMyQuotaPolicy nie jest zdefiniowany w serwerze proxy interfejsu API, pojawi się powyższy błąd.

<Quota name="MyQuotaPolicy">

Diagnostyka

  1. Określ nieprawidłową nazwę zasady dotyczącej limitu, która została podana w zasadzie Reset Quota. Nazwę zasady dotyczącej limitów znajdziesz w ciągu błędu. Na przykład w tym ciągu błędu nazwa zasady Quota to MyQuotaPolicy:

    "faultstring": "Invalid rate limit policy MyQuotaPolicy"
    
  2. Sprawdź wszystkie zasady Reset Quota w serwerze proxy interfejsu API, w którym wystąpił błąd. Znajdź konkretną zasadę Reset Quota, w której zasada Quota określona w elemencie obowiązkowym <Quota> odpowiada nazwie zidentyfikowanej w kroku 1 powyżej.

    Na przykład poniższe zasady Reset Quota określają zasady Quota o nazwie MyQuotaPolicy, która pasuje do ciągu faultstring:

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

    W przykładzie powyżej zasady dotyczące limitu MyQuotaPolicy powinny występować w przepływie przed wykonaniem zasad resetowania limitu Reset_Quota_Demo.

    Ponieważ zasada dotycząca limitu MyQuotaPolicy nie występuje w przepływie, otrzymasz kod błędu:

"errorcode": "policies.resetquota.InvalidRLPolicy"

Rozdzielczość

Sprawdź, czy zasady dotyczące limitu zadeklarowane w elemencie <Quota> są zdefiniowane w serwerze proxy interfejsu API. Ta zasada dotycząca limitu docelowego musi być dostępna podczas wykonywania zasady Reset Quota.

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 brzmiał: 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ć przekształcone w wartość. Ten element jest wymagany i określa kwotę, o którą należy zmniejszyć licznik limitu.

Diagnostyka

  1. Określ zasadę Reset Quota, w której wystąpił błąd, oraz nazwę zmiennej odniesienia, której nie można rozpoznać. Oba te elementy znajdziesz w odpowiedzi z błędem.

    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 nieudanej zasady Reset Quota sprawdź, czy nazwa użytej zmiennej odwołania jest zgodna z nazwą odwołania podaną w odpowiedzi na błąd (krok 1 powyżej).

    Na przykład te zasady ustawiają element z odwołaniem o nazwie request.header.allowcount, która pasuje do nazwy 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 odniesienia jest zdefiniowana i dostępna w przepływie, w którym wykonywana jest zasada Reset Quota.

  4. Jeśli zmienna ma wartość:

    1. poza zakresem (niedostępne w określonym procesie, w którym są wykonywane zasady) lub
    2. nie można rozstrzygnąć (nie jest zdefiniowana)

    wtedy to jest przyczyną błędu.

    W przykładzie powyżej wartość dozwolonej liczby w elemencie <Allow> powinna być pobierana z nagłówka żądania o nazwie allowcount. Jednak Edge nie może rozpoznać request.header.allowcount. Dzieje się tak, jeśli 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 w ramach żądania:

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

    Ponieważ nagłówek allowcount nie jest przekazywany w ramach żądania, zmienna request.header.allowcount używana w elemencie <Allow> w powyższych zasadach ResetQuota jest niezdefiniowana i dlatego nie można jej rozpoznać. Otrzymasz więc 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
    

Rozdzielczość

Sprawdź, czy zmienna, do której odwołuje się element <Allow>, istnieje lub jest zdefiniowana i dostępna w konkretnym procesie, w którym wykonywane są zasady Reset Quota.

Aby poprawić przykład pokazany powyżej, 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 rozpoznać 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 przepływie proxy interfejsu API, pojawi się powyższy błąd.

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

Diagnostyka

  1. Sprawdź każdą zasadę Reset Quota w serwerze proxy interfejsu API, w którym wystąpił błąd, i zidentyfikuj zasadę Reset Quota, w której nazwa zmiennej odniesienia określonej w elemencie <Quota> nie może zostać prawidłowo rozpoznana.

  2. Sprawdź, czy zmienna jest zdefiniowana i dostępna w przepływie, w którym wykonywana jest zasada Reset Quota.

  3. Jeśli zmienna ma wartość:

    1. poza zakresem (niedostępne w określonym procesie, w którym są wykonywane zasady) lub
    2. nie można rozstrzygnąć (nie jest zdefiniowana)

    wtedy to jest przyczyną błędu.

    W przykładzie poniżej nazwa docelowej zasady limitu powinna zostać pobrana z nagłówka żądania o nazwie quotapolicy. Jednak Edge nie może rozpoznać request.header.quotapolicy. Dzieje się tak, gdy nagłówek quotapolicy nie jest przekazywany 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 części żądania:

    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ższych zasadach Reset Quota jest niezdefiniowane i nie można go rozpoznać. W rezultacie otrzymasz odpowiedź z błędem:

    "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 przepływie, w którym wykonywana jest zasada Reset Quota.

Aby poprawić przykład pokazany powyżej, możesz zmodyfikować żądanie, dodając 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"