Risoluzione dei problemi di reimpostazione degli errori di runtime della quota

Stai visualizzando la documentazione relativa a Apigee e Apigee ibrido.
Visualizza Documentazione di Apigee Edge.

InvalidRLPolicy

Codice di errore

policies.resetquota.InvalidRLPolicy

Corpo della risposta di errore

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

Esempio di messaggio di errore

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

Causa

Questo errore si verifica se il criterio per le quote specificato nell'elemento <Quota> della Il criterio di reimpostazione della quota non è definito nel proxy API. L'elemento <Quota> è obbligatorio e identifica il criterio per la quota target il cui contatore deve essere aggiornato tramite il criterio Reimposta quota. Questo criterio per la quota target deve essere creato e definito all'interno lo stesso proxy API e deve essere disponibile durante il flusso.

Ad esempio, supponiamo che l'elemento <Quota> sia definito come mostrato di seguito, ma se MyQuotaPolicy non è definito nel proxy API, viene visualizzato l'errore riportato sopra.

<Quota name="MyQuotaPolicy">

Diagnosi

  1. Identifica il nome non valido del criterio per le quote specificato nel criterio Reimposta quota. Il nome del criterio per le quote si trova nella stringa di errore. Ad esempio, nel la seguente stringa di errore, il nome del criterio per le quote è MyQuotaPolicy:

    "faultstring": "Invalid rate limit policy MyQuotaPolicy"
    
  2. Esamina ogni criterio di reimpostazione della quota nel proxy API in cui l'errore si è verificato un errore. Identifica il criterio specifico per la quota di reimpostazione in cui si trova il criterio per le quote specificato all'interno dell'elemento obbligatorio <Quota> corrisponde al nome identificato nel passaggio 1 riportato sopra.

    Ad esempio, il seguente criterio di reimpostazione della quota specifica un criterio per le quote denominato MyQuotaPolicy, che corrisponde a quanto contenuto nella stringa di errore:

    <?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. Determina se questo criterio per le quote viene creato e definito all'interno dello stesso proxy API. Se il criterio per le quote non esiste all'interno dello stesso proxy API, questa è la causa dell'errore.

    Nell'esempio mostrato sopra, il criterio per le quote MyQuotaPolicy dovrebbe nel flusso prima dell'esecuzione del criterio di reimpostazione della quota Reset_Quota_Demo.

    Poiché il criterio per le quote MyQuotaPolicy non esiste nel flusso, dovrai ricevi il codice di errore:

"errorcode": "policies.resetquota.InvalidRLPolicy"

Risoluzione

Assicurati che il criterio per le quote dichiarato nell'elemento <Quota> sia definito nel proxy API. Questo criterio per la quota target deve essere disponibile quando il criterio Reimposta quota .

FailedToResolveAllowCountRef

Codice di errore

policies.resetquota.FailedToResolveAllowCountRef

Corpo della risposta di errore

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

Esempio di messaggio di errore

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

Nota: il messaggio di errore riportato sopra non viene inviato come risposta al client. È visualizzato solo nello strumento Trace come un errore del criterio Reimposta quota. Uno screenshot di esempio è mostrato di seguito.

In Proprietà, la riga di errore viene compilata con un messaggio.

L'errore restituito al client sarà semplicemente: policies.ratelimit.QuotaViolation.

Causa

Questo errore si verifica se il riferimento alla variabile contenente il conteggio consentito in l'elemento <Allow> del criterio non può essere risolto in un valore. Questo è obbligatorio e specifica la quantità necessaria per diminuire il contatore della quota.

Diagnosi

  1. Identifica il criterio di reimpostazione della quota in cui si è verificato l'errore e il nome del la variabile di riferimento che non può essere risolta. Puoi trovare entrambi questi elementi nella risposta di errore.

    Ad esempio, nella stringa di errore seguente, il nome del criterio è ResetQuota e il riferimento è 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. Nel file XML del criterio di reimpostazione della quota non riuscito, verifica che il nome del riferimento corrisponde al nome di riferimento identificato nella risposta di errore (passaggio 1 sopra).

    Ad esempio, il seguente criterio consente di impostare l'elemento con il riferimento denominato request.header.allowcount, che corrisponde al contenuto dell'errore:

    <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. Determina se la variabile di riferimento è definita e disponibile nel flusso in eseguito dal criterio Reimposta quota.

  4. Se la variabile è:

    1. fuori ambito (non disponibile nel flusso specifico in cui viene eseguito il criterio) o
    2. non può essere risolto (non è definito)

    questa è la causa dell'errore.

    Nell'esempio mostrato sopra, il valore del conteggio consentito nell'elemento <Allow> dovrebbe essere recuperato dall'intestazione della richiesta denominata allowcount. Tuttavia, Apigee non è in grado di risolvere request.header.allowcount. Ciò si verifica se L'intestazione allowcount non viene passata come parte della richiesta API.

    Ecco un esempio di richiesta API che non passa l'intestazione allowcount come parte della richiesta:

    curl -v http://your_host_alias/v1/reset_quota -H "Content-Type: application/json"
    

    Dove your_host_alias è un dominio pubblico utilizzato per accedere alle tue API, come configurato nella proprietà virtualhosts.hostAliases nel file degli override. Consulta Specificare la configurazione override.

    Poiché l'intestazione allowcount non viene passata come parte della richiesta, la variabile request.header.allowcount utilizzato nell'elemento <Allow> nella sezione Reimposta sopra Il criterio per le quote non è definito e pertanto non può essere risolto. Riceverai quindi risposta all'errore:

    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
    

