Règle ResetQuota

Vous consultez la documentation d'Apigee Edge.
Consultez la documentation Apigee X.
en savoir plus

Quoi

Permet de modifier de façon dynamique le nombre restant de requêtes autorisées par la règle de quota cible. En règle générale, cette règle vous permet de réduire le quota actuel de la règle de quota cible, plutôt que d'attendre la réinitialisation du nombre de quotas.

Par exemple, la règle de quota cible limite un développeur à 1 000 requêtes par semaine. Le deuxième jour de la semaine, le développeur a déjà atteint la limite. Utilisez la règle de réinitialisation du quota pour soustraire 500 à son compteur de quotas, afin d'autoriser 500 requêtes supplémentaires pour le reste de la semaine. À la fin de la semaine, la règle de quota est réinitialisée et le développeur retourne à 1 000 requêtes la semaine.

Pour en savoir plus sur les règles liées aux quotas, consultez la page Règles de quotas. Consultez également ce post destiné à la communauté concernant l'utilisation de la règle de réinitialisation des quotas ResetQuota.

Samples

Les exemples de code suivants montrent comment réinitialiser les compteurs de quotas :

Réinitialiser le compteur par défaut

<ResetQuota name="resetQuota">
   <Quota name="MyQuotaPolicy">
      <Identifier name="_default">
         <Allow>100</Allow>
      </Identifier>
   </Quota>
</ResetQuota>

La règle de réinitialisation du quota spécifie la règle de quota cible à l'aide de l'attribut name du tag <Quota>. Dans l'exemple ci-dessus, la règle MyQuotaPolicy est la cible.

Toutes les règles de réinitialisation du quota nécessitent le tag <Identifier> pour spécifier le compteur dans la règle de quotas à mettre à jour. Par défaut, une règle de quota comporte un seul compteur, sauf si elle inclut également le tag <Identifier>. Dans cet exemple, la règle de quota cible n'utilise pas la paire valeur/clé <Identifier>, vous devez donc spécifier l'attribut name en tant que _default.

L'élément <Allow> spécifie la valeur utilisée pour diminuer le nombre de quotas actuel sur la règle cible. Dans cet exemple, le nombre de quotas est réduit de 100 pour permettre l'envoi de 100 autres requêtes à la règle de quota cible. Lorsque la règle de quota cible est réinitialisée, cette modification est supprimée.

Vous trouverez ci-dessous la définition de la règle de quota cible :

<Quota name="MyQuotaPolicy">
  <Interval>5</Interval>
  <TimeUnit>hour</TimeUnit>
  <Allow count="100"/>
</Quota>

Utiliser une référence

<ResetQuota name="resetQuota">
   <Quota ref="request.header.quotapolicy">
      <Identifier name="_default">
         <Allow ref="request.header.allowquota" />
      </Identifier>
   </Quota>
</ResetQuota>

Dans cet exemple, vous transmettez le nom de la règle de quota cible et la modification de son nombre de quotas, en tant qu'en-têtes dans la requête. Vous pouvez ensuite référencer les variables de flux contenant ces valeurs dans la règle de réinitialisation des quotas.

Spécifier l'identifiant

<ResetQuota name="resetQuota">
   <Quota name="QuotaPolicy">
      <Identifier ref="request.header.clientId">
         <Allow>100</Allow>
      </Identifier>
   </Quota>
</ResetQuota>

Si la règle de quota cible spécifie le tag <Identifier>, vous pouvez spécifier la même valeur dans le tag <Identifier> de la règle de réinitialisation des quotas pour mettre à jour un nombre de quotas spécifique. Notez que le tag <Identifier> de la règle de quota cible ci-dessous correspond à la valeur spécifiée dans la règle de réinitialisation des quotas :

<Quota name="QuotaPolicy">
  <Identifier ref="request.header.clientId"/> 
  <Interval>5</Interval>
  <TimeUnit>hour</TimeUnit>
  <Allow count="100"/>
</Quota>

Documentation de référence des éléments

La référence d'élément décrit les éléments et les attributs de la règle de réinitialisation des quotas.

<ResetQuota async="false" continueOnError="false" enabled="true" name="Reset-Quota-1">
   <DisplayName>Reset Quota 1</DisplayName>
   <Quota name="quotaName" ref="request.header.quotapolicy">
      <Identifier name="identifierName" ref="request.header.identifier">
         <Class ref="request.header.classIdentifier" />
         <Allow>100</Allow>
      </Identifier>
   </Quota>
</ResetQuota>

Attributs <ResetQuota>

<ResetQuota async="false" continueOnError="false" enabled="true" name="Reset-Quota-1"> 

Le tableau suivant décrit les attributs communs à tous les éléments parents des règles :

Attribut Description Par défaut Présence
name

Nom interne de la règle. La valeur de l'attribut name peut contenir des lettres, des chiffres, des espaces, des tirets, des traits de soulignement et des points. Cette valeur ne peut pas dépasser 255 caractères.

Vous pouvez également utiliser l'élément <DisplayName> pour ajouter un libellé à la règle dans l'éditeur de proxy de l'interface utilisateur de gestion, en utilisant un nom différent, en langage naturel.

N/A Obligatoire
continueOnError

