Adicione a política SpikeArrest à sua API

Esta página aplica-se ao Apigee e ao Apigee Hybrid.

Veja a documentação do Apigee Edge.

O que vai aprender

Neste tutorial, vai aprender a:

  • Adicione uma política que afete o pedido e a resposta.
  • Veja os efeitos da política.

O que precisa

Adicione a política SpikeArrest

Neste tutorial, vai adicionar e configurar a política SpikeArrest para proteger o serviço de destino contra picos de tráfego súbitos que podem ser causados por um aumento na utilização, clientes com erros ou ataques maliciosos. Quando o número de pedidos excede o limite de velocidade, a API devolve um erro HTTP 429.

Novo editor de proxy

Para adicionar a política SpikeArrest a um proxy de API:

  1. Se estiver a usar a IU do Apigee na consola do Google Cloud: selecione Desenvolvimento de proxy > Proxies de API.

    Se estiver a usar a IU do Apigee clássica: selecione Develop > API Proxies e, no painel Proxies, selecione o ambiente para o proxy.

    Se seguiu o tutorial Começar, pode adicioná-lo ao proxy da API que criou em Criar um proxy da API.

  2. Clique no separador Desenvolver.
  3. No painel do lado esquerdo, clique no botão + na linha Políticas.
  4. Na caixa de diálogo Criar política, clique no campo Selecionar tipo de política e desloque a página para baixo até Gestão de tráfego e selecione SpikeArrest.

  5. Opcionalmente, pode alterar o Nome e o Nome a apresentar da política. Por predefinição, o Apigee fornece um prefixo curto para o nome da política, neste caso, SA-. Pode adicionar uma sequência de palavras descritivas, separadas por travessões, após o prefixo. Consulte as Convenções de nomenclatura.

    Caixa de diálogo Criar política.

    Quando terminar, clique em Criar para criar a política.

Agora que criou a política de restrição de picos, pode adicioná-la a um passo no PreFlow.

  1. Selecione Proxy Endpoints > default > PreFlow no painel do lado esquerdo:

    Destine pontos finais para a seleção de PreFlow no Proxy Explorer.

    Nota: pode ter de expandir o editor visual no painel do lado direito para ver todos os elementos. Para o fazer, clique e arraste ligeiramente a barra de divisão entre o editor visual e o editor de texto.

  2. Clique no botão + junto a PreFlow no painel Resposta na parte inferior direita do editor visual:

    Clique no botão + junto a PreFlow no painel Response.

  3. Na caixa de diálogo Passo Adicionar política, selecione a política Spike Arrest.
  4. Clique em Adicionar para anexar a política.

    A política Spike Arrest é agora apresentada no painel Resposta:

    Política de Spike Arrest apresentada no painel de resposta.

Agora que anexou a política Spike Arrest ao PreFlow, pode tentar alterar o código da política:

  1. No painel Resposta, selecione SA-.

    Política de deteção de picos apresentada no separador Políticas.

  2. O editor de texto apresenta o código XML do proxy, incluindo o passo da política de Spike Arrest no elemento Response do PreFlow.
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <SpikeArrest continueOnError="false" enabled="true" name="SA-">
        <DisplayName>SA-</DisplayName>
        <Properties/>
        <Identifier ref="request.header.some-header-name"/>
        <MessageWeight ref="request.header.weight"/>
        <Rate>30ps</Rate>
    </SpikeArrest>
  3. No XML da política, altere o valor do elemento <Rate> para 1pm (o que se traduz em aproximadamente duas solicitações permitidas a cada 60 segundos na nuvem).

    Pode especificar a taxa como um valor inteiro por minuto (pm) ou por segundo (ps). Este é um limite muito baixo e é usado apenas para este tutorial para demonstrar a política. Normalmente, define-o para um limite muito superior.

    Repare que o valor Rate no inspetor de propriedades também muda para 1pm. Em alternativa, pode alterar o valor da Taxa no Inspetor de propriedades e este será refletido na vista XML.

  4. Clique em Guardar para guardar a revisão atual com as suas alterações.

Editor de proxy clássico

