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 crochets de pause interrompent le déploiement d'un service Amazon ECS à un stade de cycle de vie spécifique et attendent que vous appeliez ContinueServiceDeployment avant de poursuivre le déploiement. Utilisez les 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 une étape du cycle de vie pour laquelle 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 lehookIdet une action deCONTINUEouROLLBACK, ou jusqu'à ce que le délai configuré soit atteint.
Vous pouvez le 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 interrompt le déploiement une fois le changement 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 crochets de pause. |
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 faut-il attendre avant d'effectuer l'action de temporisation. Par défaut : 1 440 minutes (24 heures). | 1 à 20 160 (14 jours) | Non |
timeoutConfiguration.action |
L'action à effectuer si le délai expire. | ROLLBACK (par défaut), CONTINUE |
Non |
Contraintes
-
Vous pouvez configurer un maximum de 10 crochets de pause et 10 crochets Lambda par service.
-
Les crochets 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_SHIFTou.
Poursuivre un déploiement suspendu
Lorsqu'un déploiement est suspendu (l'état du crochet de pause estAWAITING_ACTION), appelez ContinueServiceDeployment avec le hookId et l'action que vous souhaitez effectuer.
Pour poursuivre le déploiement :
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 à ce stade 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 à ce stade 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, Amazon ECS exécute l'action de temporisation configurée :
-
ROLLBACK(par défaut) - Amazon ECS rétablit le déploiement à la révision de service précédente. -
CONTINUE- Amazon ECS poursuit le déploiement jusqu'à la prochaine étape 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 canariens
Pour les déploiements linéaires et Canary, les crochets de pause configurés à PRE_PRODUCTION_TRAFFIC_SHIFT sont invoqués à chaque étape du changement de trafic. Chaque appel génère un numéro uniquehookId, et vous devez appeler ContinueServiceDeployment pour chacun d'entre eux.
Par exemple, un déploiement linéaire comportant 5 étapes de changement de trafic et un crochet de pause PRE_PRODUCTION_TRAFFIC_SHIFT pendant 5 pauses, 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 avec le type de détail au ECS Hook State Change fur et à mesure que les crochets de pause progressent dans leur cycle de vie. Le tableau suivant décrit les noms des événements :
| Nom de l’événement | Description |
|---|---|
HOOK_AWAITING_ACTION |
Le hook 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 hook a expiré avant d'être ContinueServiceDeployment appelé. |
L'exemple suivant montre un EventBridge événement émis lorsqu'un hook 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" } }