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

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>

Pour plus d’informations sur l’utilisation des stratégies, consultez :