Esta é a documentação da Apigee e da Apigee híbrida.
Confira a documentação da Apigee Edge.
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
Observação: a mensagem de erro acima não é enviada como uma resposta ao cliente. Ela só é vista na ferramenta Trace como um erro da política de redefinição de cota. Veja abaixo uma captura de tela de amostra.
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, a Apigee não consegue 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://your_host_alias/v1/reset_quota -H "Content-Type: application/json"
Em que your_host_alias é um domínio aberto ao público usado para acessar suas APIs, conforme configurado na propriedade
virtualhosts.hostAliases
do arquivo de modificações. Consulte Especificar substituições de configuração.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://your_host_alias/v1/reset_quota -H "Content-Type: application/json" -H "allowcount:30"
Em que your_host_alias é um domínio aberto ao público usado para acessar suas APIs,
conforme configurado na propriedade virtualhosts.hostAliases
do arquivo de modificações.
Consulte Especificar substituições de
configuração.
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, a Apigee não pode resolver 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://your_host_alias/v1/reset_quota -H "Content-Type: application/json"
Em que your_host_alias é um domínio aberto ao público usado para acessar suas APIs, conforme configurado na propriedade
virtualhosts.hostAliases
do arquivo de modificações. Consulte Especificar substituições de configuração.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://your_host_alias/v1/reset_quota -H "Content-Type: application/json" -H "quotapolicy:MyQuotaPolicy"
Em que your_host_alias é um domínio aberto ao público usado para acessar suas APIs,
conforme configurado na propriedade virtualhosts.hostAliases
do arquivo de modificações.
Consulte Especificar substituições de
configuração.