Risoluzione

Assicurati che la variabile a cui viene fatto riferimento nell'elemento <Allow> esista o sia definita e disponibile nel flusso specifico in cui viene eseguito il criterio Reimposta quota.

Per correggere l'esempio mostrato sopra, puoi modificare la richiesta in modo da includere il parametro allowcount come mostrato di seguito:

curl -v http://your_host_alias/v1/reset_quota -H "Content-Type: application/json" -H "allowcount:30"

Dove your_host_alias è un dominio pubblico utilizzato per accedere alle tue API, come configurato nella proprietà virtualhosts.hostAliases nel file degli override. Consulta Specificare la configurazione override.

FailedToResolveRLPolicy

Codice di errore

policies.resetquota.FailedToResolveRLPolicy

Corpo della risposta di errore

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

Esempio di messaggio di errore

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

Causa

Questo errore si verifica se la variabile a cui fa riferimento l'attributo ref in Impossibile risolvere l'elemento <Quota>.

Ad esempio, se l'attributo ref è impostato su request.header.quotapolicy nel <Quota> ma non è disponibile nel flusso del proxy API, riceverai il precedente.

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

Diagnosi

  1. Esamina ogni criterio di reimpostazione della quota nel proxy API in cui l'errore e identificare il criterio Reimposta quota in cui il nome del riferimento non è possibile risolvere correttamente la variabile specificata nell'elemento <Quota>.

  2. Determina se la variabile è definita e disponibile nel flusso in cui la variabile Viene eseguito il ripristino del criterio per le quote.

  3. Se la variabile è:

    1. fuori ambito (non disponibile nel flusso specifico in cui viene eseguito il criterio) o
    2. non può essere risolto (non è definito)

    questa è la causa dell'errore.

    Nell'esempio mostrato di seguito, il nome del criterio per la quota target deve essere recuperate dall'intestazione della richiesta denominata quotapolicy. Tuttavia, Apigee non è in grado per risolvere request.header.quotapolicy. Ciò si verifica se l'intestazione quotapolicy non viene passato nell'ambito della richiesta 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>
    

    Di seguito è riportato un esempio di richiesta API che non passa l'intestazione quotapolicy come parte della richiesta:

    curl -v http://your_host_alias/v1/reset_quota -H "Content-Type: application/json"
    

    Dove your_host_alias è un dominio pubblico utilizzato per accedere alle tue API, come configurato nella proprietà virtualhosts.hostAliases nel file degli override. Consulta Specificare la configurazione override.

    Poiché l'intestazione quotapolicy non viene passata come parte della richiesta, il riferimento request.header.quotapolicy utilizzato nell'elemento <Quota> nel campo Reimposta Il criterio per le quote non è definito e non può essere risolto. Di conseguenza, ricevi la risposta di errore:

    "errorcode": "policies.resetquota.FailedToResolveRLPolicy"
    

Risoluzione

Assicurati che l'attributo ref di riferimento nell'elemento <Quota> venga risolto in il runtime ed è disponibile nel flusso specifico in cui viene eseguito il criterio di reimpostazione della quota.

Per correggere l'esempio riportato sopra, puoi modificare la richiesta in modo da includere l'intestazione quotapolicy come mostrato di seguito:

curl -v http://your_host_alias/v1/reset_quota -H "Content-Type: application/json" -H "quotapolicy:MyQuotaPolicy"

Dove your_host_alias è un dominio pubblico utilizzato per accedere alle tue API, come configurato nella proprietà virtualhosts.hostAliases nel file degli override. Consulta Specificare la configurazione override.