

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.

# Contrôlez la rétention des instances grâce aux politiques de cycle de vie des instances
<a name="instance-lifecycle-policy"></a>

 Les politiques de cycle de vie des instances fournissent une protection contre les interruptions d'Amazon EC2 Auto Scaling lorsqu'une action du cycle de vie de résiliation est abandonnée. Contrairement aux seuls crochets relatifs au cycle de vie, les politiques de cycle de vie des instances sont conçues pour garantir que les instances passent à un état conservé lorsque les procédures d'arrêt progressives ne se terminent pas correctement. 

## Quand utiliser les politiques de cycle de vie des instances
<a name="when-to-use-instance-lifecycle-policies"></a>

 Utilisez les politiques de cycle de vie des instances lorsque l'arrêt progressif de votre application n'est pas facultatif mais obligatoire et que les arrêts échoués nécessitent une intervention manuelle. Cas d’utilisation courants : 
+  Applications dynamiques qui doivent terminer la persistance des données avant de s'arrêter. 
+  Applications nécessitant des périodes de vidange prolongées pouvant dépasser le délai d'expiration maximal du cycle de vie du crochet, qui est de 48 heures. 
+  Charges de travail traitant des données sensibles dont l'échec ou le nettoyage incomplet peuvent entraîner la perte ou la corruption des données. 
+  Services critiques pour lesquels un arrêt brutal a un impact sur la disponibilité. 

 Pour plus d'informations sur la manière de gérer correctement la résiliation d'une instance, consultez[Concevez vos applications pour gérer avec élégance la résiliation des instances](gracefully-handle-instance-termination.md). 

## Comment les politiques de cycle de vie des instances fonctionnent avec les hooks du cycle de vie de résiliation
<a name="how-instance-lifecycle-policies-work"></a>

 Les politiques de cycle de vie des instances fonctionnent en combinaison avec les hooks du cycle de vie de résiliation, et non en remplacement. Le processus se déroule en plusieurs étapes : 

1.  **Les actions du cycle de vie de résiliation sont exécutées.** Lorsqu'Amazon EC2 Auto Scaling sélectionne une instance à résilier, vos hooks du cycle de vie de résiliation sont invoqués et l'instance entre dans l'état requis pour commencer à exécuter `Terminating:Wait` les actions du cycle de vie de résiliation. 

1.  **Une tentative d'arrêt gracieuse commence.** Votre application, qu'elle s'exécute sur l'instance ou via un plan de contrôle, reçoit la notification des actions de fin du cycle de vie et lance des procédures d'arrêt progressives, telles que la vidange des connexions, l'achèvement des travaux en cours ou le transfert de données. 

1.  **Les actions du cycle de vie de résiliation sont terminées.** Une action du cycle de vie de résiliation peut aboutir `CONTINUE` ou en `ABANDON` résulter. 

1.  **La politique de cycle de vie de l'instance évalue la situation.** Si aucune politique de cycle de vie d'instance n'est configurée, l'instance passe immédiatement à la résiliation, même si l'action du cycle de vie de résiliation a été menée à bien avec `ABANDON` résultat. Avec une politique de cycle de vie d'instance configurée pour conserver les instances `TerminateHookAbandon` actives, l'instance passe à un état conservé si l'action de résiliation du cycle de vie s'est terminée avec `ABANDON` résultat. 

1.  **Les instances conservées attendent une action manuelle.** Les instances dans les états conservés continuent de faire l'objet de frais Amazon EC2 standard. Ces instances ne sont pas prises en compte dans la capacité souhaitée de votre groupe Auto Scaling. Auto Scaling lance donc des instances de remplacement pour maintenir la taille souhaitée. Les fonctionnalités d'Auto Scaling telles que l'actualisation des instances et la durée de vie maximale des instances ignoreront également les instances conservées. Cela vous permet d'effectuer les procédures de nettoyage manuellement, de récupérer des données ou de rechercher les raisons de l'échec de l'arrêt automatique avant de mettre fin manuellement à l'instance. 

1.  **La résiliation manuelle se produit.** Après avoir effectué les actions nécessaires sur l'instance conservée, vous devez appeler l'`TerminateInstanceInAutoScalingGroup`API pour mettre fin à l'instance. 

# Configurer la rétention des instances
<a name="configure-instance-retention"></a>

