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
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
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 :
-
Amazon ECS génère un identifiant unique
hookIdpour le crochet de pause. -
Amazon ECS émet un EventBridge événement avec le type de détail
ECS Hook State Changeet le nom de l'événement.HOOK_AWAITING_ACTION -
Le déploiement reste suspendu jusqu'à ce que vous appeliez
ContinueServiceDeploymentavec une action deCONTINUEouROLLBACK, ou jusqu'à ce que le délai d'expiration configuré soit atteint.hookId
Vous pouvez les récupérer hookId en appelantDescribeServiceDeployments. 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
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
| 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
-
Vous pouvez configurer un maximum de 10 crochets de pause et 10 crochets Lambda par service.
-
Les crochets de pause n'utilisent pas
hookTargetArnouroleArn. Ces champs concernent uniquement les hooks Lambda. -
Les crochets de pause ne peuvent pas être configurés aux
PRODUCTION_TRAFFIC_SHIFTétapesTEST_TRAFFIC_SHIFTor.
Poursuite d'un déploiement suspendu
Lorsqu'un déploiement est suspendu (le statut du crochet de pause estAWAITING_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.
Plusieurs crochets au même stade
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
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
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 uniquehookId, 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 correspondanthookId.
EventBridge événements
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" } }