Tipos de ação para regras de receptor - Elastic Load Balancing

Tipos de ação para regras de receptor

As ações determinam como um balanceador de carga trata as solicitações quando as condições de uma regra de receptor são satisfeitas. Cada regra deve ter pelo menos uma ação que especifique como lidar com as solicitações correspondentes. Cada ação de regra possui um tipo e informações de configuração. Os Application Load Balancers são compatíveis com os seguintes tipos de ação para regras de receptor.

Tipos de ação
authenticate-cognito

[Receptores HTTPS] Use o Amazon Cognito para autenticar usuários. Para obter mais informações, consulte Autenticação de usuário.

authenticate-oidc

[Listeners HTTPS] Usa um provedor de identidade compatível com OpenID Connect (OIDC) para autenticar usuários. Para obter mais informações, consulte Autenticação de usuário.

fixed-response

Retorna uma resposta HTTP personalizada. Para obter mais informações, consulte Ações de resposta fixa.

forward

Encaminha as solicitações para os grupos de destino especificados. Para obter mais informações, consulte Ações de encaminhamento.

redirect

Redireciona solicitações de um URL para outro. Para obter mais informações, consulte Ações de redirecionamento.

Conceitos básicos de ações
  • Cada regra deve incluir exatamente uma das seguintes ações de roteamento: forward, redirect ou fixed-response, e deve ser a última ação a ser executada.

  • Um receptor HTTPS pode ter uma regra com uma ação de autenticação do usuário e uma ação de roteamento.

  • Quando há várias ações, a ação com a menor prioridade é executada primeiro.

  • Se a versão do protocolo for gRPC ou HTTP/2, as únicas ações compatíveis serão ações forward.

Ações de resposta fixa

Uma ação de fixed-response descarta solicitações do cliente e retorna uma resposta HTTP personalizada. Você pode usar essa ação para retornar um código de resposta 2XX, 4XX e 5XX e uma mensagem opcional.

Quando uma ação de fixed-response é executada, a ação e o URL do destino do redirecionamento são registrados no logs de acesso. Para obter mais informações, consulte Entradas do log de acesso. A contagem de ações de fixed-response com êxito é relatada na métrica HTTP_Fixed_Response_Count. Para obter mais informações, consulte Métricas do Application Load Balancer.

exemplo Exemplo de ação de resposta fixa

Você pode especificar uma ação ao criar ou modificar uma regra. Para obter mais informações, consulte os comandos create-rule e modify-rule. A ação a seguir envia uma resposta fixa com o código de status e o corpo da mensagem especificados.

[ { "Type": "fixed-response", "FixedResponseConfig": { "StatusCode": "200", "ContentType": "text/plain", "MessageBody": "Hello world" } } ]

Ações de encaminhamento

Uma ação de forward faz o roteamento das solicitações para seu grupo de destino. Antes de adicionar uma ação forward, crie o grupo de destino e adicione destinos a ele. Para obter mais informações, consulte Criar um grupo de destino.

Distribuir tráfego para vários grupos de destino

Se especificar vários grupos de destino para uma ação forward, você deverá especificar um peso para cada grupo de destino. Cada peso de grupo de destino é um valor de 0 a 999. As solicitações que correspondem a uma regra de listener com grupos de destino ponderados são distribuídas para esses grupos de destino com base em seus pesos. Por exemplo, se você especificar dois grupos de destino, cada um com um peso de 10, cada grupo de destino receberá metade das solicitações. Se você especificar dois grupos de destino, um com peso de 10 e o outro com peso de 20, o grupo de destino com peso de 20 receberá duas vezes mais solicitações do que o outro grupo de destino.

Se você configurar uma regra para distribuir o tráfego entre grupos de destino ponderados e um dos grupos de destino estiver vazio ou possuir apenas alvos não íntegros, o balanceador de carga não fará o failover automaticamente para um grupo de destino com alvos íntegros.

Sessões persistentes e grupos de destino ponderados

Por padrão, configurar uma regra para distribuir o tráfego entre grupos de destino ponderados não garante que as sticky sessions sejam honradas. Para garantir que as sticky sessions sejam honradas, habilite a perdurabilidade do grupo de destino para a regra. Quando o load balancer primeiro roteia uma solicitação para um grupo de destino ponderado, ele gera um cookie chamado AWSALBTG que codifica informações sobre o grupo de destino selecionado, criptografa o cookie e inclui o cookie na resposta ao cliente. O cliente deve incluir o cookie recebido nas solicitações subsequentes ao load balancer. Quando o load balancer recebe uma solicitação que corresponde a uma regra com a perdurabilidade do grupo de destino habilitada e contém o cookie, a solicitação é roteada para o grupo de destino especificado no cookie.

Os Application Load Balancers não são compatíveis com valores de cookie codificados por URL.

Com solicitações de CORS (cross-origin resource sharing, compartilhamento de recursos de origem cruzada), alguns navegadores exigem SameSite=None; Secure para habilitar a perdurabilidade. Nesse caso, o Elastic Load Balancing gera um segundo cookie, AWSALBTGCORS, que inclui as mesmas informações que o cookie de perdurabilidade original, além deste atributo SameSite. Os clientes recebem ambos os cookies.

