Vous consultez la documentation d'Apigee Edge.
Accédez à la documentation sur Apigee X. info
InvalidRLPolicy
Code d'erreur
policies.resetquota.InvalidRLPolicy
Corps de la réponse d'erreur
{ "fault": { "faultstring": "Invalid rate limit policy quota_policy_name", "detail": { "errorcode": "policies.resetquota.InvalidRLPolicy" } } }
Exemple de message d'erreur
{
"fault": {
"faultstring": "Invalid rate limit policy MyQuotaPolicy",
"detail": {
"errorcode": "policies.resetquota.InvalidRLPolicy"
}
}
}
Cause
Cette erreur se produit si la règle de quotas spécifiée dans l'élément <Quota>
de la règle de réinitialisation des quotas ResetQuota n'est pas définie dans le proxy d'API. L'élément <Quota>
est obligatoire et identifie la règle de quotas cible dont le compteur doit être mis à jour par le biais de la règle de réinitialisation des quotas ResetQuota. Cette règle de quotas cible doit être créée et définie dans le même proxy d'API et doit être disponible pendant le flux.
Par exemple, supposons que l'élément <Quota>
soit défini comme indiqué ci-dessous. Si MyQuotaPolicy
n'est pas défini dans le proxy d'API, vous obtenez l'erreur ci-dessus.
<Quota name="MyQuotaPolicy">
Diagnostic
Identifiez le nom de règle de quotas non valide spécifié dans la règle de réinitialisation des quotas ResetQuota. Vous pouvez trouver le nom de la règle de quotas à partir de la chaîne d'erreur. Par exemple, dans la chaîne d'erreur suivante, le nom de la règle de quotas est
MyQuotaPolicy:
."faultstring": "Invalid rate limit policy MyQuotaPolicy"
Examinez chacune des règles de réinitialisation des quotas ResetQuota dans le proxy d'API où l'échec s'est produit. Identifiez la règle de réinitialisation des quotas ResetQuota spécifique dans laquelle la règle de quotas spécifiée dans l'élément obligatoire
<Quota>
correspond au nom identifié à l'étape 1 ci-dessus.Par exemple, la règle de réinitialisation des quotas ResetQuota suivante spécifie une règle de quotas nommée
MyQuotaPolicy
, qui correspond au contenu de la chaîne d'erreur :<?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>
Déterminez si cette règle de quotas est créée et définie dans le même proxy d'API. Si la règle de quotas n'existe pas dans le même proxy d'API, alors il s'agit de la cause de l'erreur.
Dans l'exemple reprisci-dessus, la règle de quotas
MyQuotaPolicy
doit exister dans le flux avant l'exécution de la règle de réinitialisation des quotas ResetQuotaReset_Quota_Demo
.Comme la règle de quotas
MyQuotaPolicy
n'existe pas dans le flux, vous recevrez le code d'erreur :
"errorcode": "policies.resetquota.InvalidRLPolicy"
Solution
Vérifiez que la règle de quotas déclarée dans l'élément <Quota>
est définie dans le proxy d'API. Cette règle de quotas cible doit être disponible lors de l'exécution de la règle de réinitialisation des quotas ResetQuota.
FailedToResolveAllowCountRef
Code d'erreur
policies.resetquota.FailedToResolveAllowCountRef
Corps de la réponse d'erreur
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
Exemple de message d'erreur
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
L'erreur renvoyée au client sera simplement : policies.ratelimit.QuotaViolation
.
Cause
Cette erreur se produit si la référence à la variable contenant le nombre autorisé dans l'élément <Allow>
de la règle ne peut pas être transformée en valeur. Cet élément est obligatoire et spécifie le montant nécessaire pour diminuer le compteur de quotas.
Diagnostic
Identifiez la règle de réinitialisation des quotas ResetQuota où l'erreur s'est produite et le nom de la variable de référence qui ne peut pas être résolue. Ces deux éléments se trouvent dans la réponse d'erreur.
Par exemple, dans la chaîne d'erreur suivante, le nom de la règle est
ResetQuota
et la référence estrequest.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
Dans le XML de la règle de réinitialisation des quotas ResetQuota ayant échoué, vérifiez que le nom de la variable de référence utilisée correspond au nom de la référence identifiée dans la réponse d'erreur (étape 1 ci-dessus).
Par exemple, la règle suivante définit l'élément avec la référence nommée
request.header.allowcount
, qui correspond au contenu de l'erreur :<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>
Déterminez si la variable de référence est définie et disponible dans le flux dans lequel la règle de réinitialisation des quotas ResetQuota est exécutée.
Si la variable est :
- hors du champ d'application (non disponible dans le flux spécifique où la règle est exécutée), ou
- impossible à résoudre (non définie),
alors il s'agit de la cause de l'erreur.
Dans l'exemple ci-dessus, la valeur du nombre autorisé dans l'élément
<Allow>
est censéeêtre extraite de l'en-tête de requête nommé allowcount. Cependant, Edge ne peut pas résoudre request.header.allowcount. Cela se produit si l'en-tête allowcount n'est pas transmis dans le cadre de la requête API.Voici un exemple de requête API qui ne transmet pas l'en-tête allowcount dans le cadre de la requête :
curl -v http://demo-eval-test.apigee.net/v1/reset_quota -H "Content-Type: application/json"
Étant donné que l'en-tête allowcount n'est pas transmis dans le cadre de la requête, la variable request.header.allowcount utilisée dans l'élément
<Allow>
de la règle de réinitialisation des quotas ResetQuota ci-dessus est indéfinie et ne peut donc pas être résolue. Vous recevrez donc la réponse d'erreur suivante :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
Solution
Vérifiez que la variable référencée dans l'élément <Allow>
existe/est définie et disponible dans le flux spécifique, où la règle de réinitialisation des quotas ResetQuota s'exécute.
Pour corriger l'exemple ci-dessus, vous pouvez modifier la requête pour inclure l'en-tête allowcount, comme indiqué ci-dessous :
curl -v http://demo-eval-test.apigee.net/v1/reset_quota -H "Content-Type: application/json" -H "allowcount:30"
FailedToResolveRLPolicy
Code d'erreur
policies.resetquota.FailedToResolveRLPolicy
Corps de la réponse d'erreur
{
"fault": {
"faultstring": "Failed to resolve rate limit policy",
"detail": {
"errorcode": "policies.resetquota.FailedToResolveRLPolicy"
}
}
}
Exemple de message d'erreur
{
"fault": {
"faultstring": "Failed to resolve rate limit policy",
"detail": {
"errorcode": "policies.resetquota.FailedToResolveRLPolicy"
}
}
}
Cause
Cette erreur se produit si la variable référencée par l'attribut ref
dans l'élément <Quota>
ne peut pas être résolue.
Par exemple, si l'attribut ref
est défini sur request.header.quotapolicy
dans l'élément <Quota>
, mais n'est pas disponible dans le flux de proxy d'API, vous obtenez alors l'erreur ci-dessus.
<Quota ref="request.header.quotapolicy">
Diagnostic
Examinez chacune des règles de réinitialisation des quotas ResetQuota dans le proxy d'API où la défaillance a eu lieu et identifiez la règle de réinitialisation des quotas ResetQuota où le nom de la variable de référence spécifiée dans l'élément
<Quota>
ne peut pas être résolu correctement.Déterminez si la variable est définie et disponible dans le flux dans lequel s'exécute la règle de réinitialisation des quotas ResetQuota.
Si la variable est :
- hors du champ d'application (non disponible dans le flux spécifique où la règle est exécutée) ou
- impossible à résoudre (non définie),
alors il s'agit de la cause de l'erreur.
Dans l'exemple ci-dessous, le nom de la règle de quotas cible doit être récupérée à partir de l'en-tête de requête nommé quotapolicy. Cependant, Edge ne peut pas résoudre request.header.quotapolicy. Cela se produit si l'en-tête quotapolicy n'est pas transmis dans le cadre de la requête 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>
Voici un exemple de requête API qui ne transmet pas l'en-tête quotapolicy dans le cadre de la requête :
curl -v http://demo-eval-test.apigee.net/v1/reset_quota -H "Content-Type: application/json"
Étant donné que l'en-tête quotapolicy n'est pas transmis dans le cadre de la requête, la référence request.header.quotapolicy utilisée dans l'élément
<Quota>
de la règle de réinitialisation des quotas ResetQuota ci-dessus est indéfinie et ne peut pas être résolue. Par conséquent, vous recevez la réponse d'erreur suivante :"errorcode": "policies.resetquota.FailedToResolveRLPolicy"
Solution
Vérifiez que l'attribut ref
référencé dans l'élément <Quota>
se résout au moment de l'exécution et qu'il est disponible dans le flux spécifique où la règle de réinitialisation des quotas ResetQuota s'exécute.
Pour corriger l'exemple ci-dessus, vous pouvez modifier la requête pour inclure l'en-tête quotapolicy, comme indiqué ci-dessous :
curl -v http://demo-eval-test.apigee.net/v1/reset_quota -H "Content-Type: application/json" -H "quotapolicy:MyQuotaPolicy"