Limitar a taxa de chamadas por subscrição
APLICA-SE A: Todas as camadas de gerenciamento de API
A rate-limit
política evita picos de uso da API por assinatura, limitando a taxa de chamada a um número especificado por um período de tempo especificado. Quando a 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. Saiba mais sobre como definir ou editar políticas de Gerenciamento de API.
Declaração de política
<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>
Atributos
Atributo | Description | Necessário | Predefinição |
---|---|---|---|
Convocatórias | O número total máximo de chamadas permitidas durante o intervalo de tempo especificado em renewal-period . Expressões de política não são permitidas. |
Sim | N/A |
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. Expressões de política não são permitidas. |
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. Expressões de política não são permitidas. | Não | Retry-After |
retry-after-variable-name | O nome de uma variável que armazena o intervalo de repetição recomendado em segundos após a taxa de chamada especificada ser excedida. 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 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 que, após cada execução de política, armazena o número de chamadas restantes permitidas para o intervalo de tempo especificado no renewal-period . 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 |
Elementos
Elemento | Description | Obrigatório |
---|---|---|
api | Adicione um ou mais desses elementos para impor um limite de taxa de chamada às APIs dentro do produto. Os limites de taxa de chamadas de produtos e API são aplicados de forma independente. A API pode ser referenciada via name ou id . Se ambos os atributos forem fornecidos, id serão usados e name serão ignorados. |
Não |
operation | Adicione um ou mais desses elementos para impor um limite de taxa de chamada às operações dentro de uma API. Os limites de taxa de chamada de produto, API e operação são aplicados de forma independente. A operação pode ser referenciada via name ou id . Se ambos os atributos forem fornecidos, id serão usados e name serão ignorados. |
Não |
Atributos da API
Atributo | Description | Necessário | Predefinição |
---|---|---|---|
nome | O nome da API para a qual aplicar o limite de taxa. | Ou name id deve ser especificado. |
N/A |
id | O ID da API para a qual aplicar o limite de taxa. | Ou name id deve ser especificado. |
N/A |
Convocatórias | O número total máximo de chamadas permitidas durante o intervalo de tempo especificado em renewal-period . Expressões de política não são permitidas. |
Sim | N/A |
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. Expressões de política não são permitidas. |
Sim | N/A |
Atributos da operação
Atributo | Description | Necessário | Predefinição |
---|---|---|---|
nome | O nome da operação para a qual aplicar o limite de taxa. | Ou name id deve ser especificado. |
N/A |
id | O ID da operação para a qual aplicar o limite de taxa. | Ou name id deve ser especificado. |
N/A |
Convocatórias | O número total máximo de chamadas permitidas durante o intervalo de tempo especificado em renewal-period . Expressões de política não são permitidas. |
Sim | N/A |
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. Expressões de política não são permitidas. |
Sim | N/A |
Utilização
- Secções políticas: entrada
- Escopos de política: produto, API, operação
- Gateways: clássico, v2, consumo, auto-hospedado, espaço de trabalho
Notas de utilização
- Esta política só pode ser utilizada uma vez por definição de política.
- Esta política só é aplicada quando uma API é acedida utilizando uma chave de subscriçã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 por assinatura é de 20 chamadas por 90 segundos. Após cada execução de política, as chamadas restantes permitidas no período de tempo são armazenadas na variável remainingCallsPerSubscription
.
<policies>
<inbound>
<base />
<rate-limit calls="20" renewal-period="90" remaining-calls-variable-name="remainingCallsPerSubscription"/>
</inbound>
<outbound>
<base />
</outbound>
</policies>
Políticas relacionadas
Conteúdos relacionados
Para obter mais informações sobre como trabalhar com políticas, consulte:
- Tutorial: Transforme e proteja sua API
- Referência de política para uma lista completa de declarações de política e suas configurações
- Expressões de política
- Definir ou editar políticas
- Reutilizar configurações de política
- Recompra de trechos de política
- Kit de ferramentas de política de Gerenciamento de API do Azure
- Criar políticas usando o Microsoft Copilot no Azure