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:

  1. 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.

  2. 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. Você pode especificar que o máximo se aplica ao número de solicitações enviadas de qualquer cliente de API (identificado por seu endereço IP) ou ao número total de solicitações enviadas de todos os clientes de API.
  3. Selecione Salvar Alterações.

  4. 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.

  5. 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.

  6. Selecione Próximo para revisar os detalhes informados para a implantação de API.
  7. Selecione Criar ou Salvar Alterações para criar ou atualizar a implantação de API.
  8. (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:

  1. 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"
          }
        }
      ]
    }
  2. Insira uma seção requestPolicies antes da seção routes, 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"
          }
        }
      ]
    }
  3. Adicione a seguinte política rateLimiting à nova seção requestPolicies para 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 se o limite de número máximo de solicitações se aplica ao número de solicitações de clientes de API individuais (cada um identificado por seu endereço IP) ou ao número total de solicitações enviadas ao serviço de back-end. Os valores válidos são CLIENT_IP e TOTAL.
    • <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"
          }
        }
      ]
    }
  4. Salve o arquivo JSON que contém a especificação de implantação de API.
  5. 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.

  6. (Opcional) Confirme se a API foi implantada com êxito, chamando-a (consulte Chamando uma API Implantada em um Gateway de API).