Stai visualizzando la documentazione relativa a Apigee e Apigee ibrido.
Visualizza la documentazione di
Apigee Edge.
InvalidMessageWeight
Codice di errore
policies.ratelimit.InvalidMessageWeight
Corpo della risposta di errore
{ "fault": {jdoe "faultstring": "Invalid message weight value [invalid_value]", "detail": { "errorcode": "policies.ratelimit.InvalidMessageWeight" } } }
Esempio di messaggio di errore
{ "fault": { "faultstring": "Invalid message weight value 1.5", "detail": { "errorcode": "policies.ratelimit.InvalidMessageWeight" } } }
Causa
Questo errore si verifica se il valore specificato per l'elemento <MessageWeight>
tramite
una variabile di flusso non è valido (valore non intero).
Ad esempio, se il valore della variabile di flusso specificata per l'elemento <MessageWeight>
è 1,5 (valore non intero), si verifica l'errore.
Diagnosi
Identifica il valore non valido utilizzato per l'elemento
<MessageWeight>
nel criterio Spike Arrest. Puoi trovare queste informazioni nell'elementofaultstring
della risposta all'errore. Ad esempio, nell'errore seguente, il valore non valido utilizzato per l'elemento<MessageWeight>
è1.5
:"faultstring": "Invalid message weight value 1.5"
Esamina tutti i criteri relativi all'arresto dei picchi nel proxy API specifico in cui si è verificato l'errore. Potrebbero essere presenti uno o più criteri Spike Arrest in cui è specificato l'elemento
<MessageWeight>
.Ad esempio, il seguente criterio consente di specificare il valore di
<MessageWeight>
tramite una variabile di flusso denominatamessage_weight:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <SpikeArrest async="false" continueOnError="false" enabled="true" name="SpikeArrest_AuthProxy"> <DisplayName>SpikeArrest_AuthProxy</DisplayName> <Properties/> <Identifier ref="request.header.some-header-name"/> <Rate>100ps</Rate> <MessageWeight ref="message_weight"/> </SpikeArrest>
Determina il valore della variabile utilizzata nell'elemento
<MessageWeight>
dei criteri di arresto anomalo identificati. Il valore della variabile di flusso può essere estratto dalle intestazioni HTTP, parametri di ricerca, da un payload di richiesta XML o JSON, oppure definito in un altro criterio.- Individua il codice all'interno del proxy API, dove è stata definita prima la variabile.
- Una volta stabilito il criterio in cui la variabile viene definita e compilata per prima, controlla come è impostato il valore della variabile.
- Se il valore della variabile di flusso corrisponde al valore identificato nel passaggio 1 precedente, questo è la causa dell'errore.
Ad esempio, supponiamo che venga utilizzato un criterio JavaScript prima del criterio di arresto dei picchi per impostare la variabile
message_weight
in base al metodo di richiesta, come mostrato di seguito:var verb = context.getVariable("request.verb"); context.setVariable("message_weight", "1.5"); if (verb == 'POST') { context.setVariable("message_weight", "2"); }
Tieni presente che il valore della variabile
message_weight
è1.5
, che non è valido (valore non intero).
Risoluzione
Assicurati che il valore dell'elemento MessageWeight
sia valido (valore intero).
Per correggere l'esempio mostrato sopra, puoi modificare il valore della variabile
message_weight
in JavaScript in modo che sia un numero intero:
var verb = context.getVariable("request.verb");
context.setVariable("message_weight", "1");
if (verb == 'POST') {
context.setVariable("message_weight", "2");
}
FailedToResolveSpikeArrestRate
Codice di errore
policies.ratelimit.FailedToResolveSpikeArrestRate
Corpo della risposta di errore
{ "fault": { "faultstring": "Failed to resolve Spike Arrest Rate reference [reference] in SpikeArrest policy [api_policy]", "detail": { "errorcode": "policies.ratelimit.FailedToResolveSpikeArrestRate" } } }
Esempio di messaggio di errore
{ "fault": { "faultstring": "Failed to resolve Spike Arrest Rate reference request.header.rate in SpikeArrest policy SpikeArrest_AuthProxy", "detail": { "errorcode": "policies.ratelimit.FailedToResolveSpikeArrestRate" } } }
Causa
Questo errore si verifica se il riferimento alla variabile contenente l'impostazione della frequenza nell'elemento <Rate>
non può essere risolto in un valore all'interno del criterio Spike Arrest. Questo elemento è obbligatorio e viene utilizzato per specificare il tasso di arresto dei picchi nel formato {int}pm
o {int}ps
. Ad esempio, {int}pm
potrebbe essere 500pm
,
il che significa 500 chiamate al minuto. Analogamente, il valore 10ps
indica 10 chiamate al secondo.
Diagnosi
Identifica il criterio di arresto dei picchi in cui si è verificato l'errore e il nome del riferimento che non può essere risolto correttamente. Puoi trovare entrambi questi elementi nell'elemento faultstring della risposta di errore.
Ad esempio, nella seguente stringa di errore, il nome del criterio è
SpikeArrest_AuthProxy
e il riferimento èrequest.header.rate
:"faultstring": "Failed to resolve Spike Arrest Rate reference request.header.rate in SpikeArrest policy SpikeArrest_AuthProxy"
Nel codice XML del criterio Spike Arrest con errori, verifica che il nome del riferimento utilizzato corrisponda al nome di riferimento identificato nella stringa di errore (passaggio 1 sopra). ** **
Ad esempio, il seguente criterio consente di impostare l'elemento
con il riferimento denominato request.header.rate
, che corrisponde al contenuto della stringa di errore:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <SpikeArrest async="false" continueOnError="false" enabled="true" name="SpikeArrest_AuthProxy"> <DisplayName>SpikeArrest_AuthProxy</DisplayName> <Properties/> <Identifier ref="request.header.some-header-name"/> <Rate ref="request.header.rate"/> </SpikeArrest>
Determinare se la variabile è definita e disponibile nel flusso in cui viene eseguito il criterio di arresto anomalo.
Se la variabile è:
- fuori ambito (non disponibile nel flusso specifico in cui viene applicato il criterio)
- non può essere risolto (non è definito)
questa è la causa dell'errore.
Nell'esempio mostrato sopra, il valore del tasso di arresto dei picchi nell'elemento
<Rate>
deve essere recuperato dall'intestazione della richiesta denominata rate. Tuttavia, Apigee non è in grado di risolvere il problema request.header.rate. Ciò accade se l'intestazione rate non viene passata come parte della richiesta API.Ecco un esempio di richiesta API che non passa la tariffa dell'intestazione come parte della richiesta:
curl -v http://your_host_alias/check_spikearrest -H "Content-Type: application/json"
Dove your_host_alias è un dominio visibile al pubblico utilizzato per accedere alle API, come configurato nella proprietà
virtualhosts.hostAliases
nel file degli override. Consulta Specificare gli override della configurazione.Poiché l'intestazione rate non viene passata come parte della richiesta, il riferimento a request.header.rate utilizzato nell'elemento
<Rate>
del criterio Spike Arrest sopra indicato non è definito e non può essere risolto. Riceverai quindi il codice di errore:policies.ratelimit.FailedToResolveSpikeArrestRate
Risoluzione
Assicurati che la variabile a cui viene fatto riferimento nell'elemento <Rate>
esista/sia definita e disponibile nel flusso specifico in cui viene eseguito il criterio Spike Arrest.
Per correggere l'esempio riportato sopra, puoi modificare la richiesta in modo da includere l'intestazione rate, come mostrato di seguito:
curl -v http://your_host_alias/check_spikearrest -H "Content-Type: application/json" -H "rate:30ps"
Dove your_host_alias è un dominio visibile al pubblico utilizzato per accedere alle API, come configurato nella proprietà virtualhosts.hostAliases
nel file degli override.
Consulta Specificare gli override della configurazione.