

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Editar atributos para o Application Load Balancer
<a name="edit-load-balancer-attributes"></a>

Depois de criar um Application Load Balancer, você pode editar seus atributos.

**Topics**
+ [Tempo limite de inatividade da conexão](#connection-idle-timeout)
+ [Duração da manutenção de atividade do cliente HTTP](#http-client-keep-alive-duration)
+ [Deletion protection (Proteção contra exclusão)](#deletion-protection)
+ [Modo de mitigação de dessincronização](#desync-mitigation-mode)
+ [Preservação de cabeçalho do host](#host-header-preservation)

## Tempo limite de inatividade da conexão
<a name="connection-idle-timeout"></a>

O tempo limite de inatividade da conexão é o período em que uma conexão existente de cliente ou destino pode permanecer inativa, sem que nenhum dado seja enviado ou recebido, antes que o balanceador de carga feche a conexão.

Para garantir que operações demoradas, como uploads de arquivo, tenham tempo para serem concluídas; envie pelo menos 1 byte de dados antes de decorrer cada período de tempo limite de inatividade e aumente a duração do período do tempo limite de inatividade conforme o necessário. Recomendamos também que você configure o tempo limite de inatividade do seu aplicativo como um valor maior do que o tempo limite de inatividade configurado para o load balancer. Caso contrário, se a aplicação fechar a conexão TCP com o balanceador de carga incorretamente, o balanceador de carga poderá enviar uma solicitação à aplicação antes de receber o pacote indicando que a conexão foi fechada. Se isso acontecer, o balanceador de carga enviará um erro HTTP 502 Gateway inadequado para o cliente.

Os Application Load Balancers não são compatíveis com quadros de PING HTTP/2. Eles não redefinem o tempo limite de inatividade da conexão.

Por padrão, o Elastic Load Balancing define como 60 segundos o valor do tempo limite de inatividade para o balanceador de carga.

------
#### [ Console ]

**Para atualizar o valor do tempo limite de inatividade da conexão**

1. Abra o console do Amazon EC2 em [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. No painel de navegação, selecione **Balanceador de carga**.

1. Selecione o load balancer.

1. Na guia **Atributos**, escolha **Editar**.

1. Em **Configuração de tráfego**, insira um valor para **Tempo limite de inatividade da conexão**. O intervalo válido é de 1 a 4.000 segundos.

1. Escolha **Salvar alterações**.

------
#### [ AWS CLI ]

**Para atualizar o valor do tempo limite de inatividade da conexão**  
Use o comando [modify-load-balancer-attributes](https://docs.aws.amazon.com/cli/latest/reference/elbv2/modify-load-balancer-attributes.html) com o atributo `idle_timeout.timeout_seconds`. O intervalo válido é de 1 a 4.000 segundos.

```
aws elbv2 modify-load-balancer-attributes \
    --load-balancer-arn load-balancer-arn \
    --attributes "Key=idle_timeout.timeout_seconds,Value=120"
```

------
#### [ CloudFormation ]

**Para atualizar o valor do tempo limite de inatividade da conexão**  
Atualize o [AWS::ElasticLoadBalancingV2::LoadBalancer](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-loadbalancer.html)recurso para incluir o `idle_timeout.timeout_seconds` atributo. O intervalo válido é de 1 a 4.000 segundos.

```
Resources:
  myLoadBalancer:
    Type: 'AWS::ElasticLoadBalancingV2::LoadBalancer'
    Properties:
      Name: my-alb
      Type: application
      Scheme: internal
      Subnets: 
        - !Ref subnet-AZ1
        - !Ref subnet-AZ2
      SecurityGroups: 
        - !Ref mySecurityGroup
      LoadBalancerAttributes: 
        - Key: "idle_timeout.timeout_seconds"
          Value: "120"
```

------

## Duração da manutenção de atividade do cliente HTTP
<a name="http-client-keep-alive-duration"></a>

A duração da manutenção de atividade do cliente HTTP é o tempo máximo em que um Application Load Balancer mantém uma conexão HTTP persistente com um cliente. Depois de decorrida a duração da manutenção de atividade do cliente HTTP configurado, o Application Load Balancer aceita mais uma solicitação e retorna uma resposta que fecha a conexão normalmente.

O tipo de resposta enviada pelo balanceador de carga depende da versão HTTP usada pela conexão do cliente.
+ Para clientes conectados usando HTTP 1.x, o balanceador de carga envia um cabeçalho HTTP contendo o campo `Connection: close`.
+ Para clientes conectados usando HTTP/2, o balanceador de carga envia um quadro `GOAWAY`.

Por padrão, o Application Load Balancer define o valor da duração da manutenção de atividade do cliente HTTP para balanceadores de carga como 3.600 segundos ou 1 hora. A duração da manutenção de atividade do cliente HTTP não pode ser desativada ou definida abaixo do mínimo de 60 segundos, mas você pode aumentar a duração da manutenção de atividade do cliente HTTP até um máximo de 604.800 segundos ou 7 dias. Um Application Load Balancer inicia o período de duração da manutenção de atividade do cliente HTTP quando uma conexão HTTP com um cliente é estabelecida inicialmente. O período de duração continua quando não há tráfego e não é reiniciado até que uma nova conexão seja estabelecida.

Quando o tráfego do balanceador de carga é deslocado de uma zona de disponibilidade prejudicada usando mudança de zona ou mudança automática de zona, os clientes com conexões abertas existentes podem continuar fazendo solicitações no local danificado até que os clientes se reconectem. Para oferecer suporte a uma recuperação mais rápida, considere definir um valor menor de duração da manutenção de atividade para limitar a quantidade de tempo que os clientes permanecem conectados a um balanceador de carga. Para obter mais informações, consulte [Limit the time that clients stay connected to your endpoints](https://docs.aws.amazon.com/r53recovery/latest/dg/route53-arc-best-practices.zonal-shifts.html#arc-zonal-shift.existing-connections) no *Guia do desenvolvedor do Amazon Application Recovery Controller (ARC)*.

**nota**  
Quando o balanceador de carga muda o tipo de endereço IP do Application Load Balancer para `dualstack-without-public-ipv4`, o balanceador de carga espera que todas as conexões ativas sejam concluídas. Para diminuir o tempo necessário para trocar o tipo de endereço IP do Application Load Balancer, considere reduzir a duração da manutenção de atividade do cliente HTTP.

O Application Load Balancer atribui o valor de duração da manutenção de atividade do cliente HTTP durante a conexão inicial. Quando você atualiza a duração da manutenção de atividade do cliente HTTP, isso pode resultar em conexões simultâneas com diferentes valores de duração da manutenção de atividade do cliente HTTP. As conexões existentes mantêm o valor de duração da manutenção de atividade do cliente HTTP aplicado durante a conexão inicial. Novas conexões recebem o valor atualizado de duração da manutenção de atividade do cliente HTTP.

------
#### [ Console ]

**Para atualizar a duração do keepalive do cliente**

1. Abra o console do Amazon EC2 em [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. No painel de navegação, selecione **Balanceador de carga**.

1. Selecione o load balancer.

1. Na guia **Atributos**, escolha **Editar**.

1. Em **Configuração de tráfego**, insira um valor para a **Duração da manutenção de atividade do cliente HTTP**. O intervalo válido é de 60 a 604.800 segundos.

1. Escolha **Salvar alterações**.

------
#### [ AWS CLI ]

**Para atualizar a duração do keepalive do cliente**  
Use o comando [modify-load-balancer-attributes](https://docs.aws.amazon.com/cli/latest/reference/elbv2/modify-load-balancer-attributes.html) com o atributo `client_keep_alive.seconds`. O intervalo válido é de 60 a 604.800 segundos.

```
aws elbv2 modify-load-balancer-attributes \
    --load-balancer-arn load-balancer-arn \
    --attributes "Key=client_keep_alive.seconds,Value=7200"
```

------
#### [ CloudFormation ]

**Para atualizar a duração do keepalive do cliente**  
Atualize o [AWS::ElasticLoadBalancingV2::LoadBalancer](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-loadbalancer.html)recurso para incluir o `client_keep_alive.seconds` atributo. O intervalo válido é de 60 a 604.800 segundos.

```
Resources:
  myLoadBalancer:
    Type: 'AWS::ElasticLoadBalancingV2::LoadBalancer'
    Properties:
      Name: my-alb
      Type: application
      Scheme: internal
      Subnets: 
        - !Ref subnet-AZ1
        - !Ref subnet-AZ2
      SecurityGroups: 
        - !Ref mySecurityGroup
      LoadBalancerAttributes: 
        - Key: "client_keep_alive.seconds"
          Value: "7200"
```

------

## Deletion protection (Proteção contra exclusão)
<a name="deletion-protection"></a>

Para evitar que seu load balancer seja excluído acidentalmente, é possível ativar a proteção contra exclusão. Por padrão, a proteção contra exclusão está desativada para seu load balancer.

Se você ativar a proteção contra exclusão para o load balancer, deverá desativá-la antes de excluir o load balancer.

------
#### [ Console ]

**Para habilitar ou desabilitar a proteção contra exclusão**

1. Abra o console do Amazon EC2 em [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. No painel de navegação, selecione **Balanceador de carga**.

1. Selecione o load balancer.

1. Na guia **Atributos**, escolha **Editar**.

1. Em **Proteção**, ative ou desative a **Proteção contra exclusão**.

1. Escolha **Salvar alterações**.

------
#### [ AWS CLI ]

**Para habilitar ou desabilitar a proteção contra exclusão**  
Use o comando [modify-load-balancer-attributes](https://docs.aws.amazon.com/cli/latest/reference/elbv2/modify-load-balancer-attributes.html) com o atributo `deletion_protection.enabled`.

```
aws elbv2 modify-load-balancer-attributes \
    --load-balancer-arn load-balancer-arn \
    --attributes "Key=deletion_protection.enabled,Value=true"
```

------
#### [ CloudFormation ]

**Para habilitar ou desabilitar a proteção contra exclusão**  
Atualize o [AWS::ElasticLoadBalancingV2::LoadBalancer](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-loadbalancer.html)recurso para incluir o `deletion_protection.enabled` atributo.

```
Resources:
  myLoadBalancer:
    Type: 'AWS::ElasticLoadBalancingV2::LoadBalancer'
    Properties:
      Name: my-alb
      Type: application
      Scheme: internal
      Subnets: 
        - !Ref subnet-AZ1
        - !Ref subnet-AZ2
      SecurityGroups: 
        - !Ref mySecurityGroup
      LoadBalancerAttributes: 
        - Key: "deletion_protection.enabled"
          Value: "true"
```

------

## Modo de mitigação de dessincronização
<a name="desync-mitigation-mode"></a>

O modo de mitigação de dessincronização protege sua aplicação contra problemas causados por dessincronização de HTTP. O balanceador de carga classifica cada solicitação com base em seu nível de ameaça, permite solicitações seguras e, em seguida, reduz o risco, conforme instruído pelo modo de mitigação especificado. Os modos de mitigação de dessincronização são: monitor (monitorado), defensive (defensivo) e strictest (mais rigoroso). O padrão é o modo defensivo, que fornece mitigação durável contra HTTP Desync, mantendo a disponibilidade da sua aplicação. Você pode alternar para o modo mais restrito a fim de garantir que sua aplicação receba somente solicitações que estejam em conformidade com a [RFC 7230](https://tools.ietf.org/html/rfc7230).

A biblioteca http\$1desync\$1guardian analisa solicitações HTTP para prevenir ataques de dessincronização de HTTP. Para obter mais informações, consulte [HTTP Desync Guardian](https://github.com/aws/http-desync-guardian) em. GitHub

**Classificações**

As classificações são as seguintes:
+ Compatível: a solicitação está em conformidade com o RFC 7230 e não representa ameaças de segurança conhecidas.
+ Aceitável: a solicitação não está em conformidade com o RFC 7230, mas não representa ameaças de segurança conhecidas.
+ Ambígua: a solicitação não está em conformidade com o RFC 7230, mas representa um risco, pois vários servidores Web e proxies podem lidar com ela de formas diferentes.
+ Grave: a solicitação representa um alto risco de segurança. O balanceador de carga bloqueia a solicitação, atende uma resposta 400 ao cliente e fecha a conexão do cliente.

Se uma solicitação não estiver em conformidade com o RFC 7230, o balanceador de carga incrementará a métrica `DesyncMitigationMode_NonCompliant_Request_Count`. Para obter mais informações, consulte [Métricas do Application Load Balancer](load-balancer-cloudwatch-metrics.md#load-balancer-metrics-alb).

A classificação de cada solicitação está incluída nos logs de acesso do balanceador de carga. Se a solicitação não estiver em conformidade, os logs de acesso incluirão um código de motivo de classificação. Para obter mais informações, consulte [Motivos de classificação](load-balancer-access-logs.md#classification-reasons).

**Modos**  
A tabela a seguir descreve como os Application Load Balancers processam solicitações com base no modo e na classificação.


| Classificação | Modo monitorado | Modo defensivo | Modo mais restrito | 
| --- | --- | --- | --- | 
| Compatível | Permitido | Permitido | Permitido | 
| Aceitável | Permitido | Permitido | Bloqueado | 
| Ambíguo | Permitido | Permitido¹ | Bloqueado | 
| Grave | Permitido | Bloqueado | Bloqueado | 

¹ Encaminha as solicitações, mas fecha as conexões entre cliente e destino. Você poderá incorrer em cobranças adicionais se seu balanceador de carga receber um grande número de solicitações ambíguas no modo Defensivo. Isso ocorre porque o aumento do número de novas conexões por segundo contribui para as Load Balancer Capacity Units (LCU – Unidades de capacidade do balanceador de carga) usadas por hora. Você pode usar a métrica `NewConnectionCount` para comparar como seu balanceador de carga estabelece novas conexões no modo Monitorar e no modo Defensivo.

------
#### [ Console ]

**Para atualizar o modo de mitigação de dessincronização**

1. Abra o console do Amazon EC2 em [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. No painel de navegação, selecione **Balanceador de carga**.

1. Selecione o load balancer.

1. Na guia **Atributos**, escolha **Editar**.

1. Em **Configuração de tráfego**, **Tratamento de pacotes**, para o **Modo de mitigação de dessincronização**, escolha **Defensivo**, **Mais rigoroso** ou **Monitorar**.

1. Escolha **Salvar alterações**.

------
#### [ AWS CLI ]

**Para atualizar o modo de mitigação de dessincronização**  
Use o comando [modify-load-balancer-attributes](https://docs.aws.amazon.com/cli/latest/reference/elbv2/modify-load-balancer-attributes.html) com o atributo `routing.http.desync_mitigation_mode`. Os valores possíveis são `monitor`, `defensive` ou `strictest`. O padrão é `defensive`.

```
aws elbv2 modify-load-balancer-attributes \
    --load-balancer-arn load-balancer-arn \
    --attributes "Key=routing.http.desync_mitigation_mode,Value=monitor"
```

------
#### [ CloudFormation ]

**Para atualizar o modo de mitigação de dessincronização**  
Atualize o [AWS::ElasticLoadBalancingV2::LoadBalancer](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-loadbalancer.html)recurso para incluir o `routing.http.desync_mitigation_mode` atributo. Os valores possíveis são `monitor`, `defensive` ou `strictest`. O padrão é `defensive`.

```
Resources:
  myLoadBalancer:
    Type: 'AWS::ElasticLoadBalancingV2::LoadBalancer'
    Properties:
      Name: my-alb
      Type: application
      Scheme: internal
      Subnets: 
        - !Ref subnet-AZ1
        - !Ref subnet-AZ2
      SecurityGroups: 
        - !Ref mySecurityGroup
      LoadBalancerAttributes: 
        - Key: "routing.http.desync_mitigation_mode"
          Value: "monitor"
```

------

## Preservação de cabeçalho do host
<a name="host-header-preservation"></a>

Quando você habilitar o atributo **Preservar cabeçalho do host**, o Application Load Balancer vai preservar o cabeçalho `Host` na solicitação HTTP e enviá-lo para o destino sem nenhuma modificação. Se o Application Load Balancer receber vários cabeçalhos `Host`, ele preservará todos eles. As regras do receptor são aplicadas somente ao primeiro cabeçalho `Host` recebido.

Por padrão, quando o atributo **Preservar cabeçalho do host** não estiver habilitado, o Application Load Balancer modificará o cabeçalho `Host` da seguinte maneira: 

**Quando a preservação de cabeçalho do host não estiver habilitada e a porta do receptor for uma porta não padrão**: quando não estiver usando as portas padrão (portas 80 ou 443), anexaremos o número da porta ao cabeçalho do host, caso ele ainda não tenha sido anexado pelo cliente. Por exemplo, o cabeçalho `Host` na solicitação HTTP com `Host: www.example.com` seria modificado para `Host: www.example.com:8080` se a porta do receptor fosse uma porta não padrão, como `8080`. 

**Quando a preservação de cabeçalho do host não estiver habilitada e a porta do receptor for uma porta padrão (porta 80 ou 443)**: para portas padrão do receptor (porta 80 ou 443), não anexamos o número da porta ao cabeçalho do host de saída. Qualquer número de porta que já esteja no cabeçalho do host de entrada será removido. 

A tabela a seguir mostra mais exemplos de como os Application Load Balancers processam os cabeçalhos do host na solicitação HTTP com base na porta do receptor.


| Porta do receptor | Exemplo de solicitação | Cabeçalho do host na solicitação | Preservação de cabeçalho do host desabilitada (comportamento padrão) | Preservação de cabeçalho do host habilitada | 
| --- | --- | --- | --- | --- | 
| A solicitação é enviada no HTTP/HTTPS ouvinte padrão. | GET /index.html HTTP/1.1 Host: example.com | example.com | example.com | example.com | 
| A solicitação é enviada no receptor HTTP padrão e o cabeçalho do host tem uma porta (por exemplo, 80 ou 443). | GET /index.html HTTP/1.1 Host: example.com:80 | example.com:80 | example.com | example.com:80 | 
| A solicitação tem um caminho absoluto. | GET https://dns\$1name/index.html HTTP/1.1 Host: example.com | example.com | dns\$1name | example.com | 
| A solicitação é enviada em uma porta de receptor não padrão (por exemplo, 8080) | GET /index.html HTTP/1.1 Host: example.com | example.com | example.com:8080 | example.com | 
| A solicitação é enviada em uma porta de receptor não padrão e o cabeçalho do host tem uma porta (por exemplo, 8080). | GET /index.html HTTP/1.1 Host: example.com:8080 | example.com:8080 | example.com:8080 | example.com:8080 | 

------
#### [ Console ]

**Para habilitar a preservação de cabeçalho do host**

1. Abra o console do Amazon EC2 em [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. No painel de navegação, selecione **Load Balancers**.

1. Selecione o load balancer.

1. Na guia **Atributos**, escolha **Editar**.

1. Em **Tratamento de pacotes**, ative **Preservar cabeçalho do host**.

1. Escolha **Salvar alterações**.

------
#### [ AWS CLI ]

**Para habilitar a preservação de cabeçalho do host**  
Use o [modify-load-balancer-attributes](https://docs.aws.amazon.com/cli/latest/reference/elbv2/modify-load-balancer-attributes.html)comando com o `routing.http.preserve_host_header.enabled` atributo definido como`true`.

```
aws elbv2 modify-load-balancer-attributes \
    --load-balancer-arn load-balancer-arn \
    --attributes "Key=routing.http.preserve_host_header.enabled,Value=true"
```

------
#### [ CloudFormation ]

**Para habilitar a preservação de cabeçalho do host**  
Atualize o [AWS::ElasticLoadBalancingV2::LoadBalancer](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-loadbalancer.html)recurso para incluir o `routing.http.preserve_host_header.enabled` atributo.

```
Resources:
  myLoadBalancer:
    Type: 'AWS::ElasticLoadBalancingV2::LoadBalancer'
    Properties:
      Name: my-alb
      Type: application
      Scheme: internal
      Subnets: 
        - !Ref subnet-AZ1
        - !Ref subnet-AZ2
      SecurityGroups: 
        - !Ref mySecurityGroup
      LoadBalancerAttributes: 
        - Key: "routing.http.preserve_host_header.enabled"
          Value: "true"
```

------