Está a ver a documentação do Apigee e do Apigee Hybrid.
Ver documentação do
Apigee Edge.
InvalidRLPolicy
Código de 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
Este erro ocorre se a política de quota especificada no elemento <Quota>
da política de quota de reposição não estiver definida no proxy de API. O elemento <Quota>
é obrigatório e identifica a política de quotas de destino cujo contador deve ser atualizado através da política de quotas de reposição. Esta política de quota de destino tem de ser criada e definida no mesmo proxy de API e tem de estar disponível durante o fluxo.
Por exemplo, suponhamos que o elemento <Quota>
está definido como se vê abaixo, mas se MyQuotaPolicy
não estiver definido no proxy da API, recebe o erro acima.
<Quota name="MyQuotaPolicy">
Diagnóstico
Identifique o nome da política de quota inválido especificado na política de reposição de quota. Pode encontrar o nome da política de quotas na faultstring. Por exemplo, na faultstring seguinte, o nome da política de quota é
MyQuotaPolicy:
"faultstring": "Invalid rate limit policy MyQuotaPolicy"
Examine cada uma das políticas de reposição de quota no proxy de API onde ocorreu a falha. Identifique a política de reposição de quota específica em que a política de quota especificada no elemento obrigatório
<Quota>
corresponde ao nome identificado no passo 1 acima.Por exemplo, a seguinte política Reset Quota especifica uma política Quota denominada
MyQuotaPolicy
, que corresponde ao que está em 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>
Determina se esta política de quotas é criada e definida no mesmo proxy de API. Se a política de quotas não existir no mesmo proxy de API, essa é a causa do erro.
No exemplo apresentado acima, a política de quota
MyQuotaPolicy
deve existir no fluxo antes de a política de reposição de quotaReset_Quota_Demo
ser executada.Como a política de quotas
MyQuotaPolicy
não existe no fluxo, recebe o código de erro:
"errorcode": "policies.resetquota.InvalidRLPolicy"
Resolução
Certifique-se de que a política de quotas declarada no elemento <Quota>
está definida no proxy de API. Esta política de quota de destino tem de estar disponível quando a política de reposição de quota é executada.
FailedToResolveAllowCountRef
Código de 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
Nota: a mensagem de erro acima não é enviada como resposta ao cliente. Só é visível na ferramenta Trace como um erro da política de reposição de quotas. Abaixo, é apresentada uma captura de ecrã de exemplo.
O erro devolvido ao cliente é simplesmente: policies.ratelimit.QuotaViolation
.
Causa
Este erro ocorre se a referência à variável que contém a contagem permitida no elemento <Allow>
da política não puder ser resolvida para um valor. Este elemento é obrigatório e especifica o valor para diminuir o contador de quotas.
Diagnóstico
Identifique a política de reposição de quota onde ocorreu o erro e o nome da variável de referência que não é possível resolver. Pode encontrar ambos os itens na resposta de erro.
Por exemplo, na faultstring seguinte, 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 da política de reposição de quota com falha, verifique se o nome da variável de referência usada corresponde ao nome de referência identificado na resposta de erro (passo 1 acima).
Por exemplo, a seguinte política define o elemento com a referência denominada
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>
Determinar se a variável de referência está definida e disponível no fluxo em que a política Reset Quota é executada.
Se a variável for:
- Fora do âmbito (não disponível no fluxo específico em que a política está a ser executada) ou
- não é possível resolver (não está definido)
Então, essa é a causa do erro.
No exemplo apresentado acima, o valor da contagem permitida no elemento
<Allow>
deve ser obtido a partir do cabeçalho do pedido denominado allowcount. No entanto, o Apigee não consegue resolver o request.header.allowcount. Isto acontece se o cabeçalho allowcount não for transmitido como parte do pedido API.Segue-se um exemplo de um pedido de API que não transmite o cabeçalho allowcount como parte do pedido:
curl -v http://your_host_alias/v1/reset_quota -H "Content-Type: application/json"
Em que your_host_alias é um domínio público usado para aceder às suas APIs, conforme configurado na propriedade
virtualhosts.hostAliases
no ficheiro de substituições. Consulte Especifique substituições de configuração.Uma vez que o cabeçalho allowcount não é transmitido como parte do pedido, a variável request.header.allowcount usada no elemento
<Allow>
na política de reposição de quota acima não está definida e, por isso, não pode ser resolvida. Assim, recebe 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
Certifique-se de que a variável referenciada no elemento <Allow>
existe/está definida e está disponível no fluxo específico, onde a política de reposição de quota é executada.
Para corrigir o exemplo apresentado acima, pode modificar o pedido para incluir o cabeçalho allowcount, conforme 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 público usado para aceder às suas APIs,
conforme configurado na propriedade virtualhosts.hostAliases
no ficheiro de substituições.
Consulte Especifique substituições de
configuração.
FailedToResolveRLPolicy
Código de 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
Este erro ocorre se não for possível resolver a variável referenciada pelo atributo ref
no elemento <Quota>
.
Por exemplo, se o atributo ref
estiver definido como request.header.quotapolicy
no elemento <Quota>
, mas não estiver disponível no fluxo do proxy da API, recebe o erro acima.
<Quota ref="request.header.quotapolicy">
Diagnóstico
Examine cada uma das políticas de reposição de quota no proxy de API onde ocorreu a falha e identifique a política de reposição de quota onde o nome da variável de referência especificado 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 Reset Quota é executada.
Se a variável for:
- Fora do âmbito (não disponível no fluxo específico onde a política é executada) ou
- não é possível resolver (não está definido)
Então, essa é a causa do erro.
No exemplo apresentado abaixo, o nome da política de quotas de destino deve ser obtido a partir do cabeçalho do pedido denominado quotapolicy. No entanto, o Apigee não consegue resolver o request.header.quotapolicy. Isto acontece se o cabeçalho quotapolicy não for transmitido como parte do pedido da 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>
Segue-se um exemplo de pedido API que não passa o cabeçalho quotapolicy como parte do pedido:
curl -v http://your_host_alias/v1/reset_quota -H "Content-Type: application/json"
Em que your_host_alias é um domínio público usado para aceder às suas APIs, conforme configurado na propriedade
virtualhosts.hostAliases
no ficheiro de substituições. Consulte Especifique substituições de configuração.Uma vez que o cabeçalho quotapolicy não é transmitido como parte do pedido, a referência request.header.quotapolicy usada no elemento
<Quota>
na política de reposição de quota acima não está definida e não pode ser resolvida. Como resultado, recebe a resposta de erro:"errorcode": "policies.resetquota.FailedToResolveRLPolicy"
Resolução
Certifique-se de que o atributo ref
referenciado no elemento <Quota>
é resolvido no tempo de execução e está disponível no fluxo específico, onde a política de reposição de quota é executada.
Para corrigir o exemplo apresentado acima, pode modificar o pedido 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 público usado para aceder às suas APIs,
conforme configurado na propriedade virtualhosts.hostAliases
no ficheiro de substituições.
Consulte Especifique substituições de
configuração.