Partilhar via


Limitar a taxa de chamadas por chave

APLICA-SE A: Developer | Básico | Básico v2 | Padrão | Padrão v2 | Prémio | Premium v2

A rate-limit-by-key política evita picos de uso da API por chave, limitando a taxa de chamada a um número especificado por um período de tempo especificado. A chave pode ter um valor de cadeia arbitrário e é normalmente proporcionada com uma expressão de política. A condição de incremento opcional pode ser adicionada para especificar quais solicitações devem ser contadas para o limite. Quando essa taxa de chamada é excedida, o chamador recebe um código de status de 429 Too Many Requests resposta.

Para entender a diferença entre limites de taxa e cotas, consulte Limites de taxa e cotas.

Atenção

Devido à natureza distribuída da arquitetura de limitação, a limitação de taxa nunca é completamente precisa. A diferença entre o número configurado e o número real dos pedidos permitidos varia em função do volume e taxa de pedido, da latência de back-end e de outros fatores.

Nota

Defina os elementos da política e os elementos filho na ordem fornecida na declaração de política. Para ajudá-lo a configurar essa política, o portal fornece um editor guiado baseado em formulários. Saiba mais sobre como definir ou editar políticas de Gerenciamento de API.

Declaração de política

<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"/> 

Atributos

Atributo Description Necessário Predefinição
Convocatórias O número total máximo de chamadas permitidas para o valor da chave durante o intervalo de tempo especificado no renewal-period. São permitidas expressões de política. Sim N/A
contra-chave A chave a ser usada para a política de limite de taxa. Para cada valor de chave, um único contador é usado para todos os escopos nos quais a política está configurada. São permitidas expressões de política. Sim N/A
condição de incremento A expressão booleana que especifica se a solicitação deve ser contada para a taxa (true). São permitidas expressões de política. No N/A
contagem de incrementos O número pelo qual o contador é aumentado por solicitação. São permitidas expressões de política. Não 1
período de renovação O comprimento, em segundos, da janela deslizante durante a qual o número de solicitações permitidas não deve exceder o valor especificado em calls. Valor máximo permitido: 300 segundos. São permitidas expressões de política. Sim N/A
retry-after-header-name O nome de um cabeçalho de resposta personalizado cujo valor é o intervalo de repetição recomendado em segundos após a taxa de chamada especificada ser excedida para o valor da chave. Expressões de política não são permitidas. Não Retry-After
retry-after-variable-name O nome de uma variável de expressão de política que armazena o intervalo de repetição recomendado em segundos após a taxa de chamada especificada ser excedida para o valor da chave. Expressões de política não são permitidas. No N/A
remaining-calls-header-name O nome de um cabeçalho de resposta cujo valor após cada execução de política é o número de chamadas restantes permitidas para o valor da chave no intervalo de tempo especificado no renewal-period. Expressões de política não são permitidas. No N/A
remaining-calls-variable-name O nome de uma variável de expressão de política que, após cada execução de política, renewal-periodarmazena o número de chamadas restantes permitidas para o valor da chave no intervalo de tempo especificado no . Expressões de política não são permitidas. No N/A
total-chamadas-cabeçalho-nome O nome de um cabeçalho de resposta cujo valor é o valor especificado em calls. Expressões de política não são permitidas. No N/A

Utilização

Notas de utilização

  • O Gerenciamento de API usa um único contador para cada counter-key valor especificado na política. O contador é atualizado em todos os escopos nos quais a política é configurada com esse valor de chave. Se desejar configurar contadores separados em escopos diferentes (por exemplo, uma API ou produto específico), especifique valores de chave diferentes nos escopos diferentes. Por exemplo, acrescente uma cadeia de caracteres que identifique o escopo ao valor de uma expressão.
  • As contagens de limite de taxa em um gateway auto-hospedado podem ser configuradas para sincronizar localmente (entre instâncias de gateway entre nós de cluster), por exemplo, por meio da implantação de gráfico de leme para Kubernetes ou usando os modelos de implantação do portal do Azure. No entanto, as contagens de limite de taxa não são sincronizadas com outros recursos de gateway configurados na instância de Gerenciamento de API, incluindo o gateway gerenciado na nuvem. Mais informações

Exemplo

No exemplo a seguir, o limite de taxa de 10 chamadas por 60 segundos é digitado pelo endereço IP do chamador. Após cada execução de política, as chamadas restantes permitidas para esse endereço IP do chamador no período de tempo são armazenadas na variável 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>

Para obter mais informações e exemplos dessa política, consulte Limitação avançada de solicitações com o Gerenciamento de API do Azure.

Para obter mais informações sobre como trabalhar com políticas, consulte: