

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Edición de los atributos del Equilibrador de carga de aplicación
<a name="edit-load-balancer-attributes"></a>

Después de crear un Equilibrador de carga de aplicación, puede editar sus atributos.

**Topics**
+ [Tiempo de inactividad de conexión](#connection-idle-timeout)
+ [Duración del valor keepalive del cliente HTTP](#http-client-keep-alive-duration)
+ [Protección contra eliminación](#deletion-protection)
+ [Modo de mitigación de desincronización](#desync-mitigation-mode)
+ [Conservación del encabezado del host](#host-header-preservation)

## Tiempo de inactividad de conexión
<a name="connection-idle-timeout"></a>

El tiempo de espera de la conexión inactiva es el período de tiempo que una conexión de cliente o de destino existente puede permanecer inactiva, sin que se envíen ni reciban datos, antes de que el equilibrador de carga cierre la conexión.

Para asegurarse de que las operaciones de larga duración (como la carga de archivos) dispongan de tiempo suficiente para completarse, envíe al menos un byte de datos antes de que finalice cada tiempo de inactividad y aumente la duración de este tiempo, según sea necesario. También recomendamos que configure el tiempo de inactividad de su aplicación para que sea mayor que el tiempo de inactividad configurado para el equilibrador de carga. De lo contrario, si la aplicación cierra la conexión TCP al equilibrador de carga de forma irregular, este podría enviar una solicitud a la aplicación antes de que reciba el paquete que indica que la conexión está cerrada. Si este es el caso, entonces el equilibrador de carga envía un error HTTP 502 Bad Gateway al cliente.

Los equilibradores de carga de aplicaciones no admiten tramas HTTP/2 PING. Estas no restablecen el tiempo de espera de inactividad de la conexión.

De forma predeterminada, Elastic Load Balancing establece el tiempo de inactividad del equilibrador de carga en 60 segundos.

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

**Para actualizar el valor del tiempo de espera de inactividad de la conexión**

1. Abra la consola de Amazon EC2 en [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. En el panel de navegación, seleccione **Load Balancers**.

1. Seleccione el equilibrador de carga.

1. En la pestaña **Atributos**, seleccione **Editar**.

1. En **Configuración de tráfico**, introduzca un valor en **Tiempo de espera de la conexión inactiva**, en segundos. El intervalo válido es de 1 a 4000 segundos.

1. Seleccione **Save changes (Guardar cambios)**.

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

**Para actualizar el valor del tiempo de espera de inactividad de la conexión**  
Utilice el comando [modify-load-balancer-attributes](https://docs.aws.amazon.com/cli/latest/reference/elbv2/modify-load-balancer-attributes.html) con el atributo `idle_timeout.timeout_seconds`. El rango válido es de 1 a 4000 segundos.

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

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

**Para actualizar el valor del tiempo de espera de inactividad de la conexión**  
Actualice el [AWS::ElasticLoadBalancingV2::LoadBalancer](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-loadbalancer.html)recurso para incluir el `idle_timeout.timeout_seconds` atributo. El rango válido es de 1 a 4000 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"
```

------

## Duración del valor keepalive del cliente HTTP
<a name="http-client-keep-alive-duration"></a>

La duración del valor keepalive del cliente HTTP es el tiempo máximo durante el que un Equilibrador de carga de aplicación mantiene una conexión HTTP persistente con un cliente. Una vez transcurrido el tiempo del valor keepalive del cliente HTTP configurado, el Equilibrador de carga de aplicación acepta una solicitud más y, a continuación, devuelve una respuesta que cierra la conexión sin problemas.

El tipo de respuesta que envía el equilibrador de carga depende de la versión HTTP que usa la conexión del cliente.
+ En el caso de los clientes conectados mediante HTTP 1.x, el equilibrador de carga envía un encabezado HTTP que contiene el campo `Connection: close`.
+ Para los clientes conectados mediante HTTP/2, el equilibrador de carga envía un marco `GOAWAY`.

De forma predeterminada, Equilibrador de carga de aplicación establece el valor de duración keepalive del cliente HTTP de los equilibradores de carga en 3600 segundos o 1 hora. La duración del valor keepalive del cliente HTTP no se puede desactivar ni establecer por debajo del mínimo de 60 segundos, pero puede aumentarla hasta un máximo de 604 800 segundos o 7 días. Un Equilibrador de carga de aplicación inicia el período de duración del valor keepalive del cliente HTTP cuando se establece inicialmente una conexión HTTP con un cliente. El período de duración continúa cuando no hay tráfico y no se restablece hasta que se confirma una nueva conexión.

Cuando el tráfico del equilibrador de carga se aleja de una zona de disponibilidad dañada mediante un cambio de zona o un cambio automático de zona, los clientes con conexiones abiertas existentes pueden seguir realizando solicitudes a la ubicación afectada hasta que los clientes se vuelvan a conectar. Para conseguir una recuperación más rápida, considere la posibilidad de establecer un valor de duración de keepalive más bajo para limitar el tiempo que los clientes permanecen conectados a un equilibrador de carga. Para obtener más información, 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) en la *Guía para desarrolladores del Controlador de recuperación de aplicaciones de Amazon (ARC)*.

**nota**  
Cuando el equilibrador de carga cambia el tipo de dirección IP de su Equilibrador de carga de aplicación a `dualstack-without-public-ipv4`, espera a que se completen todas las conexiones activas. Para reducir la cantidad de tiempo que toma cambiar el tipo de dirección IP del equilibrador de carga de aplicaciones, considere reducir la duración del mantenimiento de conexión HTTP del cliente.

El Equilibrador de carga de aplicación asigna al cliente HTTP el valor de duración keepalive durante la conexión inicial. Al actualizar la duración del valor keepalive del cliente HTTP, esto puede crear conexiones simultáneas con valores de duración keepalive diferentes del cliente HTTP. Las conexiones existentes conservan el valor de duración keepalive del cliente HTTP que se aplicó durante su conexión inicial. Las nuevas conexiones reciben el valor de duración keepalive del cliente HTTP actualizado.

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

**Para actualizar la duración del mantenimiento de conexión del cliente**

1. Abra la consola de Amazon EC2 en [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. En el panel de navegación, seleccione **Load Balancers**.

1. Seleccione el equilibrador de carga.

1. En la pestaña **Atributos**, seleccione **Editar**.

1. En **Configuración del tráfico**, introduzca un valor para la **duración del valor keepalive del cliente HTTP**. El rango válido es de 60 a 604800 segundos.

1. Seleccione **Save changes (Guardar cambios)**.

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

**Para actualizar la duración del mantenimiento de conexión del cliente**  
Utilice el comando [modify-load-balancer-attributes](https://docs.aws.amazon.com/cli/latest/reference/elbv2/modify-load-balancer-attributes.html) con el atributo `client_keep_alive.seconds`. El rango válido es de 60 a 604800 segundos.

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

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

**Para actualizar la duración del mantenimiento de conexión del cliente**  
Actualice el [AWS::ElasticLoadBalancingV2::LoadBalancer](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-loadbalancer.html)recurso para incluir el `client_keep_alive.seconds` atributo. El rango válido es de 60 a 604800 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"
```

------

## Protección contra eliminación
<a name="deletion-protection"></a>

Para evitar que el equilibrador de carga se elimine por error, puede habilitar la protección contra eliminación. De forma predeterminada, la protección contra eliminación del equilibrador de carga está deshabilitada.

Si habilita la protección contra eliminación del equilibrador de carga, deberá deshabilitarla para poder eliminarlo.

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

**Para habilitar o desactivar la protección contra eliminación**

1. Abra la consola de Amazon EC2 en [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. En el panel de navegación, seleccione **Load Balancers**.

1. Seleccione el equilibrador de carga.

1. En la pestaña **Atributos**, seleccione **Editar**.

1. Bajo **Protección**, habilite o desactive **Protección contra eliminación**.

1. Seleccione **Save changes (Guardar cambios)**.

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

**Para habilitar o desactivar la protección contra eliminación**  
Utilice el comando [modify-load-balancer-attributes](https://docs.aws.amazon.com/cli/latest/reference/elbv2/modify-load-balancer-attributes.html) con el 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 o desactivar la protección contra eliminación**  
Actualice el [AWS::ElasticLoadBalancingV2::LoadBalancer](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-loadbalancer.html)recurso para incluir el `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 mitigación de desincronización
<a name="desync-mitigation-mode"></a>

El modo de mitigación de desincronización protege a la aplicación de problemas causados por desincronización HTTP. El equilibrador de carga clasifica cada solicitud en función de su nivel de amenaza, permite solicitudes seguras y, además, mitiga el riesgo según lo especificado en el modo de mitigación que determine. La mitigación de desincronización incluye modos monitoreados, defensivos y más estrictos. El valor predeterminado es el modo defensivo, que proporciona una mitigación duradera contra la desincronización HTTP mientras mantiene la disponibilidad de la aplicación. Puede cambiar al modo más estricto para asegurarse de que la aplicación solo reciba solicitudes que cumplan con [RFC 7230](https://tools.ietf.org/html/rfc7230).

La biblioteca http\$1desync\$1guardian analiza las solicitudes HTTP para evitar ataques de desincronización HTTP. Para obtener más información, consulte [HTTP Desync Guardian](https://github.com/aws/http-desync-guardian) en. GitHub

**Clasificaciones**

Las clasificaciones son las siguientes:
+ Conforme: la solicitud cumple con RFC 7230 y no presenta amenazas de seguridad conocidas.
+ Aceptable: la solicitud no cumple con RFC 7230, pero no presenta amenazas de seguridad conocidas.
+ Ambigua: la solicitud no cumple con RFC 7230 y representa un riesgo, ya que varios servidores web y proxies podrían manejarla de manera diferente.
+ Grave: la solicitud supone un alto riesgo para la seguridad. El equilibrador de carga bloquea la solicitud, proporciona una respuesta 400 al cliente y cierra la conexión del cliente.

Si una solicitud no cumple con RFC 7230, el equilibrador de carga incrementa la métrica de `DesyncMitigationMode_NonCompliant_Request_Count`. Para obtener más información, consulte [Métricas del Equilibrador de carga de aplicación](load-balancer-cloudwatch-metrics.md#load-balancer-metrics-alb).

La clasificación de cada solicitud se incluye en los registros de acceso al equilibrador de carga. Si la solicitud no cumple con los requisitos, los registros de acceso incluyen un código de motivo de clasificación. Para obtener más información, consulte [Motivos de la clasificación](load-balancer-access-logs.md#classification-reasons).

**Modos**  
En la siguiente tabla se describe cómo los Equilibradores de carga de aplicación tratan a las solicitudes según el modo y la clasificación.


| Clasificación | Modo monitoreado | Modo defensivo | Modo más estricto | 
| --- | --- | --- | --- | 
| Conforme | Permitido | Permitida | Permitida | 
| Aceptable | Permitido | Permitida | Bloqueada | 
| Ambigua | Permitido | Permitida¹ | Bloqueada | 
| Grave | Permitido | Bloqueada | Bloqueada | 

¹ Enruta las solicitudes, pero cierra las conexiones del cliente y del destino. Puede incurrir en cargos adicionales si el equilibrador de carga recibe una gran cantidad de solicitudes ambiguas en el modo Defensivo. Esto se debe a que el aumento del número de conexiones nuevas por segundo contribuye a las unidades de capacidad del equilibrador de carga (LCU) utilizadas por hora. Puede usar la métrica `NewConnectionCount` para comparar la forma en que el equilibrador de carga establece nuevas conexiones en el modo Monitor y en el modo Defensivo.

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

**Para actualizar el modo de mitigación de desincronización**

1. Abra la consola de Amazon EC2 en [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. En el panel de navegación, seleccione **Load Balancers**.

1. Seleccione el equilibrador de carga.

1. En la pestaña **Atributos**, seleccione **Editar**.

1. Bajo **Configuración de tráfico**, **Manejo de paquetes**, en **Modo de mitigación de desincronización**, elija **Defensivo**, **Más estricto** o **Monitoreo**.

1. Seleccione **Save changes (Guardar cambios)**.

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

**Para actualizar el modo de mitigación de desincronización**  
Utilice el comando [modify-load-balancer-attributes](https://docs.aws.amazon.com/cli/latest/reference/elbv2/modify-load-balancer-attributes.html) con el atributo `routing.http.desync_mitigation_mode`. Los valores posibles son `monitor`, `defensive`, o `strictest`. El valor predeterminado es `defensive`.

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

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

**Para actualizar el modo de mitigación de desincronización**  
Actualice el [AWS::ElasticLoadBalancingV2::LoadBalancer](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-loadbalancer.html)recurso para incluir el `routing.http.desync_mitigation_mode` atributo. Los valores posibles son `monitor`, `defensive`, o `strictest`. El valor predeterminado es `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"
```

------

## Conservación del encabezado del host
<a name="host-header-preservation"></a>

Cuando habilita el atributo **Conservar encabezado de host**, el Equilibrador de carga de aplicación conserva el encabezado `Host` de la solicitud HTTP y la envía a los destinos sin ninguna modificación. Si el Equilibrador de carga de aplicación recibe varios encabezados `Host`, los conserva todos. Las reglas de oyente se aplican solo al primer encabezado `Host` recibido.

De forma predeterminada, cuando el atributo **Conservar el encabezado del host** no está habilitado, el Equilibrador de carga de aplicación modifica el encabezado `Host` de la siguiente manera: 

**Cuando la conservación del encabezado del host no está habilitada y el puerto de oyente no es un puerto predeterminado**: cuando no se utilizan los puertos predeterminados (puertos 80 o 443), agregamos el número de puerto al encabezado del host si el cliente aún no lo ha hecho. Por ejemplo, el encabezado `Host` de la solicitud HTTP con `Host: www.example.com` se modificaría en `Host: www.example.com:8080` si el puerto de oyente no es un puerto predeterminado como `8080`. 

**Cuando la conservación del encabezado del host no está habilitada y el puerto de oyente es el puerto predeterminado (puerto 80 o 443)**: en el caso de los puertos de oyente predeterminados (puerto 80 o 443), no agregamos el número de puerto al encabezado del host saliente. Se elimina cualquier número de puerto que ya estuviera en el encabezado del host entrante. 

La siguiente tabla muestra más ejemplos de cómo los equilibradores de carga de aplicaciones tratan los encabezados de host en la solicitud HTTP en función del puerto de oyente.


| Puerto del oyente | Ejemplo de solicitud | Encabezado de host en la solicitud | La conservación del encabezado del host está deshabilitada (comportamiento predeterminado) | La conservación del encabezado del host está habilitada | 
| --- | --- | --- | --- | --- | 
| La solicitud se envía en el HTTP/HTTPS listener predeterminado. | GET /index.html HTTP/1.1 Host: example.com | example.com | example.com | example.com | 
| La solicitud se envía en el oyente HTTP predeterminado y el encabezado del host tiene un puerto (por ejemplo, 80 o 443). | GET /index.html HTTP/1.1 Host: example.com:80 | example.com:80 | example.com | example.com:80 | 
| La solicitud tiene una ruta absoluta. | GET https://dns\$1name/index.html HTTP/1.1 Host: example.com | example.com | dns\$1name | example.com | 
| La solicitud se envía a un puerto de oyente no predeterminado (por ejemplo, 8080). | GET /index.html HTTP/1.1 Host: example.com | example.com | example.com:8080 | example.com | 
| La solicitud se envía a un puerto de oyente no predeterminado y el encabezado del host tiene un puerto (por ejemplo, 8080). | GET /index.html HTTP/1.1 Host: example.com:8080 | example.com:8080 | example.com:8080 | example.com:8080 | 

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

**Para habilitar la conservación del encabezado del host**

1. Abra la consola de Amazon EC2 en [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. En el panel de navegación, seleccione **Equilibradores de carga**.

1. Seleccione el equilibrador de carga.

1. En la pestaña **Atributos**, seleccione **Editar**.

1. En **Gestión de paquetes**, active **Conservar el encabezado del host**.

1. Seleccione **Save changes (Guardar cambios)**.

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

**Para habilitar la conservación del encabezado del host**  
Utilice el [modify-load-balancer-attributes](https://docs.aws.amazon.com/cli/latest/reference/elbv2/modify-load-balancer-attributes.html)comando con el `routing.http.preserve_host_header.enabled` atributo establecido en. `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 la conservación del encabezado del host**  
Actualice el [AWS::ElasticLoadBalancingV2::LoadBalancer](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-loadbalancer.html)recurso para incluir el `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"
```

------