

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.

# Détection des pannes par le disjoncteur de déploiement Amazon ECS
<a name="deployment-circuit-breaker"></a>

Le disjoncteur du circuit de déploiement est un mécanisme de mise à jour propagée qui détermine si les tâches atteignent un état stable. Le disjoncteur du circuit de déploiement dispose d'une option qui ramène automatiquement un déploiement ayant échoué à l'état `COMPLETED`.

Lorsqu'un déploiement de service change d'état, Amazon ECS envoie un événement de changement d'état de déploiement de service à EventBridge. Cela permet de surveiller l'état de vos déploiements de services par programmation. Pour de plus amples informations, veuillez consulter [Événements de modification de l’état de déploiement de service Amazon ECS](ecs_service_deployment_events.md). Nous vous recommandons de créer et de surveiller une EventBridge règle avec un `eventName` de `SERVICE_DEPLOYMENT_FAILED` afin de pouvoir effectuer une action manuelle pour démarrer votre déploiement. Pour plus d'informations, consultez [Getting Started with EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-get-started.html) dans le *guide de EventBridge l'utilisateur Amazon*.

Lorsque le disjoncteur du circuit de déploiement détermine qu'un déploiement a échoué, il recherche le déploiement le plus récent à l'état `COMPLETED`. Il s'agit du déploiement qu'il utilise comme déploiement de restauration. Lorsque la restauration commence, le déploiement passe de `COMPLETED` à `IN_PROGRESS`. Cela signifie que le déploiement n’est pas éligible à une autre restauration tant qu’il n’a pas atteint un état `COMPLETED`. Lorsque le disjoncteur du circuit de déploiement ne trouve aucun déploiement à l'état `COMPLETED`, il ne lance pas de nouvelles tâches et le déploiement est bloqué. 

Lorsque vous créez un service, le planificateur assure le suivi des tâches qui n’ont pas pu être lancées en deux étapes.
+ Étape 1 : le planificateur surveille les tâches pour voir si elles passent à l’état EN COURS D’EXÉCUTION.
  + Succès : le déploiement a une chance de passer à l’état TERMINÉ car plusieurs tâches sont passées à l’état EN COURS D’EXÉCUTION. Les critères de défaillance sont ignorés et le disjoncteur passe à l’étape 2.
  + Échec : certaines tâches consécutives ne sont pas passées à l’état EN COURS D’EXÉCUTION et le déploiement peut passer à l’état ÉCHEC. 
+ Étape 2 : le déploiement entre dans cette phase lorsqu’au moins une tâche est EN COURS D’EXÉCUTION. Le disjoncteur vérifie les surveillances de l’état pour les tâches du déploiement actuel en cours d’évaluation. Les contrôles de santé validés sont Elastic Load Balancing, les contrôles de santé des AWS Cloud Map services et les contrôles de santé des conteneurs. 
  + Réussite : au moins une tâche est en cours d’exécution et les surveillances de l’état ont été validées.
  + Échec : les tâches remplacées en raison d’échecs liés aux surveillances de l’état ont atteint le seuil d’échec.

