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

This section describes the fault codes and error messages that are returned and fault variables that are set by Edge when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults.

Runtime errors

These errors can occur when the policy executes.

Fault code HTTP status Cause Fix
policies.resetquota.InvalidRLPolicy 500 The Quota policy specified in the <Quota> element of the Reset Quota policy is not defined in the API proxy and thus is not available during the flow. The <Quota> element is mandatory and identifies the target Quota policy whose counter should be updated through the Reset Quota policy.
policies.resetquota.FailedToResolveAllowCountRef N/A The reference to the variable containing the allow count in the <Allow> element of the policy cannot be resolved to a value. This element is mandatory and specifies the amount to decrease the quota counter.
policies.resetquota.FailedToResolveRLPolicy 500 The variable referenced by the ref attribute in the <Quota> element cannot be resolved.

Deployment errors

These errors can occur when you deploy a proxy containing this policy.

Error name Cause Fix
InvalidCount If the count value specified in the <Allow> element of the Reset Quota Policy is not an integer, then the deployment of the API proxy fails.

Schémas

Articles associés

Règles de quotas