Définissez sur false pour afficher une erreur en cas d'échec d'une règle. Il s'agit du comportement attendu pour la plupart des règles.

Définissez sur true pour que l'exécution du flux se poursuive même après l'échec d'une règle.

false Facultatif
enabled

Définissez sur true pour appliquer la règle.

Définissez sur false pour désactiver la règle. La stratégie ne sera pas appliquée, même si elle reste associée à un flux.

true Facultatif
async

Cet attribut est obsolète.

false Obsolète

Élément <DisplayName>

Utilisez-le, en plus de l'attribut name, pour appliquer un libellé à la règle dans l'éditeur de proxys de l'interface de gestion en utilisant un nom différent, en langage naturel.

<DisplayName>Policy Display Name</DisplayName>
Par défaut

N/A

Si vous omettez cet élément, la valeur de l'attribut name de la règle est utilisée.

Présence Facultatif
Type Chaîne

Élément <Quota>

Identifie la règle de quota cible dont le compteur doit être mis à jour.

<Quota name="quotaName"  ref="request.header.quotapolicy">
   <Identifier name="identifierName" ref="request.header.identifier">
      <Allow>100</Allow>
   </Identifier>
</Quota>
Valeur par défaut : N/A
Présence : Obligatoire
Type : N/A

Attributs

Attribut Description Par défaut Présence
name

Spécifie le nom de la règle de quota cible.

N/A Facultatif
ref Une variable de flux contenant le nom de la règle de quota cible. Si les options ref et name sont spécifiées, ref obtient la priorité. Si ref n'est pas renvoyé au moment de l'exécution, name est utilisé. N/A Facultative

Élément <Quota>/<Identifier>

Variable utilisée pour identifier de manière unique le compteur si la règle de quota cible spécifie la balise <Identifier>.

<Quota name="quotaName">
   <Identifier name="identifierName" ref="request.header.identifier">
      <Allow>100</Allow>
   </Identifier>
</Quota>
Valeur par défaut : N/A
Présence : Obligatoire
Type : Chaîne

Attributs

Attribut Description Par défaut Présence
nom

Spécifie le nom de l'identifiant de comptage dans la règle de quota cible. Pour une règle de quota qui n'utilise pas le tag <Identifier>, spécifiez _default.

N/A Facultatif
ref

Une variable de flux contenant le nom de l'identifiant de comptage dans la règle de quota cible. Si les options ref et name sont spécifiées, ref obtient la priorité. Si ref n'est pas renvoyé au moment de l'exécution, name est utilisé.

N/A Facultatif

Élément <Quota>/<Identifier>/<Allow>

Indique le montant pour diminuer le compteur de quotas. Vous devez spécifier <Allow>, sinon la règle ne modifie pas le quota.

<Identifier name="identifierName" ref="request.header.identifier">
   <Allow ref="request.header.allowquota">100</Allow>
</Identifier>
Valeur par défaut : N/A
Présence : Obligatoire
Type : Entier

Attributs

Attribut Description Par défaut Présence
ref

Une variable de flux qui contient la modification du nombre de quotas dans la règle de quota cible.

N/A Facultatif

Élément <Quota>/<Identifier>/<Class>

Spécifie la classe pour laquelle le compteur de quotas est mis à jour. Pour en savoir plus sur l'utilisation d'une classe avec les règles de quotas, consultez la page Règles de quotas.

<Identifier name="_default">
   <Class ref="request.header.classIdentifier">
     <Allow>200</Allow>
   </Class>
</Identifier>
Valeur par défaut : N/A
Présence : Facultatif
Type : N/A

Attributs

Attribut Description Par défaut Présence
ref

Référence à la variable de flux contenant la classe de quota à mettre à jour.

N/A Facultatif

Informations de référence sur les erreurs

Cette section décrit les codes d'erreur et les messages d'erreur renvoyés, ainsi que les variables d'erreur définies par Edge lorsque cette stratégie déclenche une erreur. Ces informations sont importantes si vous développez des règles de défaillance afin de gérer les pannes. Pour en savoir plus, consultez les pages Ce que vous devez savoir à propos des erreurs liées aux règles et Gérer les pannes.

Erreurs d'exécution

Ces erreurs peuvent se produire lors de l'exécution de la règle.

Code d'erreur État HTTP Cause Solution
policies.resetquota.InvalidRLPolicy 500 La règle de quota spécifiée dans l'élément <Quota> de la règle de réinitialisation du quota n'est pas définie dans le proxy d'API et n'est donc pas disponible pendant le flux. L'élément <Quota> est obligatoire et identifie la règle de quota cible dont le compteur doit être mis à jour via la règle de réinitialisation du quota.
policies.resetquota.FailedToResolveAllowCountRef N/A 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.
policies.resetquota.FailedToResolveRLPolicy 500 La variable référencée par l'attribut ref dans l'élément <Quota> ne peut pas être résolue.

Erreurs de déploiement

Ces erreurs peuvent se produire lorsque vous déployez un proxy contenant cette règle.

Nom de l'erreur Cause Solution
InvalidCount Si la valeur spécifiée dans l'élément <Allow> de la règle de réinitialisation de quota n'est pas un entier, le déploiement du proxy d'API échoue.

Schémas

Articles associés

Règles de quotas