Limitando o Número de Solicitações a Back-Ends do Serviço API Gateway
Descubra como usar uma política de solicitação para limitar o número de solicitações enviadas a serviços de back-end com o API Gateway.
Após ter criado um gateway de API e implantado uma ou mais APIs nele, geralmente você vai querer limitar a taxa na qual os clientes de API podem fazer solicitações a serviços de back-end. Por exemplo, para:
- manter alta disponibilidade e uso adequado de recursos protegendo os back-ends da sobrecarga causada por muitas solicitações
- impedir ataques de negação de serviço
- restringir custos de consumo de recursos
- restringir o uso de APIs pelos usuários dos seus clientes para monetizar APIs
Aplique um limite de taxa globalmente a todas as rotas em uma especificação de implantação de API.
Se uma solicitação for negada porque o limite de taxa foi excedido, o cabeçalho de resposta especificará quando a solicitação poderá ser repetida.
Você usa uma política de solicitação para limitar o número de solicitações (consulte Adicionando Políticas de Solicitação e Políticas de Resposta a Especificações de Implantação de API).
É possível adicionar uma política de solicitação de limitação de taxa a uma especificação de implantação de API:
- usando a Console
- editando um arquivo JSON
Usando a Console para Adicionar Políticas de Solicitação de Limitação de Taxa
Para adicionar uma política de solicitação de limitação de taxa a uma especificação de implantação de API usando a Console:
-
Crie ou atualize uma implantação de API usando a Console. Selecione a opção Totalmente Nova e insira os detalhes na página Informações Básicas.
Para obter mais informações, consulte Implantando uma API em um Gateway de API por meio da Criação de uma Implantação de API e Atualizando um Gateway de API.
-
Na seção Políticas de Solicitação da API da página Informações Básicas, selecione o botão Adicionar ao lado de Limitação de Taxa e especifique:
- Número de Solicitações por Segundo: O número máximo de solicitações por segundo a serem enviadas à implantação de API.
-
Tipo de Limite de Taxa: Como é aplicado o limite de número máximo de solicitações por segundo:
- Selecione Total como a chave de tarifa para especificar que o máximo se aplica ao número total de solicitações enviadas de todos os clientes da API.
- Selecione Por cliente (IP) como a chave de tarifa para especificar que o máximo se aplica ao número de solicitações enviadas de um cliente de API (identificado por seu endereço IP). Para clientes IPv4, a limitação de taxa se baseia em endereços IPv4 individuais do cliente de API. Para clientes IPv6, a limitação de taxa se baseia no prefixo IPv6 /64 do cliente da API em vez do endereço completo. Os clientes de API que têm o mesmo prefixo IPv6 /64 são considerados o mesmo cliente, para fins de limitação de taxa.
-
Selecione Salvar Alterações.
-
Selecione Próximo e especifique opções de autenticação na página Autenticação.
Para obter mais informações sobre opções de autenticação, consulte Adicionando Autenticação e Autorização às Implantações de API.
-
Selecione Próximo para informar detalhes de rotas individuais na implantação de API na página Rotas. Observe que não é possível aplicar políticas de limitação de taxa a rotas individuais na especificação de implantação da API.
- Selecione Próximo para revisar os detalhes informados para a implantação de API.
- Selecione Criar ou Salvar Alterações para criar ou atualizar a implantação de API.
- (Opcional) Confirme se a API foi implantada com êxito, chamando-a (consulte Chamando uma API Implantada em um Gateway de API).
Editando um Arquivo JSON para Adicionar Políticas de Solicitação de Limitação de Taxa
Para adicionar uma política de solicitação de limitação de taxa a uma especificação de implantação de API em um arquivo JSON:
-
Usando seu editor JSON preferido, edite a especificação de implantação de API existente à qual você deseja adicionar um limite de solicitação ou crie uma nova especificação de implantação de API (consulte Criando uma Especificação de Implantação de API).
Por exemplo, a seguinte especificação básica de implantação de API define uma função simples sem servidor Hello World no OCI Functions como um único back-end:
{ "routes": [ { "path": "/hello", "methods": ["GET"], "backend": { "type": "ORACLE_FUNCTIONS_BACKEND", "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq" } } ] } -
Insira uma seção
requestPoliciesantes da seçãoroutes, se ainda não existir uma. Por exemplo:{ "requestPolicies": {}, "routes": [ { "path": "/hello", "methods": ["GET"], "backend": { "type": "ORACLE_FUNCTIONS_BACKEND", "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq" } } ] } -
Adicione a seguinte política
rateLimitingà nova seçãorequestPoliciespara aplicar a todas as rotas definidas na especificação:{ "requestPolicies": { "rateLimiting": { "rateKey": "<ratekey-value>", "rateInRequestsPerSecond": <requests-per-second> } }, "routes": [ { "path": "/hello", "methods": ["GET"], "backend": { "type": "ORACLE_FUNCTIONS_BACKEND", "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq" } } ] }em que:
<ratekey-value>especifica como o limite máximo de solicitações por segundo é aplicado:- Use
TOTALcomo a chave de taxa para especificar que o máximo se aplica ao número total de solicitações enviadas de todos os clientes de API. - Use
CLIENT_IPcomo a chave de taxa para especificar que o máximo se aplica ao número de solicitações enviadas de um cliente de API (identificado por seu endereço IP). Para clientes IPv4, a limitação de taxa se baseia em endereços IPv4 individuais do cliente de API. Para clientes IPv6, a limitação de taxa se baseia no prefixo IPv6 /64 do cliente da API em vez do endereço completo. Os clientes de API que têm o mesmo prefixo IPv6 /64 são considerados o mesmo cliente, para fins de limitação de taxa.
- Use
<requests-per-second>é o número máximo de solicitações por segundo a serem enviadas à implantação de API.
Por exemplo:
{ "requestPolicies": { "rateLimiting": { "rateKey": "CLIENT_IP", "rateInRequestsPerSecond": 10 } }, "routes": [ { "path": "/hello", "methods": ["GET"], "backend": { "type": "ORACLE_FUNCTIONS_BACKEND", "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq" } } ] } - Salve o arquivo JSON que contém a especificação de implantação de API.
-
Use a especificação de implantação de API ao criar ou atualizar uma implantação de API das seguintes formas:
- especificando o arquivo JSON na Console quando você selecionar a opção Carregar uma API existente
- especificando o arquivo JSON em uma solicitação à API REST do serviço API Gateway
Para obter mais informações, consulte Implantando uma API em um Gateway de API por meio da Criação de uma Implantação de API e Atualizando um Gateway de API.
- (Opcional) Confirme se a API foi implantada com êxito, chamando-a (consulte Chamando uma API Implantada em um Gateway de API).