Hooks de cycle de vie pour les déploiements de service Amazon ECS - Amazon Elastic Container Service

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.

Hooks de cycle de vie pour les déploiements de service Amazon ECS

Lorsqu’un déploiement démarre, il passe par différentes étapes du cycle de vie. Ces étapes peuvent avoir l’état EN_COURS ou RÉUSSI. Vous pouvez utiliser les hooks du cycle de vie, qui sont des fonctions Lambda qu’Amazon ECS exécute en votre nom à des étapes du cycle de vie spécifiées. Les fonctions peuvent être l’une des suivantes :

  • Une API asynchrone qui valide la surveillance de l’état endéans 15 minutes.

  • Une API de consultation qui lance un autre processus asynchrone qui évalue l’achèvement du hook de cycle de vie.

Une fois l’exécution de la fonction terminée, elle doit renvoyer un hookStatus pour que le déploiement se poursuive. Si aucun hookStatus n’est renvoyé ou si la fonction échoue, le déploiement est annulé. Voici les valeurs pour hookStatus :

  • SUCCEEDED : le déploiement se poursuit jusqu’à l’étape suivante du cycle de vie

  • FAILED : le déploiement revient au dernier déploiement réussi.

  • IN_PROGRESS : Amazon ECS réexécute la fonction après un court laps de temps. Par défaut, il s’agit d’un intervalle de 30 secondes, mais cette valeur est personnalisable en renvoyant un callBackDelay avec le hookStatus.

L’exemple suivant montre comment renvoyer un hookStatus avec un délai de rappel personnalisé. Dans cet exemple, Amazon ECS réessaierait ce hook au bout de 60 secondes au lieu des 30 secondes par défaut :

{ "hookStatus": "IN_PROGRESS", "callBackDelay": 60 }

En cas de restauration, Amazon ECS exécute les hooks de cycle de vie pour les étapes du cycle de vie suivantes :

  • PRODUCTION_TRAFFIC_SHIFT

  • TEST_TRAFFIC_SHIFT

Données utiles de cycle de vie

Lorsque vous configurez des hooks de cycle de vie pour vos déploiements de service ECS, Amazon ECS invoque ces hooks à des étapes spécifiques du processus de déploiement. Chaque étape du cycle de vie fournit des données utiles JSON avec des informations sur l’état actuel du déploiement. Ce document décrit la structure les données utiles pour chaque étape du cycle de vie.

Structure de données utiles communes

Toutes les données utiles liées aux étapes du cycle de vie incluent les champs communs suivants :

  • serviceArn : l’Amazon Resource Name (ARN) du service.

  • targetServiceRevisionArn : lÂRN de la révision de service cible est en cours de déploiement.

  • testTrafficWeights- Une carte de révision des services en fonction ARNs des pourcentages de pondération du trafic de test correspondants.

  • productionTrafficWeights- Une carte de révision des services en fonction ARNs des pourcentages de pondération du trafic de production correspondants.

Données utiles relatives aux étapes de cycle de vie

RECONCILE_SERVICE

Cette étape a lieu au début du processus de déploiement lorsque le service est en cours de réconciliation. Voici un exemple de données utiles pour cette étape du cycle de vie.

{ "serviceArn": "arn:aws:ecs:us-west-2:1234567890:service/myCluster/myService", "targetServiceRevisionArn": "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/01275892", "testTrafficWeights": { "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/01275892": 100, "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/78652123": 0 }, "productionTrafficWeights": { "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/01275892": 100, "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/78652123": 0 } }

Résultats attendus à cette étape :

  • Le jeu de tâches principal est à un niveau de 0 %

PRE_SCALE_UP

Cette étape a lieu avant que les nouvelles tâches ne soient augmentée verticalement. Voici un exemple de données utiles pour cette étape du cycle de vie.

{ "serviceArn": "arn:aws:ecs:us-west-2:1234567890:service/myCluster/myService", "targetServiceRevisionArn": "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/01275892", "testTrafficWeights": {}, "productionTrafficWeights": {} }

Résultats attendus à cette étape :

  • Les tâches de révision de service verte sont à un niveau de 0 %

