Partager via


Limite de débit d’appels par clé

S’applique à : Développeur | Essentiel | Essentiel v2 | Standard | Standard v2 | Premium | Premium v2

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 Le nombre total maximal d’appels autorisés pour la valeur de clé au cours de l’intervalle de temps spécifié dans 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 Le nom d’un en-tête de réponse personnalisé dont la valeur est l’intervalle de nouvelle tentative recommandé, en secondes, après dépassement du débit d’appels spécifié pour la valeur de clé. Les expressions de stratégie ne sont pas autorisées. No Retry-After
retry-after-variable-name Le nom d’une variable d’expression de stratégie qui stocke l’intervalle de nouvelle tentative recommandé, en secondes, après dépassement du débit d’appels spécifié pour la valeur de clé. 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 la valeur de clé dans l’intervalle de temps spécifié dans renewal-period. Les expressions de stratégie ne sont pas autorisées. Non N/A
remaining-calls-variable-name Le 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 la valeur de clé dans l’intervalle de temps spécifié dans 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

  • Gestion des API utilise un seul compteur pour chaque valeur de counter-key que vous spécifiez dans la stratégie. Le compteur est mis à jour pour toutes les étendues pour lesquelles la stratégie est configurée avec cette valeur de clé. Si vous souhaitez configurer des compteurs distincts pour différentes étendues (par exemple une API ou un produit spécifique), spécifiez des valeurs de clé différentes dans les différentes étendues. Par exemple, ajoutez une chaîne qui identifie l’étendue avec la valeur d’une expression.
  • 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 l’exécution de chaque stratégie, les appels restants autorisés pour l’adresse IP de cet appelant dans la période de temps 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 :