Limit call rate by subscription
S’APPLIQUE À : Tous les niveaux de Gestion des API
La stratégie rate-limit
évite les pics d’utilisation des API par abonnement en limitant le débit d’appels à un nombre spécifié pour une période donnée. Lorsque le débit d’appels est atteint, 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. En savoir plus sur comment définir ou modifier des stratégies du service Gestion des API.
Instruction de la stratégie
<rate-limit calls="number" renewal-period="seconds" 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">
<api name="API name" id="API id" calls="number" renewal-period="seconds" >
<operation name="operation name" id="operation id" calls="number" renewal-period="seconds" />
</api>
</rate-limit>
Attributs
Attribut | Description | Obligatoire | Default |
---|---|---|---|
calls | Nombre maximal d’appels autorisés au cours de l’intervalle de temps spécifié dans renewal-period . Les expressions de stratégie ne sont pas autorisées. |
Oui | N/A |
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 ne sont pas 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 | Le nom d’une variable qui stocke l’intervalle de tentative recommandé, en secondes, après le dépassement de la fréquence d’appels spécifiée. 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 | Le nom d’une variable 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 |
Éléments
Élément | Description | Obligatoire |
---|---|---|
api | Ajoutez un ou plusieurs éléments de ce type pour imposer une limite de débit d’appels aux API au sein du produit. Les limites de débit d’appels au niveau du produit et de l’API s’appliquent indépendamment les unes des autres. L’API peut être référencée via name ou id . Si les deux attributs sont fournis, id sera utilisé et name sera ignoré. |
Non |
operation | Ajoutez un ou plusieurs éléments de ce type pour imposer une limite de débit d’appels aux opérations au sein d’une API. Les limites de débit d’appels au niveau du produit, de l’API et de l’opération s’appliquent indépendamment les unes des autres. L’opération peut être référencée via name ou id . Si les deux attributs sont fournis, id sera utilisé et name sera ignoré. |
Non |
Attributs API
Attribut | Description | Obligatoire | Default |
---|---|---|---|
name | Nom de l’API à laquelle la limite de débit s’applique. | Soit name , soit id doit être spécifié. |
N/A |
id | ID de l’API à laquelle la limite de débit s’applique. | Soit name , soit id doit être spécifié. |
N/A |
calls | Nombre maximal d’appels autorisés au cours de l’intervalle de temps spécifié dans renewal-period . Les expressions de stratégie ne sont pas autorisées. |
Oui | N/A |
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 ne sont pas autorisées. |
Oui | N/A |
Attributs opération
Attribut | Description | Obligatoire | Default |
---|---|---|---|
name | Nom de l’opération à laquelle la limitation du débit s’applique. | name ou id doit être spécifié. |
N/A |
id | ID de l’opération à laquelle la limitation du débit s’applique. | Soit name , soit id doit être spécifié. |
N/A |
calls | Nombre maximal d’appels autorisés au cours de l’intervalle de temps spécifié dans renewal-period . Les expressions de stratégie ne sont pas autorisées. |
Oui | N/A |
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 ne sont pas autorisées. |
Oui | N/A |
Usage
- Sections de la stratégie : inbound
- Sections de la stratégie : product, API, operation
- Passerelles : classiques, v2, consommation, auto-hébergées, espace de travail
Notes d’utilisation
- Cette stratégie ne peut être utilisée qu’une seule fois par définition de stratégie.
- Cette stratégie est appliquée uniquement lorsqu’une API est accessible à l’aide d’une clé d’abonnement.
- 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 par abonnement est de 20 appels par 90 secondes. Après chaque exécution de stratégie, les appels restants autorisés durant la période sont stockés dans la variable remainingCallsPerSubscription
.
<policies>
<inbound>
<base />
<rate-limit calls="20" renewal-period="90" remaining-calls-variable-name="remainingCallsPerSubscription"/>
</inbound>
<outbound>
<base />
</outbound>
</policies>
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 dans Azure