

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Modifier les attributs de votre Application Load Balancer
<a name="edit-load-balancer-attributes"></a>

Après avoir créé un Application Load Balancer, vous pouvez modifier ses attributs.

**Topics**
+ [Délai d'inactivité des connexions](#connection-idle-timeout)
+ [Durée de conservation du client HTTP](#http-client-keep-alive-duration)
+ [Protection contre la suppression](#deletion-protection)
+ [Mode d'atténuation de désynchronisation](#desync-mitigation-mode)
+ [Préservation de l'en-tête de l'hôte](#host-header-preservation)

## Délai d'inactivité des connexions
<a name="connection-idle-timeout"></a>

Le délai d'inactivité de la connexion est la période pendant laquelle une connexion client ou cible existante peut rester inactive, sans qu'aucune donnée ne soit envoyée ou reçue, avant que l'équilibreur de charge ne ferme la connexion.

Pour garantir que les opérations longues telles que le téléchargement de fichiers aient le temps de se terminer, envoyez au moins 1 octet de données avant la fin de chaque période d'inactivité et augmentez la durée de la période d'inactivité selon les besoins. Nous vous recommandons également de configurer le délai d'inactivité de votre application afin qu'il soit supérieur au délai d'inactivité configuré pour l'équilibreur de charge. Sinon, si l'application ferme la connexion TCP à l'équilibreur de charge de manière inappropriée, celui-ci peut envoyer une demande à l'application avant qu'elle ne reçoive le paquet indiquant que la connexion est fermée. Si tel est le cas, l'équilibreur de charge envoie une erreur HTTP 502 Bad Gateway au client.

Les équilibreurs de charge d'application ne prennent pas en charge les trames PING HTTP/2. Ils ne réinitialisent pas le délai d'inactivité de la connexion.

Par défaut, Elastic Load Balancing définit la valeur du délai d'inactivité de votre équilibreur de charge à 60 secondes.

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

**Pour mettre à jour la valeur du délai d'inactivité de la connexion**

1. Ouvrez la console Amazon EC2 à l’adresse [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Dans le volet de navigation, choisissez **Load Balancers (Équilibreurs de charge)**.

1. Sélectionnez l'équilibreur de charge.

1. Dans l'onglet **Attributes**, choisissez **Edit**.

1. Sous **Configuration du trafic**, entrez une valeur pour le **délai d'inactivité de la connexion.** La plage valide est comprise entre 1 et 4 000 secondes.

1. Sélectionnez **Enregistrer les modifications**.

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

**Pour mettre à jour la valeur du délai d'inactivité de la connexion**  
Utilisez la commande [modify-load-balancer-attributes](https://docs.aws.amazon.com/cli/latest/reference/elbv2/modify-load-balancer-attributes.html) avec l’attribut `idle_timeout.timeout_seconds`. La plage valide est comprise entre 1 et 4 000 secondes.

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

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

**Pour mettre à jour la valeur du délai d'inactivité de la connexion**  
Mettez à jour la [AWS::ElasticLoadBalancingV2::LoadBalancer](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-loadbalancer.html)ressource pour inclure l'`idle_timeout.timeout_seconds`attribut. La plage valide est comprise entre 1 et 4 000 secondes.

```
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"
```

------

## Durée de conservation du client HTTP
<a name="http-client-keep-alive-duration"></a>

La durée de conservation du client HTTP est la durée maximale pendant laquelle un Application Load Balancer maintient une connexion HTTP persistante avec un client. Une fois la durée de conservation du client HTTP configurée expirée, l'Application Load Balancer accepte une autre demande, puis renvoie une réponse qui ferme la connexion en douceur.

Le type de réponse envoyée par l'équilibreur de charge dépend de la version HTTP utilisée par la connexion client.
+ Pour les clients connectés via HTTP 1.x, l'équilibreur de charge envoie un en-tête HTTP contenant le champ. `Connection: close`
+ Pour les clients connectés via HTTP/2, l'équilibreur de charge envoie une `GOAWAY` trame.

Par défaut, Application Load Balancer définit la durée de conservation du client HTTP pour les équilibreurs de charge à 3 600 secondes, soit 1 heure. La durée de conservation du client HTTP ne peut pas être désactivée ou définie en dessous du minimum de 60 secondes, mais vous pouvez augmenter la durée de conservation du client HTTP jusqu'à un maximum de 604 800 secondes, soit 7 jours. Un Application Load Balancer commence la période de conservation du client HTTP lorsqu'une connexion HTTP est initialement établie avec un client. La durée continue lorsqu'il n'y a pas de trafic et ne se réinitialise pas tant qu'une nouvelle connexion n'est pas établie.

Lorsque le trafic de l'équilibreur de charge est déplacé hors d'une zone de disponibilité restreinte à l'aide du changement de zone ou du décalage automatique de zone, les clients disposant déjà de connexions ouvertes peuvent continuer à faire des demandes concernant la zone affectée jusqu'à ce qu'ils se reconnectent. Pour accélérer la restauration, pensez à définir une valeur de durée de conservation inférieure afin de limiter la durée pendant laquelle les clients restent connectés à un équilibreur de charge. Pour plus d'informations, consultez [Limitez le temps pendant lequel les clients restent connectés à vos points de terminaison](https://docs.aws.amazon.com/r53recovery/latest/dg/route53-arc-best-practices.zonal-shifts.html#arc-zonal-shift.existing-connections) dans le *manuel du développeur Amazon Application Recovery Controller (ARC)*.

**Note**  
Lorsque l'équilibreur de charge change le type d'adresse IP de votre Application Load Balancer`dualstack-without-public-ipv4`, il attend que toutes les connexions actives soient terminées. Pour réduire le temps nécessaire pour changer le type d'adresse IP de votre Application Load Balancer, pensez à réduire la durée de conservation du client HTTP.

L'Application Load Balancer attribue la valeur de durée keepalive au client HTTP lors de la connexion initiale. Lorsque vous mettez à jour la durée de conservation du client HTTP, cela peut entraîner des connexions simultanées avec différentes valeurs de durée de conservation du client HTTP. Les connexions existantes conservent la valeur de durée keepalive du client HTTP appliquée lors de sa connexion initiale. Les nouvelles connexions reçoivent la valeur de durée keepalive mise à jour du client HTTP.

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

**Pour mettre à jour la durée de conservation du client**

1. Ouvrez la console Amazon EC2 à l’adresse [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Dans le volet de navigation, choisissez **Load Balancers (Équilibreurs de charge)**.

1. Sélectionnez l'équilibreur de charge.

1. Dans l'onglet **Attributes**, choisissez **Edit**.

1. Sous **Configuration du trafic**, entrez une valeur pour la **durée de conservation du client HTTP.** La plage valide est comprise entre 60 et 604 800 secondes.

1. Sélectionnez **Enregistrer les modifications**.

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

**Pour mettre à jour la durée de conservation du client**  
Utilisez la commande [modify-load-balancer-attributes](https://docs.aws.amazon.com/cli/latest/reference/elbv2/modify-load-balancer-attributes.html) avec l’attribut `client_keep_alive.seconds`. La plage valide est comprise entre 60 et 604 800 secondes.

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

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

**Pour mettre à jour la durée de conservation du client**  
Mettez à jour la [AWS::ElasticLoadBalancingV2::LoadBalancer](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-loadbalancer.html)ressource pour inclure l'`client_keep_alive.seconds`attribut. La plage valide est comprise entre 60 et 604 800 secondes.

```
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"
```

------

## Protection contre la suppression
<a name="deletion-protection"></a>

Pour éviter la suppression accidentelle de votre équilibreur de charge, vous pouvez activer la protection contre la suppression. Par défaut, la protection contre la suppression est désactivée pour votre équilibreur de charge.

Si vous activez la protection contre la suppression de votre équilibreur de charge, vous devez la désactiver pour pouvoir supprimer l'équilibreur de charge.

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

**Pour activer ou désactiver la protection contre la suppression**

1. Ouvrez la console Amazon EC2 à l’adresse [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Dans le volet de navigation, choisissez **Load Balancers (Équilibreurs de charge)**.

1. Sélectionnez l'équilibreur de charge.

1. Dans l'onglet **Attributes**, choisissez **Edit**.

1. Sous **Protection**, activez ou désactivez la **protection contre la suppression**.

1. Sélectionnez **Enregistrer les modifications**.

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

**Pour activer ou désactiver la protection contre la suppression**  
Utilisez la commande [modify-load-balancer-attributes](https://docs.aws.amazon.com/cli/latest/reference/elbv2/modify-load-balancer-attributes.html) avec l’attribut `deletion_protection.enabled`.

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

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

**Pour activer ou désactiver la protection contre la suppression**  
Mettez à jour la [AWS::ElasticLoadBalancingV2::LoadBalancer](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-loadbalancer.html)ressource pour inclure l'`deletion_protection.enabled`attribut.

```
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"
```

------

## Mode d'atténuation de désynchronisation
<a name="desync-mitigation-mode"></a>

Le mode d'atténuation de désynchronisation protège votre application contre les problèmes dus à la désynchronisation HTTP. L'équilibreur de charge classe chaque demande en fonction de son niveau de menace, autorise les demandes sécurisées, puis atténue les risques comme spécifié par le mode d'atténuation que vous spécifiez. Les modes d'atténuation de désynchronisation sont Moniteur, Défensif et Le plus strict. La valeur par défaut est le mode Défensif, qui fournit une atténuation durable contre la désynchronisation HTTP tout en maintenant la disponibilité de votre application. Vous pouvez passer au mode Le plus strict pour vous assurer que votre application reçoit uniquement les requêtes conformes à la [RFC 7230](https://tools.ietf.org/html/rfc7230).

La bibliothèque http\$1desync\$1guardian analyse les requêtes HTTP pour empêcher les attaques HTTP par désynchronisation. Pour plus d'informations, consultez [HTTP Desync Guardian](https://github.com/aws/http-desync-guardian) sur. GitHub

**Classifications**

Les classifications sont les suivantes :
+ Conformité : la requête est conforme à la RFC 7230 et ne présente aucune menace de sécurité connue.
+ Acceptable : la requête n'est pas conforme à la RFC 7230 mais ne présente aucune menace de sécurité connue.
+ Ambiguë : la requête n'est pas conforme à la RFC 7230 mais présente un risque, car divers serveurs web et proxys pourraient la traiter différemment.
+ Sévère : la requête présente un risque de sécurité élevé. L'équilibreur de charge bloque la requête, sert une réponse 400 au client et ferme la connexion client.

Si une requête n'est pas conforme à la RFC 7230, l'équilibreur de charge incrémente la métrique `DesyncMitigationMode_NonCompliant_Request_Count`. Pour de plus amples informations, veuillez consulter [Métriques Application Load Balancer](load-balancer-cloudwatch-metrics.md#load-balancer-metrics-alb).

La classification de chaque demande est incluse dans les journaux d'accès de l'équilibreur de charge. Si la demande n'est pas conforme, les journaux d'accès incluent un code de motif de classification. Pour de plus amples informations, veuillez consulter [Motifs de classification](load-balancer-access-logs.md#classification-reasons).

**Modes**  
Le tableau suivant décrit la façon dont les Application Load Balancers traitent les requêtes en fonction du mode et de la classification.


| Classification | Mode Moniteur | Mode Défensif | Mode Le plus strict | 
| --- | --- | --- | --- | 
| Conforme | Autorisé | Autorisé | Autorisé | 
| Acceptable | Autorisé | Autorisé | Bloqué | 
| Ambigu | Autorisé | Autorisé¹ | Bloqué | 
| Sévère | Autorisé | Bloqué | Bloqué | 

¹ Achemine les requêtes mais ferme les connexions client et cible. Des frais supplémentaires peuvent vous être facturés si votre équilibreur de charge reçoit un grand nombre de demandes ambiguës en mode défensif. En effet, l'augmentation du nombre de nouvelles connexions par seconde contribue aux unités de capacité de l'équilibreur de charge (LCU) utilisées par heure. Vous pouvez utiliser la métrique `NewConnectionCount` pour comparer la manière dont votre équilibreur de charge établit de nouvelles connexions en mode moniteur et en mode défensif.

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

**Pour mettre à jour le mode d'atténuation de la désynchronisation**

1. Ouvrez la console Amazon EC2 à l’adresse [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Dans le volet de navigation, choisissez **Load Balancers (Équilibreurs de charge)**.

1. Sélectionnez l'équilibreur de charge.

1. Dans l'onglet **Attributes**, choisissez **Edit**.

1. **Sous **Configuration du trafic**, **Gestion des paquets**, pour le **mode d'atténuation de la désynchronisation**, choisissez **Defensive**, **Strictest ou Monitor**.**

1. Sélectionnez **Enregistrer les modifications**.

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

**Pour mettre à jour le mode d'atténuation de la désynchronisation**  
Utilisez la commande [modify-load-balancer-attributes](https://docs.aws.amazon.com/cli/latest/reference/elbv2/modify-load-balancer-attributes.html) avec l’attribut `routing.http.desync_mitigation_mode`. Les valeurs suivantes sont possibles : `monitor`, `defensive` ou `strictest`. La valeur par défaut est `defensive`.

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

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

**Pour mettre à jour le mode d'atténuation de la désynchronisation**  
Mettez à jour la [AWS::ElasticLoadBalancingV2::LoadBalancer](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-loadbalancer.html)ressource pour inclure l'`routing.http.desync_mitigation_mode`attribut. Les valeurs suivantes sont possibles : `monitor`, `defensive` ou `strictest`. La valeur par défaut est `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"
```

------

## Préservation de l'en-tête de l'hôte
<a name="host-header-preservation"></a>

Lorsque vous activez l'attribut **Préserver l'en-tête de l'hôte**, Application Load Balancer préserve l'en-tête `Host` dans la demande HTTP et envoie l'en-tête aux cibles sans aucune modification. Si Application Load Balancer reçoit plusieurs en-têtes `Host`, il les conserve tous. Les règles de l'écouteur ne sont appliquées qu'au premier en-tête `Host` reçu.

Par défaut, lorsque l'attribut **Préserver l'en-tête de l'hôte** n'est pas activé, Application Load Balancer modifie l'en-tête `Host` de la manière suivante : 

**Lorsque la préservation de l'en-tête de l'hôte n'est pas activée et que le port de l'écouteur n'est pas un port par défaut** : lorsque vous n'utilisez pas les ports par défaut (ports 80 ou 443), nous ajoutons le numéro de port à l'en-tête de l'hôte s'il n'est pas déjà ajouté par le client. Par exemple, l'en-tête `Host` de la demande HTTP avec `Host: www.example.com` serait modifié en `Host: www.example.com:8080`, si le port de l'écouteur n'est pas un port par défaut, tel que `8080`. 

**Lorsque la préservation de l'en-tête de l'hôte n'est pas activée et que le port de l'écouteur est un port par défaut (port 80 ou 443)** : pour les ports de l'écouteur par défaut (port 80 ou 443), nous n'ajoutons pas le numéro de port à l'en-tête de l'hôte sortant. Tout numéro de port qui figurait déjà dans l'en-tête de l'hôte entrant est supprimé. 

Le tableau suivant présente d'autres exemples de la façon dont les Application Load Balancers traitent les en-têtes d'hôte dans la demande HTTP en fonction du port de l'écouteur.


| Port de l'écouteur | Exemple de demande | En-têtes de l'hôte dans la demande | La conservation de l'en-tête de l'hôte est désactivée (comportement par défaut) | La conservation de l'en-tête de l'hôte est activée | 
| --- | --- | --- | --- | --- | 
| La demande est envoyée sur l' HTTP/HTTPS écouteur par défaut. | GET /index.html HTTP/1.1 Host: example.com | example.com | example.com | example.com | 
| La demande est envoyée sur l'écouteur HTTP par défaut et l'en-tête de l'hôte possède un port (par exemple, 80 ou 443). | GET /index.html HTTP/1.1 Host: example.com:80 | example.com:80 | example.com | example.com:80 | 
| La demande possède un chemin absolu. | GET https://dns\$1name/index.html HTTP/1.1 Host: example.com | example.com | dns\$1name | example.com | 
| La demande est envoyée sur un port d'écoute autre que le port par défaut (par exemple, 8080) | GET /index.html HTTP/1.1 Host: example.com | example.com | example.com:8080 | example.com | 
| La demande est envoyée sur un port d'écouteur autre que celui par défaut et l'en-tête de l'hôte possède un port (par exemple, 8080). | GET /index.html HTTP/1.1 Host: example.com:8080 | example.com:8080 | example.com:8080 | example.com:8080 | 

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

**Pour activer la conservation de l'en-tête de l'hôte**

1. Ouvrez la console Amazon EC2 à l’adresse [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Dans le volet de navigation, choisissez **Load Balancers**.

1. Sélectionnez l'équilibreur de charge.

1. Dans l'onglet **Attributes**, choisissez **Edit**.

1. Sous **Gestion des paquets**, activez **Conserver l'en-tête de l'hôte**.

1. Sélectionnez **Enregistrer les modifications**.

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

**Pour activer la conservation de l'en-tête de l'hôte**  
Utilisez la [modify-load-balancer-attributes](https://docs.aws.amazon.com/cli/latest/reference/elbv2/modify-load-balancer-attributes.html)commande avec l'`routing.http.preserve_host_header.enabled`attribut défini sur`true`.

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

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

**Pour activer la conservation de l'en-tête de l'hôte**  
Mettez à jour la [AWS::ElasticLoadBalancingV2::LoadBalancer](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-loadbalancer.html)ressource pour inclure l'`routing.http.preserve_host_header.enabled`attribut.

```
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"
```

------