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

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.

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