Plug-in de limitação de solicitação
O plug-in de limitação de solicitação limita o número de vezes que uma API pode ser chamada em um período de tempo específico. Suporta estrangulamento baseado em parâmetros, básico e excluído.
Somente os gateways dedicados criados em e após 4 de dezembro de 2021 suportam o plug-in de limitação de solicitação. Para usar este plug-in para gateways dedicados criados antes de 4 de dezembro de 2021, entre em contato com o atendimento ao cliente.
- Limitação básica
Solicitações de limitação por API, usuário, aplicação ou endereço IP de origem. Essa função é equivalente a uma política de limitação de solicitações, mas é incompatível com ela.
- Limitação baseada em parâmetros
Solicitações de limitação com base em cabeçalhos, parâmetros de caminho, métodos, cadeias de consulta ou variáveis do sistema.
- Limitação excluída
Solicitações de limitação com base em aplicações ou locatários específicos.
Restrições
- Uma política de limitação de solicitação se torna inválida se um plug-in de limitação de solicitação estiver vinculado à mesma API da política.
- Você pode definir um máximo de 100 regras de parâmetro.
- O conteúdo do plug-in não pode exceder 65.535 caracteres.
Parâmetros de configuração
|
Parâmetro |
Descrição |
|---|---|
|
Policy Type |
|
|
Period |
Por quanto tempo você deseja limitar o número de solicitações de API.
|
|
Max. API Requests |
O número máximo de vezes que cada API vinculada pode ser chamada dentro do período especificado. Este parâmetro deve ser utilizado em conjunto com o Period. |
|
Max. User Requests |
O número máximo de vezes que cada API vinculada pode ser chamada por um usuário dentro do período especificado. Para APIs com autenticação do IAM, a limitação é baseada em um código de projeto; para APIs com autenticação de aplicação, a limitação é baseada em um código de conta. Para obter detalhes sobre IDs de conta e IDs de projeto, consulte a descrição sobre Excluded Tenants nesta tabela.
|
|
Max. App Requests |
O número máximo de vezes que cada API vinculada pode ser chamada por uma aplicação dentro do período especificado. Esse limite se aplica apenas a APIs acessadas por meio de autenticação de aplicação.
|
|
Max. IP Address Requests |
O número máximo de vezes que cada API vinculada pode ser chamada por um endereço IP dentro do período especificado.
|
|
Parameter-based Throttling |
Habilitar ou desabilitar a limitação baseada em parâmetro. Depois que essa função é ativada, as solicitações de API são limitadas com base em parâmetros especificados. |
|
Parameters |
Definir parâmetros para regras de limitação.
|
|
Rules |
Defina regras de limitação. Uma regra consiste em condições, uma limitação de solicitações de API e um período. Para adicionar mais regras, clique em Add Rule.
Por exemplo, configure a limitação baseada em parâmetro da seguinte forma: adicione o parâmetro Host e especifique o local como header; adicione a condição Host = www.abc.com, e defina o limite de limitação como 10 e o período como 60s. Para APIs cujo parâmetro Host no cabeçalho da solicitação é igual a www.abc.com, elas não podem ser chamadas novamente uma vez chamadas 10 vezes em 60s. |
|
Excluded Throttling |
Ativar ou desativar a limitação excluída. Depois que essa função é habilitada, os limites para locatários e aplicações excluídos substituem o Max. User Requests e Max. App Requests na área Basic Throttling. |
|
Excluded Tenants |
Tenant ID: um ID de conta ou um ID de projeto.
Threshold: o número máximo de vezes que um locatário específico pode acessar uma API dentro do período especificado. O limite não pode exceder o valor de Max. API Requests na área Basic Throttling. |
|
Excluded Apps |
Selecione uma aplicação e especifique o número máximo de vezes que a aplicação pode acessar uma API dentro do período especificado. O limite não pode exceder o valor de Max. API Requests na área Basic Throttling. |
Exemplo de script
{
"scope": "basic",
"default_interval": 60,
"default_time_unit": "second",
"api_limit": 100,
"app_limit": 50,
"user_limit": 50,
"ip_limit": 20,
"specials": [
{
"type": "app",
"policies": [
{
"key": "2e421d76dc6c4c75941511ccf654e368",
"limit": 10
}
]
},
{
"type": "user",
"policies": [
{
"key": "878f1b87f71c40a7a15db0998f358bb9",
"limit": 10
}
]
}
],
"parameters": [
{
"type": "path",
"name": "reqPath",
"value": "reqPath"
},
{
"type": "method",
"name": "method",
"value": "method"
},
{
"type": "header",
"name": "Host",
"value": "Host"
}
],
"rules": [
{
"match_regex": "[\"Host\",\"==\",\"www.abc.com\"]",
"rule_name": "rule-jlce",
"time_unit": "second",
"interval": 0,
"limit": 5
}
]
}