Configurez votre groupe Amazon EC2 Auto Scaling pour conserver les instances lorsque les actions du cycle de vie de résiliation échouent.

 Pour utiliser les politiques de cycle de vie des instances dans votre groupe Auto Scaling, vous devez également configurer un hook de cycle de vie de terminaison. Si vous configurez une politique de cycle de vie d'instance mais que vous n'avez aucun hook de cycle de vie de résiliation, la politique n'a aucun effet. Les politiques relatives au cycle de vie des instances ne s'appliquent que lorsque les actions du cycle de vie de résiliation sont abandonnées, et non lorsqu'elles aboutissent au `CONTINUE` résultat escompté. 

 Les politiques de cycle de vie des instances utilisent des déclencheurs de rétention pour déterminer quand conserver une instance. Le `TerminateHookAbandon` déclencheur entraîne la rétention dans plusieurs scénarios : 
+  Lorsque vous appelez explicitement l'[ CompleteLifecycleAction](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_CompleteLifecycleAction.html)API avec le `ABANDON` résultat. 
+  Lorsqu'une action du cycle de vie de résiliation avec un résultat par défaut `ABANDON` expire parce que le délai d'expiration du rythme cardiaque est atteint sans qu'un battement de cœur ne soit reçu. 
+  Lorsque le délai global est atteint lors d'une action du cycle de vie de résiliation dont le résultat `ABANDON` par défaut est de 48 heures ou 100 fois le délai d'expiration du rythme cardiaque, la valeur la plus courte étant retenue 

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

**Pour configurer la rétention des instances**

1. Ouvrez la console Amazon EC2 Auto Scaling

