

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.

# Suspendre les hooks pour les déploiements de services Amazon ECS
<a name="pause-lifecycle-hooks"></a>

Les hooks interrompent le déploiement d'un service Amazon ECS à une étape spécifique du cycle de vie et attendent que vous appeliez `ContinueServiceDeployment` avant que le déploiement ne se poursuive. Utilisez des crochets de pause lorsque vous avez besoin d'une approbation manuelle ou d'une validation externe avant la poursuite d'un déploiement.

## Comment fonctionnent les crochets de pause
<a name="pause-hooks-how-they-work"></a>

Lorsqu'un déploiement atteint un stade du cycle de vie pour lequel un crochet de pause est configuré, les événements suivants se produisent :

1. Amazon ECS génère un identifiant unique `hookId` pour le crochet de pause.

1. Amazon ECS émet un EventBridge événement avec le type de détail `ECS Hook State Change` et le nom de l'événement. `HOOK_AWAITING_ACTION`

1. Le déploiement reste suspendu jusqu'à ce que vous appeliez `ContinueServiceDeployment` avec une action de `CONTINUE` ou`ROLLBACK`, ou jusqu'à ce que le délai d'expiration configuré soit atteint. `hookId`

Vous pouvez les récupérer `hookId` en appelant`DescribeServiceDeployments`. La réponse inclut un `lifecycleHookDetails` tableau avec l'état du hook :

```
{
    "serviceDeployments": [
        {
            "lifecycleHookDetails": [
                {
                    "hookId": "ecs-pause-e7tK9G_WRJqNF_EOMjztDXfKenlJuEUVjsNStf4WLKw",
                    "targetType": "PAUSE",
                    "status": "AWAITING_ACTION",
                    "expiresAt": "2024-01-15T12:00:00Z",
                    "timeoutAction": "ROLLBACK"
                }
            ]
        }
    ]
}
```

## Configuration des crochets de pause
<a name="pause-hooks-configuring"></a>

L'exemple suivant montre une configuration de crochet de pause dans une définition de service qui suspend le déploiement une fois le transfert de trafic de test terminé :

```
{
    "deploymentConfiguration": {
        "strategy": "BLUE_GREEN",
        "lifecycleHooks": [
            {
                "targetType": "PAUSE",
                "lifecycleStages": [
                    "POST_TEST_TRAFFIC_SHIFT"
                ],
                "timeoutConfiguration": {
                    "timeoutInMinutes": 10,
                    "action": "ROLLBACK"
                }
            }
        ]
    }
}
```

### Champs de configuration
<a name="pause-hooks-configuration-fields"></a>


| Champ | Description | Valeurs valides | Obligatoire | 
| --- | --- | --- | --- | 
| targetType | Type de hook. Ça doit être PAUSE pour les pauses. | PAUSE | Oui | 
| lifecycleStages | Les étapes du cycle de vie au cours desquelles le déploiement s'arrête. | RECONCILE\_SERVICE, PRE\_SCALE\_UP, POST\_SCALE\_UP, POST\_TEST\_TRAFFIC\_SHIFT, PRE\_PRODUCTION\_TRAFFIC\_SHIFT, POST\_PRODUCTION\_TRAFFIC\_SHIFT | Oui | 
| timeoutConfiguration.timeoutInMinutes | Combien de temps attendre avant de prendre l'action de temporisation. Par défaut : 1 440 minutes (24 heures). | 1 - 20 160 (14 jours) | Non | 
| timeoutConfiguration.action | Action à effectuer en cas d'expiration du délai d'expiration. | ROLLBACK (par défaut), CONTINUE | Non | 

## Constaintes
<a name="pause-hooks-constraints"></a>
+ Vous pouvez configurer un maximum de 10 crochets de pause et 10 crochets Lambda par service.
+ Les crochets de pause n'utilisent pas `hookTargetArn` ou`roleArn`. Ces champs concernent uniquement les hooks Lambda.
+ Les crochets de pause ne peuvent pas être configurés aux `PRODUCTION_TRAFFIC_SHIFT` étapes `TEST_TRAFFIC_SHIFT` or.

## Poursuite d'un déploiement suspendu
<a name="pause-hooks-continuing"></a>

Lorsqu'un déploiement est suspendu (le statut du crochet de pause est`AWAITING_ACTION`), appelez `ContinueServiceDeployment` pour indiquer `hookId` l'action que vous souhaitez effectuer.

Pour poursuivre le déploiement, procédez comme suit :

```
aws ecs continue-service-deployment \
    --hook-id ecs-pause-e7tK9G_WRJqNF_EOMjztDXfKenlJuEUVjsNStf4WLKw \
    --action CONTINUE
```

