Esta é a documentação do Apigee Edge.
Acesse
Documentação da Apigee X. informações
InvalidRLPolicy
Código do erro
policies.resetquota.InvalidRLPolicy
Corpo da resposta de erro
{ "fault": { "faultstring": "Invalid rate limit policy quota_policy_name", "detail": { "errorcode": "policies.resetquota.InvalidRLPolicy" } } }
Exemplo de mensagem de erro
{
"fault": {
"faultstring": "Invalid rate limit policy MyQuotaPolicy",
"detail": {
"errorcode": "policies.resetquota.InvalidRLPolicy"
}
}
}
Causa
Esse erro ocorrerá se a política de cota especificada no elemento <Quota>
da política de redefinição de cota não estiver definida no proxy de API. O elemento <Quota>
é obrigatório e identifica a política de cota de destino com o contador que precisa ser atualizado por meio da política de redefinição de cota. Essa política de cota de destino precisa ser criada e definida no mesmo proxy de API e precisa estar disponível durante o fluxo.
Por exemplo, digamos que o elemento <Quota>
esteja definido como visto abaixo, mas se MyQuotaPolicy
não estiver definido no proxy de API, você receberá o erro acima.
<Quota name="MyQuotaPolicy">
Diagnóstico
Identifique o nome da política de cota inválido especificado na política de redefinição de cota. Encontre o nome da política de cota na string de falha. Por exemplo, na string de falha a seguir, o nome da política de cota é
MyQuotaPolicy:
"faultstring": "Invalid rate limit policy MyQuotaPolicy"
Examine cada uma das políticas de redefinição de cota no proxy de API em que a falha ocorreu. Identifique a política de redefinição de cota específica, em que a política de cota especificada no elemento obrigatório
<Quota>
corresponde ao nome identificado na Etapa 1 acima.Por exemplo, a seguinte política de redefinição de cota especifica uma política de cota chamada
MyQuotaPolicy
, que corresponde ao que está na string de falha:<?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>
Determine se essa política de cota foi criada e definida no mesmo proxy de API. Se a política de cota não existir no mesmo proxy de API, essa será a causa do erro.
No exemplo mostrado acima, a política de cota
MyQuotaPolicy
precisa existir no fluxo antes da execução da política de redefinição de cotaReset_Quota_Demo
.Como a política de cota
MyQuotaPolicy
não existe no fluxo, você receberá o código de erro:
"errorcode": "policies.resetquota.InvalidRLPolicy"
Resolução
Certifique-se de que a política de cota declarada no elemento <Quota>
esteja definida no proxy de API. Essa política de cota de destino precisa estar disponível quando a política de redefinição de cota é executada.
FailedToResolveAllowCountRef
Código do erro
policies.resetquota.FailedToResolveAllowCountRef
Corpo da resposta de erro
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
Exemplo de mensagem de erro
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
O erro retornado ao cliente será simplesmente: policies.ratelimit.QuotaViolation
.
Causa
Esse erro ocorrerá se a referência à variável que contém a contagem de permissões no elemento <Allow>
da política não puder ser resolvida como um valor. Esse elemento é obrigatório e especifica o valor para diminuir o contador de cotas.
Diagnóstico
Identifique a política de redefinição de cota em que o erro ocorreu e o nome da variável de referência que não pode ser resolvida. Você pode encontrar esses dois itens na resposta de erro.
Por exemplo, na seguinte string de falha, o nome da política é
ResetQuota
e a referência é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
No XML de política de redefinição de cota com falha, verifique se o nome da variável de referência usada corresponde ao nome identificado na resposta de erro (Etapa 1 acima).
Por exemplo, a política a seguir define o elemento com a referência chamada
request.header.allowcount
, que corresponde ao que está no erro:<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>
Determine se a variável de referência está definida e disponível no fluxo em que a política de redefinição de cota é executada.
Se a variável for:
- fora do escopo (não disponível no fluxo específico em que a política está sendo executada) ou
- não é possível resolver (não está definida)
essa é a causa do erro.
No exemplo mostrado acima, o valor da contagem permitida no elemento
<Allow>
precisa ser recuperado do cabeçalho da solicitação chamado allowcount. No entanto, O Edge não conseguiu resolver o request.header.allowcount. Isso acontece quando o cabeçalho allowcount não é transmitido como parte da solicitação de API.Veja um exemplo de solicitação de API que não transmite o cabeçalho allowcount como parte da solicitação:
curl -v http://demo-eval-test.apigee.net/v1/reset_quota -H "Content-Type: application/json"
Como o cabeçalho allowcount não é transmitido como parte da solicitação, a variável request.header.allowcount usada no elemento
<Allow>
na política de redefinição de cota acima é indefinida e, portanto, não pode ser resolvida. Portanto, você receberá a resposta de erro: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
Resolução
Verifique se a variável mencionada no elemento <Allow>
existe/está definida e disponível no fluxo específico, em que a política de redefinição de cota é executada.
Para corrigir o exemplo mostrado acima, você pode modificar a solicitação para incluir o cabeçalho allowcount como mostrado abaixo:
curl -v http://demo-eval-test.apigee.net/v1/reset_quota -H "Content-Type: application/json" -H "allowcount:30"
FailedToResolveRLPolicy
Código do erro
policies.resetquota.FailedToResolveRLPolicy
Corpo da resposta de erro
{
"fault": {
"faultstring": "Failed to resolve rate limit policy",
"detail": {
"errorcode": "policies.resetquota.FailedToResolveRLPolicy"
}
}
}
Exemplo de mensagem de erro
{
"fault": {
"faultstring": "Failed to resolve rate limit policy",
"detail": {
"errorcode": "policies.resetquota.FailedToResolveRLPolicy"
}
}
}
Causa
Esse erro ocorrerá se a variável mencionada pelo atributo ref
no elemento <Quota>
não puder ser resolvida.
Por exemplo, se o atributo ref
estiver definido como request.header.quotapolicy
no elemento <Quota>
, mas não estiver disponível no fluxo de proxy de API, você receberá o erro acima.
<Quota ref="request.header.quotapolicy">
Diagnóstico
Examine cada uma das políticas de redefinição de cota no proxy de API em que a falha ocorreu e identifique a política de redefinição de cota em que o nome da variável de referência especificada no elemento
<Quota>
não pode ser resolvido corretamente.Determine se a variável está definida e disponível no fluxo em que a política de redefinição de cota é executada.
Se a variável for:
- fora do escopo (não disponível no fluxo específico em que a política é executada) ou
- não é possível resolver (não está definida)
essa é a causa do erro.
No exemplo mostrado abaixo, o nome da política de cota de destino deve ser recuperado do cabeçalho da solicitação chamado quotapolicy. No entanto, o Edge não consegue para resolver a request.header.quotapolicy. Isso acontecerá se o cabeçalho quotapolicy não for transmitido como parte da solicitação de 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>
Veja um exemplo de solicitação de API que não transmite o cabeçalho quotapolicy como parte da solicitação:
curl -v http://demo-eval-test.apigee.net/v1/reset_quota -H "Content-Type: application/json"
Como o cabeçalho quotapolicy não foi passado como parte da solicitação, a referência request.header.quotapolicy usada no elemento
<Quota>
na política de redefinição de cota acima é indefinida e não pode ser resolvida. Como resultado, você recebe a resposta de erro:"errorcode": "policies.resetquota.FailedToResolveRLPolicy"
Resolução
Verifique se o atributo ref
mencionado no elemento <Quota>
é resolvido no ambiente de execução e está disponível no fluxo específico, em que a política de redefinição de cota é executada.
Para corrigir o exemplo mostrado acima, você pode modificar a solicitação para incluir o cabeçalho quotapolicy conforme mostrado abaixo:
curl -v http://demo-eval-test.apigee.net/v1/reset_quota -H "Content-Type: application/json" -H "quotapolicy:MyQuotaPolicy"