Compartilhar via


Limitar a taxa de chamadas por chave

APLICA-SE A: Desenvolvedor | Básico | Básico v2 | Standard | Standard v2 | Premium

A política rate-limit-by-key impede picos de uso da API para cada chave, limitando a taxa de chamadas para um número especificado por um período de tempo especificado. A chave pode ter um valor de cadeia de caracteres arbitrária e geralmente é fornecida usando uma expressão de política. A condição de incremento opcional pode ser adicionada para especificar quais solicitações devem ser contadas para obtenção do limite. Quando essa taxa da chamada for ultrapassada, o chamador receberá um código de status de resposta 429 Too Many Requests.

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

Cuidado

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 de solicitações permitidas varia de acordo com o volume e a taxa de solicitação, a latência de back-end e outros fatores.

Observação

Defina os elementos da política e os elementos filho na ordem fornecida na declaração da política. Para ajudá-lo a configurar essa política, o portal fornece um editor guiado baseado em formulário. Saiba mais sobre como definir e editar as 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 Descrição Obrigatório Padrão
chamadas O número total máximo de chamadas permitidas para o valor da chave durante o intervalo de tempo especificado no renewal-period. Expressões de política são permitidas. Sim N/D
counter-key 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. Expressões de política são permitidas. Sim N/D
increment-condition A expressão Booliana que especifica se a solicitação deve ser contabilizada para a taxa (true). Expressões de política são permitidas. No N/D
increment-count O número pelo qual o contador é aumentado por solicitação. Expressões de política são permitidas. Não 1
renewal-period A duração 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. Expressões de política são permitidas. Sim N/D
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. No 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. Não N/D
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. Não N/D
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 armazena 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. Não N/D
total-calls-header-name O nome de um cabeçalho de resposta cujo valor é aquele especificado em calls. Expressões de política não são permitidas. Não N/D

Uso

Observações de uso

  • 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 está 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 em escopos diferentes. Por exemplo, acrescente uma cadeia de caracteres que identifica 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 em todos os nós de cluster), por exemplo, por meio da implantação do gráfico do Helm 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 os outros recursos de gateway configurados na instância de Gerenciamento de API, incluindo o gateway gerenciado na nuvem. Saiba mais

Exemplo

No exemplo a seguir, o limite de taxa de dez ligações a cada 60 segundos é codificado pelo endereço IP do chamador. Após cada execução de política, as chamadas restantes permitidas para esse endereço IP de 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 de solicitação avançada com o Gerenciamento de API do Azure.

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