Para adicionar a política SpikeArrest a um proxy de API:

  1. Inicie sessão na IU do Apigee.
  2. Selecione Desenvolver > Proxies de API na barra de navegação do lado esquerdo.
  3. Selecione o proxy de API ao qual quer adicionar a política SpikeArrest.

    Se seguiu o tutorial Começar, pode adicioná-lo ao proxy da API que criou em Criar um proxy da API.

  4. No editor do novo proxy de API, clique no separador Develop:

    O separador Desenvolver encontra-se entre os separadores Vista geral e Rastreio.

    O editor de proxy de API permite-lhe ver a estrutura do seu proxy de API e configurar o respetivo fluxo. O editor apresenta uma representação visual do fluxo de mensagens de pedido e resposta do proxy, bem como uma apresentação editável do XML subjacente que define o proxy.

  5. No painel do navegador do lado esquerdo, clique em PreFlow em Proxy Endpoints > default. (Outros tutoriais abordam o conceito de fluxos.)
  6. Clique no botão +Passo superior, correspondente ao pedido PreFlow. Esta opção apresenta uma lista categorizada de todas as políticas que pode criar.

    Clique em Passo no PreFlow do pedido.

  7. Selecione SpikeArrest na categoria Gestão de tráfego. É apresentada a caixa de diálogo Nova política:

    Crie uma política SpikeArrest.

  8. Deixe os nomes predefinidos e clique em Adicionar. A nova política está anexada ao fluxo PreFlow de um pedido.
  9. No navegador, certifique-se de que a opção PreFlow em Proxy Endpoints > default continua selecionada e tome nota do seguinte no editor de proxy de API:
    • A nova política SpikeArrest-1 é adicionada em Policies no navegador no lado esquerdo do editor de proxy de API.
    • O ícone SpikeArrest-1 é adicionado à vista de designer na parte superior central do editor de proxy de API, que é uma representação visual dos fluxos de mensagens do seu proxy.
    • O XML da política é apresentado na vista de código na parte inferior central do editor do proxy da API.

    Veja o PreFlow com a política SpikeArrest.

  10. No navegador, selecione SpikeArrest-1 em Policies e tome nota do seguinte no editor de proxy de API:
    • Os detalhes da política são apresentados na vista de designer na parte superior central do editor de proxy de API.
    • O XML da política é apresentado na vista de código na parte inferior central do editor de proxy da API.
    • Os valores dos atributos e dos elementos XML da política são apresentados no inspetor de propriedades no lado direito do editor de proxy da API.

    O painel Inspetor de propriedades mostra os valores da política SpikeArrest-1.

  11. No XML da política, altere o valor do elemento <Rate> para 1pm (o que se traduz em aproximadamente duas solicitações permitidas a cada 60 segundos na nuvem).

    Pode especificar a taxa como um valor inteiro por minuto (pm) ou por segundo (ps). Este é um limite muito baixo e é usado apenas para este tutorial para demonstrar a política. Normalmente, define-o para um limite muito superior.

    Repare que o valor Rate no inspetor de propriedades também muda para 1pm. Em alternativa, pode alterar o valor da Taxa no Inspetor de propriedades e este será refletido na vista XML.

  12. Clique em Guardar para guardar a revisão atual com as suas alterações.
  13. Implemente as alterações através do botão Implementar em:.
  14. Chame a API usando curl, usando o URL do seu domínio:

    curl "http://YOUR_DOMAIN/myproxy"

    where:

    Consulte Teste o proxy da API para mais informações.

    Certifique-se de que o pedido é bem-sucedido e que vê a mesma resposta XML que viu anteriormente. (Também pode introduzir apenas o URL num navegador de Internet.)

    Em seguida, experimente testar a definição Rate de diferentes formas:

    • Execute o comando curl (ou atualize a janela do navegador) mais duas ou três vezes no prazo de um minuto e repare que recebe a seguinte mensagem porque excedeu o limite de taxa da política:
      {
      "fault": {
        "faultstring":"Spike arrest violation. Allowed rate : 1pm",
        "detail": {
          "errorcode":"policies.ratelimit.SpikeArrestViolation"}
        }
      }

      Se tentar fazer mais chamadas no espaço de um minuto, continua a receber a mensagem de erro.

    • Edite a sua política para definir o limite de <Rate> para 15pm (o que se traduz em aproximadamente duas chamadas permitidas a cada quatro segundos na nuvem) e, em seguida, guarde e implemente o proxy de API.
    • Execute o comando curl ou atualize o navegador repetidamente (curl é mais rápido). Repare que, se fizer uma ou duas chamadas com intervalos de quatro segundos, as chamadas são bem-sucedidas. Se fizer as chamadas rapidamente, mais de duas em quatro segundos, deve receber o erro de falha. No entanto, após cada intervalo de 4 segundos, pode continuar a fazer chamadas, em vez de ficar bloqueado durante um minuto inteiro (com a definição 1pm).