Pour annuler le déploiement :

```
aws ecs continue-service-deployment \
    --hook-id ecs-pause-e7tK9G_WRJqNF_EOMjztDXfKenlJuEUVjsNStf4WLKw \
    --action ROLLBACK
```

Pour de plus amples informations, veuillez consulter [Déploiements de services continus](continue-service-deployment.md).

## Plusieurs crochets au même stade
<a name="pause-hooks-multiple-at-same-stage"></a>

Lorsque plusieurs hooks sont configurés au même stade du cycle de vie, le déploiement reste suspendu jusqu'à ce que tous les hooks de cette étape soient poursuivis. Si un hook déclenche un rollback, l'ensemble du déploiement est annulé, quel que soit le statut des autres hooks à ce stade.

Ce comportement s'applique lorsque les hooks Lambda et les hooks pause sont configurés au même stade du cycle de vie. Le déploiement ne se poursuit que lorsque tous les hooks de cette étape se sont terminés avec succès ou ont été poursuivis.

Tous les hooks configurés au même stade du cycle de vie s'exécutent en parallèle.

## Comportement en cas d'expiration
<a name="pause-hooks-timeout"></a>

Si vous n'appelez pas `ContinueServiceDeployment` avant l'expiration du délai d'expiration, Amazon ECS exécute l'action de temporisation configurée :
+ `ROLLBACK`(par défaut) - Amazon ECS rétablit le déploiement à la version du service précédente.
+ `CONTINUE`- Amazon ECS poursuit le déploiement jusqu'à l'étape suivante du cycle de vie.

Vérifiez le `expiresAt` champ dans le `lifecycleHookDetails` tableau de la `DescribeServiceDeployments` réponse pour voir quand le délai expire.

## Suspendez les hooks avec des déploiements linéaires et Canary
<a name="pause-hooks-linear-canary"></a>

Pour les déploiements linéaires et Canary, les crochets de pause configurés sur `PRE_PRODUCTION_TRAFFIC_SHIFT` sont invoqués à chaque étape du transfert de trafic. Chaque invocation génère un appel unique`hookId`, et vous devez appeler `ContinueServiceDeployment` pour chacun d'entre eux.

Par exemple, un déploiement linéaire comportant 5 étapes de transfert du trafic et un crochet de `PRE_PRODUCTION_TRAFFIC_SHIFT` pause 5 fois, soit une fois avant chaque étape. Chaque pause nécessite un appel distinct `ContinueServiceDeployment` avec le correspondant`hookId`.

## EventBridge événements
<a name="pause-hooks-eventbridge"></a>

Amazon ECS émet des EventBridge événements de type détaillé au `ECS Hook State Change` fur et à mesure que les hooks de pause progressent tout au long de leur cycle de vie. Le tableau suivant décrit les noms des événements :


| Nom de l’événement | Description | 
| --- | --- | 
| HOOK\_AWAITING\_ACTION | Le crochet attend que tu appellesContinueServiceDeployment. | 
| HOOK\_SUCCEEDED | Le hook s'est terminé avec succès (vous avez appelé ContinueServiceDeployment avecCONTINUE). | 
| HOOK\_FAILED | Le hook a échoué (vous avez appelé ContinueServiceDeployment avecROLLBACK). | 
| HOOK\_TIMED\_OUT | Le délai imparti avant d'être appelé ContinueServiceDeployment a expiré. | 

L'exemple suivant montre un EventBridge événement émis lorsqu'un crochet de pause attend une action :

```
{
    "version": "0",
    "id": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
    "detail-type": "ECS Hook State Change",
    "source": "aws.ecs",
    "account": "123456789012",
    "time": "2024-01-15T10:00:00Z",
    "region": "us-west-2",
    "detail": {
        "eventType": "INFO",
        "eventName": "HOOK_AWAITING_ACTION",
        "hookId": "ecs-pause-e7tK9G_WRJqNF_EOMjztDXfKenlJuEUVjsNStf4WLKw",
        "hookType": "PAUSE",
        "expiresAt": "2024-01-15T12:00:00Z",
        "lifecycleStage": "POST_TEST_TRAFFIC_SHIFT",
        "clusterArn": "arn:aws:ecs:us-west-2:123456789012:cluster/my-cluster",
        "serviceArn": "arn:aws:ecs:us-west-2:123456789012:service/my-cluster/my-service",
        "serviceDeploymentArn": "arn:aws:ecs:us-west-2:123456789012:service-deployment/my-cluster/my-service/EZe5RNVLH6PPzHXINuP28",
        "updatedAt": "2024-01-15T10:00:00Z"
    }
}
```