Você pode especificar uma ação ao criar ou modificar uma regra. Para obter mais informações, consulte os comandos create-rule e modify-rule. A ação a seguir encaminha solicitações para o grupo de destino especificado.

[ { "Type": "forward", "ForwardConfig": { "TargetGroups": [ { "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067" } ] } } ]

A ação a seguir encaminha solicitações para os dois grupos de destino especificados, com base no peso de cada grupo de destino.

[ { "Type": "forward", "ForwardConfig": { "TargetGroups": [ { "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/blue-targets/73e2d6bc24d8a067", "Weight": 10 }, { "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/green-targets/09966783158cda59", "Weight": 20 } ] } } ]

Se você tiver uma regra de encaminhamento com vários grupos de destino e um ou mais grupos de destino tiver sessões persistentes habilitadas, você deverá habilitar a perdurabilidade do grupo de destino.

A ação a seguir encaminha solicitações para os dois grupos de destino especificados, com a perdurabilidade do grupo de destino habilitada. As solicitações que não contêm os cookies de perdurabilidade são roteadas com base no peso de cada grupo de destino.

[ { "Type": "forward", "ForwardConfig": { "TargetGroups": [ { "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/blue-targets/73e2d6bc24d8a067", "Weight": 10 }, { "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/green-targets/09966783158cda59", "Weight": 20 } ], "TargetGroupStickinessConfig": { "Enabled": true, "DurationSeconds": 1000 } } } ]

Ações de redirecionamento

Uma ação de redirect redireciona solicitações de clientes de um URL para outro. Você pode configurar redirecionamentos como temporários (HTTP 302) ou permanentes (HTTP 301) com base em suas necessidades.

Um URI consiste nos seguintes componentes:

protocol://hostname:port/path?query

Você deve modificar pelo menos um dos seguintes componentes para evitar um loop de redirecionamento: protocolo, nome do host, porta ou caminho. Todos os componentes que você não modificar manterão seus valores originais.

protocolo

O protocolo (HTTP or HTTPS). Você pode redirecionar HTTP para HTTP, HTTP para HTTPS e HTTPS para HTTPS. Você não pode redirecionar HTTPS para HTTP.

hostname

O nome do host. Um nome de host não diferencia maiúsculas de minúsculas, pode ter até 128 caracteres e consiste em caracteres alfanuméricos, curingas (* e ?) e hifens (-).

porta

A porta (1 a 65535).

caminho

O caminho absoluto, começando com a "/" inicial. Um caminho diferencia maiúsculas de minúsculas, pode ter até 128 caracteres e consiste em caracteres alfanuméricos, curingas (* e ?), & (usando &) e nos seguintes caracteres especiais: _-.$/~"'@:+.

consulta

Os parâmetros da consulta. O tamanho máximo é 128 caracteres.

Você pode reutilizar os componentes do URI do URL original no URL de destino usando as seguintes palavras-chave reservadas:

  • #{protocol} – mantém o protocolo. Use no protocolo e nos componentes de consulta.

  • #{host} – mantém o domínio. Use no nome de host, no caminho e nos componentes de consulta.

  • #{port} – mantém a porta. Use na porta, no caminho e nos componentes de consulta.

  • #{path} – mantém o caminho. Use no caminho e nos componentes de consulta.

  • #{query} – mantém os parâmetros da consulta. Use no componente de consulta.

Quando uma ação de redirect é executada, a ação é registrada nos logs de acesso. Para obter mais informações, consulte Entradas do log de acesso. A contagem de ações de redirect com êxito é relatada na métrica HTTP_Redirect_Count. Para obter mais informações, consulte Métricas do Application Load Balancer.

Redirecionar usando HTTPS e a porta 40443

A regra a seguir define um redirecionamento permanente para um URL que usa o protocolo HTTPS e a porta especificada (40443), mas mantém o nome do host, o caminho e os parâmetros de consulta originais. Esta tela é equivalente a "https://#{host}:40443/#{path}?#{query}".

Uma regra que redireciona a solicitação para um URL que usa o protocolo HTTPS e a porta especificada (40443), mas mantém o domínio, o caminho e os parâmetros de consulta originais do URL original.
Redirecionar usando um caminho modificado

A seguinte regra define um redirecionamento permanente para um URL que usa o protocolo, a porta, nome de host e os parâmetros de consulta originais, e usa a palavra-chave #{path} para criar um caminho modificado. Esta tela é equivalente a "#{protocol}://#{host}:#{port}/new/#{path}?#{query}".

Uma regra que redireciona a solicitação para um URL que retém o protocolo, a porta, o nome de host e os parâmetros de consulta originais, e usa a palavra-chave #{path} para criar um caminho modificado.
Redirecionar usando HTTPS e a porta 40443

Você pode especificar uma ação ao criar ou modificar uma regra. Para obter mais informações, consulte os comandos create-rule e modify-rule. A ação a seguir redireciona uma solicitação HTTP para uma solicitação HTTPS na porta 443, com o mesmo nome de host, caminho e string de consulta que a solicitação HTTP.

--actions '[{ "Type": "redirect", "RedirectConfig": { "Protocol": "HTTPS", "Port": "443", "Host": "#{host}", "Path": "/#{path}", "Query": "#{query}", "StatusCode": "HTTP_301" } }]'