1. Créez votre groupe Auto Scaling (la politique de cycle de vie de l'instance est définie par défaut sur Terminate)

1. Accédez à la page des détails de votre groupe Auto Scaling et choisissez l'onglet **Instance Management**

1. Dans **Politique de cycle de vie des instances pour les hooks de cycle** de vie, choisissez **Retain**

1. Créez vos crochets relatifs au cycle de vie des résiliations avec :
   + Transition du cycle de vie définie sur **Instance terminate**
   + Le résultat par défaut est défini sur **Abandon**

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

**Pour configurer la rétention des instances**  
 Utilisez la [create-auto-scaling-group](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/create-auto-scaling-group.html)commande avec une politique de cycle de vie de l'instance : 

```
aws autoscaling create-auto-scaling-group \
--auto-scaling-group-name my-asg \
--launch-template LaunchTemplateName=my-template,Version='$Latest' \
--min-size 1 \
--max-size 3 \
--desired-capacity 2 \
--vpc-zone-identifier subnet-12345678 \
--instance-lifecycle-policy file://lifecycle-policy.json
```

Contenu du fichier lifecycle-policy.json :

```
{
    "RetentionTriggers": {
        "TerminateHookAbandon": "retain"
    }
}
```

**Pour ajouter un hook de cycle de vie de résiliation**  
Utilisez la commande [put-lifecycle-hook](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/put-lifecycle-hook.html) :

```
aws autoscaling put-lifecycle-hook \
--lifecycle-hook-name my-termination-hook \
--auto-scaling-group-name my-asg \
--lifecycle-transition autoscaling:EC2_INSTANCE_TERMINATING \
--default-result ABANDON \
--heartbeat-timeout 300
```

------

# Gérer les instances conservées
<a name="manage-retained-instances"></a>

 Surveillez et contrôlez les instances Amazon EC2 qui ont été déplacées vers un état conservé. Utilisez CloudWatch des métriques pour suivre les instances conservées, puis mettez fin manuellement aux instances conservées après avoir effectué vos actions personnalisées. 

 Les instances conservées ne sont pas prises en compte dans le calcul de la capacité souhaitée par votre groupe Amazon EC2 Auto Scaling. Lorsqu'une instance passe à l'état conservé, Auto Scaling lance une instance de remplacement pour conserver la capacité souhaitée. Supposons, par exemple, que votre groupe Auto Scaling ait une capacité souhaitée de 10. Lorsqu'une instance entre dans `Terminating:Retained` cet état, Auto Scaling lance une instance de remplacement pour maintenir la capacité souhaitée de 10. Vous avez désormais 11 instances en cours d'exécution au total : 10 dans votre groupe actif plus 1 instance conservée. Les frais standard d'Amazon EC2 pour les 11 instances s'appliqueront jusqu'à ce que vous mettiez manuellement fin à l'instance conservée. 

## État du cycle de vie des instances conservées
<a name="instance-lifecyle-states-of-retained-instances"></a>

 Découvrez comment les instances passent d'un état à l'autre du cycle de vie lorsque les politiques de cycle de vie des instances sont utilisées. Les instances suivent un chemin spécifique depuis la résiliation normale jusqu'à la résiliation finale en passant par la rétention. 

*Lorsque la rétention est déclenchée, les instances passent par les états suivants :*

1. `Terminating`- Début de la terminaison normale

1. `Terminating:Wait`- Lifecycle Hook s'exécute

1. `Terminating:Proceed`- Les actions du cycle de vie se terminent (qu'elles aient réussi ou échoué)

1. `Terminating:Retained`- Le crochet échoue, l'instance est conservée pour une intervention manuelle

Les instances Warm Pool suivent des chemins d'état de cycle de vie différents en fonction du scénario :

*Instances redimensionnées dans le pool de chaleur :*

1. `Warmed:Pending`- La transition normale vers une piscine chaude commence

1. `Warmed:Pending:Wait`- Lifecycle Hook s'exécute

1. `Warmed:Pending:Proceed`- Les actions du cycle de vie se terminent (qu'elles aient réussi ou échoué)

1. `Warmed:Pending:Retained`- Le crochet échoue, l'instance est conservée pour une intervention manuelle

*Instances en cours de résiliation depuis le pool de chaleur :*

1. `Warmed:Terminating`- Début de la terminaison normale

1. `Warmed:Terminating:Wait`- Lifecycle Hook s'exécute

1. `Warmed:Terminating:Proceed`- Les actions du cycle de vie se terminent (qu'elles aient réussi ou échoué)

1. `Warmed:Terminating:Retained`- Le crochet échoue, l'instance est conservée pour une intervention manuelle

## Surveillez les instances conservées
<a name="monitor-retained-instances"></a>

 Étant donné que les instances Amazon EC2 conservées entraînent des coûts et nécessitent une intervention manuelle, leur surveillance est essentielle. Amazon EC2 Auto Scaling fournit CloudWatch plusieurs métriques pour suivre les instances conservées. 

Activez les métriques de groupe pour suivre les instances conservées :

```
aws autoscaling enable-metrics-collection \
--auto-scaling-group-name my-asg \
--metrics GroupTerminatingRetainedInstances
```

Les indicateurs disponibles sont les suivants :
+  `GroupTerminatingRetainedInstances`indique le nombre d'instances dans l'`Terminating:Retained`état. 
+  `GroupTerminatingRetainedCapacity`indique les unités de capacité représentées par les instances dans l'`Terminating:Retained`état. 
+  `WarmPoolTerminatingRetainedCapacity`suit les instances conservées qui se terminent depuis le pool de chaleur. 
+  `WarmPoolPendingRetainedCapacity`suit le retour des instances conservées dans le pool de chaleur. 

 Vous pouvez également vérifier les activités de dimensionnement de votre groupe Amazon EC2 Auto Scaling pour comprendre pourquoi les instances ont été conservées. Recherchez les activités de résiliation accompagnées de messages indiquant `StatusCode: Cancelled` les raisons du statut indiquant les défaillances des crochets pendant le cycle de vie : 

```
aws autoscaling describe-scaling-activities \
--auto-scaling-group-name my-asg
```

 Nous vous recommandons de créer des CloudWatch alarmes sur ces métriques afin de vous avertir lorsque les instances entrent dans un état conservé. Cela vous permet de suivre les implications financières et de ne pas oublier de nettoyer les instances qui nécessitent une intervention manuelle. 

## Mettre fin aux instances conservées
<a name="terminate-retained-instances"></a>

Après avoir effectué vos actions personnalisées, mettez fin à vos instances conservées en appelant l'[ TerminateInstanceInAutoScalingGroup](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_TerminateInstanceInAutoScalingGroup.html)API : 

```
aws autoscaling terminate-instance-in-auto-scaling-group \
--instance-id i-1234567890abcdef0 \
--no-should-decrement-desired-capacity
```