POST_SCALE_UP

Cette étape intervient une fois que les nouvelles tâches ont été augmentées verticalement et qu’elles sont saines. Voici un exemple de données utiles pour cette étape du cycle de vie.

{ "serviceArn": "arn:aws:ecs:us-west-2:1234567890:service/myCluster/myService", "targetServiceRevisionArn": "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/01275892", "testTrafficWeights": {}, "productionTrafficWeights": {} }

Résultats attendus à cette étape :

  • Les tâches de révision de service verte sont à un niveau de 100 %

  • Les tâches dans la révision de service verte sont saines

TEST_TRAFFIC_SHIFT

Cette étape se produit lorsque le trafic de test est transféré vers les tâches de révision de service verte.

Voici un exemple de données utiles pour cette étape du cycle de vie.

{ "serviceArn": "arn:aws:ecs:us-west-2:1234567890:service/myCluster/myService", "targetServiceRevisionArn": "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/01275892", "testTrafficWeights": { "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/01275892": 100, "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/78652123": 0 }, "productionTrafficWeights": {} }

Résultats attendus à cette étape :

  • Le trafic de test est en train de passer aux tâches de révision de service verte.

POST_TEST_TRAFFIC_SHIFT

Cette étape intervient une fois que le trafic de test a été entièrement transféré vers les nouvelles tâches.

Voici un exemple de données utiles pour cette étape du cycle de vie.

{ "serviceArn": "arn:aws:ecs:us-west-2:1234567890:service/myCluster/myService", "targetServiceRevisionArn": "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/01275892", "testTrafficWeights": {}, "productionTrafficWeights": {} }

Résultats attendus à cette étape :

  • 100 % du trafic de test a été affecté aux tâches de révision de service verte.

PRODUCTION_TRAFFIC_SHIFT

Cette étape se produit lorsque le trafic de production est transféré vers les tâches de révision de service verte.

{ "serviceArn": "arn:aws:ecs:us-west-2:1234567890:service/myCluster/myService", "targetServiceRevisionArn": "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/01275892", "testTrafficWeights": {}, "productionTrafficWeights": { "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/01275892": 100, "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/78652123": 0 } }

Résultats attendus à cette étape :

  • Le trafic de production est en train de passer à la révision de service verte.

POST_PRODUCTION_TRAFFIC_SHIFT

Cette étape intervient une fois que le trafic de production a été entièrement transféré aux tâches de révision de service verte.

{ "serviceArn": "arn:aws:ecs:us-west-2:1234567890:service/myCluster/myService", "targetServiceRevisionArn": "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/01275892", "testTrafficWeights": {}, "productionTrafficWeights": {} }

Résultats attendus à cette étape :

  • 100 % du trafic de production a été transféré vers les tâches de révision de service verte.

Catégories d’étapes du cycle de vie

Les étapes du cycle de vie entrent dans deux catégories principales :

  1. Étapes d’invocation uniques : ces étapes ne sont invoquées qu’une seule fois lors du déploiement d’un service :

    • PRE_SCALE_UP

    • POST_SCALE_UP

    • POST_TEST_TRAFFIC_SHIFT

    • POST_PRODUCTION_TRAFFIC_SHIFT

  2. Étapes d’invocation récurrentes : ces étapes peuvent être invoquées plusieurs fois au cours du déploiement d’un service, par exemple lors d’une opération de restauration :

    • TEST_TRAFFIC_SHIFT

    • PRODUCTION_TRAFFIC_SHIFT

État du déploiement pendant les hooks de cycle de vie

Pendant l’exécution des hooks de cycle de vie, le statut de déploiement sera IN_PROGRESS pour toutes les étapes du cycle de vie.

Étape du cycle de vie Statut du déploiement
RECONCILE_SERVICE EN_COURS
PRE_SCALE_UP EN_COURS
POST_SCALE_UP EN_COURS
TEST_TRAFFIC_SHIFT EN_COURS
POST_TEST_TRAFFIC_SHIFT EN_COURS
PRODUCTION_TRAFFIC_SHIFT EN_COURS
POST_PRODUCTION_TRAFFIC_SHIFT EN_COURS