Limite de débit d’appels par clé
S’APPLIQUE À : Développeur | Essentiel | Essentiel v2 | Standard | Standard v2 | Premium
La stratégie rate-limit-by-key
évite les pics d’utilisation des API par clé en limitant le débit d’appels à un nombre spécifié pour une période donnée. La clé peut avoir une valeur de chaîne arbitraire ; elle est généralement fournie par le biais d’une expression de stratégie. Une condition d’incrément facultative peut être ajoutée pour spécifier quelles demandes doivent être comptées dans la limite. Lorsque ce débit d’appels est dépassé, l’appelant reçoit le code d’état de réponse 429 Too Many Requests
.
Pour comprendre la différence entre les limites de taux et les quotas, consultez Limites de taux et quotas.
Attention
En raison de la nature distribuée de l’architecture de limitation, la limitation du débit n’est jamais totalement exacte. La différence entre le nombre configuré et le nombre réel de requêtes autorisées varie en fonction du volume et du débit des requêtes, de la latence du back-end et d’autres facteurs.
Notes
Définissez les éléments enfants et de stratégie dans l’ordre fourni dans l’instruction de stratégie. Pour vous aider à configurer cette stratégie, le portail fournit un éditeur guidé basé sur des formulaires. En savoir plus sur comment définir ou modifier des stratégies du service Gestion des API.
Instruction de la stratégie
<rate-limit-by-key calls="number"
renewal-period="seconds"
increment-condition="condition"
increment-count="number"
counter-key="key value"
retry-after-header-name="custom header name, replaces default 'Retry-After'"
retry-after-variable-name="policy expression variable name"
remaining-calls-header-name="header name"
remaining-calls-variable-name="policy expression variable name"
total-calls-header-name="header name"/>
Attributs
Attribut | Description | Obligatoire | Default |
---|---|---|---|
calls | Nombre maximal d’appels autorisés au cours de l’intervalle de temps spécifié dans le paramètre renewal-period . Les expressions de stratégie sont autorisées. |
Oui | N/A |
counter-key | Clé à utiliser pour la stratégie de limite de débit. Pour chaque valeur de clé, un compteur unique est utilisé pour toutes les étendues auxquelles la stratégie est configurée. Les expressions de stratégie sont autorisées. | Oui | N/A |
increment-condition | Expression booléenne spécifiant si la demande doit être comptée dans le débit (true ). Les expressions de stratégie sont autorisées. |
Non | N/A |
increment-count | Nombre par lequel le compteur est augmenté par demande. Les expressions de stratégie sont autorisées. | Non | 1 |
renewal-period | Durée en secondes de la fenêtre glissante pendant laquelle le nombre de demandes autorisées ne doit pas dépasser la valeur spécifiée dans calls . Valeur maximale autorisée : 300 secondes. Les expressions de stratégie sont autorisées. |
Oui | N/A |
retry-after-header-name | Nom d’un en-tête de réponse personnalisé dont la valeur est l’intervalle de tentative recommandé en secondes après dépassement du débit d’appels spécifié. Les expressions de stratégie ne sont pas autorisées. | No | Retry-After |
retry-after-variable-name | Nom d’une variable d’expression de stratégie qui stocke l’intervalle de tentative recommandé, en secondes, après dépassement du débit d’appels spécifié. Les expressions de stratégie ne sont pas autorisées. | Non | N/A |
remaining-calls-header-name | Le nom d’un en-tête de réponse dont la valeur après chaque exécution de stratégie est le nombre d’appels restants autorisés pour l’intervalle de temps spécifié dans le renewal-period . Les expressions de stratégie ne sont pas autorisées. |
Non | N/A |
remaining-calls-variable-name | Nom d’une variable d’expression de stratégie qui, après l’exécution de chaque stratégie, stocke le nombre d’appels restants autorisés pour l’intervalle de temps spécifié dans le renewal-period . Les expressions de stratégie ne sont pas autorisées. |
Non | N/A |
total-calls-header-name | Nom d’un en-tête de réponse dont la valeur est la valeur spécifiée dans calls . Les expressions de stratégie ne sont pas autorisées. |
Non | N/A |
Usage
- Sections de la stratégie : inbound
- Étendues de la stratégie : global, espace de travail, produit, API, opération
- Passerelles : classiques, v2, auto-hébergées
Notes d’utilisation
- Dans une passerelle auto-hébergée, les nombres limites de taux peuvent être configurés pour être synchronisés localement (entre les instances de passerelle sur les nœuds de cluster), par exemple par le biais d’un déploiement de graphique Helm pour Kubernetes ou à l’aide des modèles de déploiement du portail Azure. Toutefois, les nombres limites de débit ne se synchronisent pas avec d’autres ressources de passerelle configurées dans l’instance Gestion des API, notamment la passerelle managée dans le cloud. En savoir plus
Exemple
Dans l’exemple suivant, la limite de débit de 10 appels par 60 secondes est indexée par l’adresse IP de l’appelant. Après chaque exécution de stratégie, les appels restants autorisés durant la période sont stockés dans la variable remainingCallsPerIP
.
<policies>
<inbound>
<base />
<rate-limit-by-key calls="10"
renewal-period="60"
increment-condition="@(context.Response.StatusCode == 200)"
counter-key="@(context.Request.IpAddress)"
remaining-calls-variable-name="remainingCallsPerIP"/>
</inbound>
<outbound>
<base />
</outbound>
</policies>
Pour plus d’informations et d’exemples sur cette stratégie, consultez la page Limitation avancée des demandes dans la Gestion des API Azure.
Stratégies connexes
Contenu connexe
Pour plus d’informations sur l’utilisation des stratégies, consultez :
- Tutoriel : Transformer et protéger votre API
- Référence de stratégie pour obtenir la liste complète des instructions et des paramètres de stratégie
- Expressions de stratégie
- Définir ou modifier des stratégies
- Réutilisation de configurations de stratégie
- Référentiel d’extrait de stratégie
- Créer des stratégies à l’aide de Microsoft Copilot pour Azure