Tenez compte des points suivants lorsque vous utilisez la méthode du disjoncteur de déploiement sur un service. EventBridge génère la règle.
+ La réponse `DescribeServices` donne un aperçu de l'état d'un déploiement, le `rolloutState` et `rolloutStateReason`. Lorsqu'un nouveau déploiement est démarré, il commence avec l'état `IN_PROGRESS`. Lorsque le service atteint un état stable, l'état du déploiement passe à `COMPLETED`. Si le service n'arrive pas à atteindre un état stable et que le disjoncteur de circuit est activé, le déploiement passe à l'état `FAILED`. Un déploiement dans un état `FAILED` ne lance aucune nouvelle tâche.
+ Outre les événements de changement d'état de déploiement de service qu'Amazon ECS envoie pour les déploiements qui ont démarré et se sont terminés, Amazon ECS envoie également un événement lorsqu'un déploiement avec le disjoncteur de circuit activé échoue. Ces événements fournissent des informations sur la raison pour laquelle un déploiement a échoué ou si un déploiement a été démarré en raison d'une restauration. Pour de plus amples informations, veuillez consulter [Événements de modification de l’état de déploiement de service Amazon ECS](ecs_service_deployment_events.md).
+ Si un nouveau déploiement est démarré parce qu'un déploiement précédent a échoué et que la restauration a eu lieu, le champ `reason` de l'événement de changement d'état de déploiement de service indique que le déploiement a été démarré en raison d'une restauration.
+ Le disjoncteur de circuit de déploiement est pris en charge uniquement pour les services Amazon ECS qui utilisent le contrôleur de déploiement de la mise à jour continue (`ECS`).
+ Vous devez utiliser la console Amazon ECS, ou AWS CLI lorsque vous utilisez le disjoncteur de déploiement avec l' CloudWatch option. Pour plus d'informations, consultez [Créer un service à l'aide de paramètres définis](create-service-console-v2.md#create-custom-service) et [create-service](https://docs.aws.amazon.com/cli/latest/reference/ecs/create-service.html) dans la *Référence AWS Command Line Interface *.

L'`create-service` AWS CLI exemple suivant montre comment créer un service Linux lorsque le disjoncteur de déploiement est utilisé avec l'option de restauration.

```
aws ecs create-service \
     --service-name MyService \
     --deployment-controller type=ECS \
     --desired-count 3 \
     --deployment-configuration "deploymentCircuitBreaker={enable=true,rollback=true}" \
     --task-definition sample-fargate:1 \
     --launch-type FARGATE \
     --platform-family LINUX \
     --platform-version 1.4.0 \
     --network-configuration "awsvpcConfiguration={subnets=[subnet-12344321],securityGroups=[sg-12344321],assignPublicIp=ENABLED}"
```

Exemple :

Le déploiement 1 est à l'état `COMPLETED`.

Le déploiement 2 ne pouvant pas démarrer, le disjoncteur du circuit revient au déploiement 1. Le déploiement 1 passe à l'état `IN_PROGRESS`.

Le déploiement 3 démarre et aucun déploiement n'est à l'état `COMPLETED`. Le déploiement 3 ne peut donc ni être restauré, ni lancer de tâches. 

## Seuil d'échec
<a name="failure-threshold"></a>

Le disjoncteur de déploiement calcule la valeur de seuil, puis utilise cette valeur pour déterminer quand passer le déploiement à l'état `FAILED`.

Le disjoncteur de déploiement a un seuil minimum de 3 et un seuil maximum de 200. Il utilise les valeurs de la formule suivante pour déterminer l'échec du déploiement.

```
Minimum threshold <= 0.5 * desired task count => maximum threshold
```

Lorsque le résultat du calcul est supérieur au minimum de 3, mais inférieur au maximum de 200, le seuil de défaillance est défini sur le seuil calculé (arrondi au chiffre supérieur).

**Note**  
Vous ne pouvez modifier aucune des valeurs de seuil.

La surveillance de l'état du déploiement comporte deux étapes.

1. Le disjoncteur de déploiement surveille les tâches qui font partie du déploiement et vérifie les tâches qui se trouvent dans l'état `RUNNING`. Le planificateur ignore les critères d'échec lorsqu'une tâche du déploiement actuel se trouve dans l'état `RUNNING` et passe à l'étape suivante. Lorsque les tâches ne parviennent pas à atteindre l'état `RUNNING`, le disjoncteur de déploiement augmente d'un le nombre d'échecs. Lorsque le nombre d'échecs est égal au seuil, le déploiement est marqué comme étant `FAILED`.

1. Cette étape débute lorsqu’il y a une ou plusieurs tâches dans l’état `RUNNING`. Le disjoncteur de déploiement effectue une surveillance de l'état sur les ressources suivantes pour les tâches du déploiement actuel :
   + Equilibreurs de charge Elastic Load Balancing
   + AWS Cloud Map service
   + Surveillance de l'état des conteneurs Amazon ECS

   Lorsqu'une surveillance de l'état échoue pour la tâche, le disjoncteur de déploiement augmente d'un le nombre d'échecs. Lorsque le nombre d'échecs est égal au seuil, le déploiement est marqué comme étant `FAILED`.

Le tableau suivant fournit quelques exemples.


| Nombre souhaité | Calculs | Threshold | 
| --- | --- | --- | 
|  1  |  <pre>3 <= 0.5 * 1 => 200</pre>  | 3 (la valeur calculée est inférieure au minimum) | 
|  25  |  <pre>3 <= 0.5 * 25 => 200</pre>  | 13 (la valeur est arrondie à la valeur supérieure) | 
|  400  |  <pre>3 <= 0.5 * 400 => 200</pre>  | 200 | 
|  800  |  <pre>3 <= 0.5 * 800 => 200</pre>  | 200 (la valeur calculée est supérieure au maximum) | 

Par exemple, lorsque le seuil est de 3, le disjoncteur se déclenche lorsque le nombre de défaillances atteint 0. Lorsqu’une tâche ne parvient pas à atteindre l’état `RUNNING`, le disjoncteur de déploiement augmente le nombre d’échecs d’une unité. Lorsque le nombre d’échecs est égal à 3, le déploiement est marqué comme `FAILED`.

Pour obtenir des exemples supplémentaires sur l'utilisation de l'option de restauration, consultez [Announcing Amazon ECS deployment circuit breaker](https://aws.amazon.com/blogs/containers/announcing-amazon-ecs-deployment-circuit-breaker/) (Annonce du disjoncteur de circuit de déploiement Amazon ECS).