Hooks relatifs au cycle de vie pour les déploiements de services 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 relatifs au cycle de vie pour les déploiements de services Amazon ECS

Lorsqu'un déploiement démarre, il passe par différentes étapes du cycle de vie. Ces étapes peuvent avoir l'état IN_PROGRESS ou être réussies. 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 le bilan de santé en 15 minutes.

  • Une API de sondage qui lance un autre processus asynchrone évaluant l'achèvement du cycle de vie du hook.

Une fois l'exécution de la fonction terminée, elle doit renvoyer un hookStatus pour que le déploiement se poursuive. Si a n'hookStatusest pas renvoyé ou si la fonction échoue, le déploiement est annulé. Les hookStatus valeurs sont les suivantes :

  • 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 exécute à nouveau 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 côté dehookStatus.

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

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

Lorsqu'un rollback se produit, Amazon ECS exécute les hooks du cycle de vie pour les étapes du cycle de vie suivantes :

  • PRODUCTION_TRAFFIC_SHIFT

  • TEST_TRAFFIC_SHIFT

Charges utiles du cycle de vie

Lorsque vous configurez des crochets de cycle de vie pour vos déploiements de services ECS, Amazon ECS invoque ces crochets à des étapes spécifiques du processus de déploiement. Chaque étape du cycle de vie fournit une charge utile JSON contenant des informations sur l'état actuel du déploiement. Ce document décrit la structure de charge utile pour chaque étape du cycle de vie.

Structure de charge utile commune

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

  • serviceArn- Le nom de ressource Amazon (ARN) du service.

  • targetServiceRevisionArn- L'ARN de la révision du service cible 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.

Charges utiles au stade du cycle de vie

SERVICE DE RÉCONCILIATION

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 charge utile 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 } }

Attentes à ce stade :

  • L'ensemble de tâches principal est à une échelle de 0 %

PRÉ_SCALE_UP

Cette étape a lieu avant que les nouvelles tâches ne soient étendues. Voici un exemple de charge utile 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": {} }

Attentes à ce stade :

  • Les tâches de révision des services écologiques sont à une échelle de 0 %

POST_SCALE_UP

Cette étape intervient une fois que les nouvelles tâches ont été étendues et qu'elles sont saines. Voici un exemple de charge utile 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": {} }

Attentes à ce stade :

  • Les tâches de révision des services écologiques sont à une échelle de 100 %

  • Les tâches liées à la révision des services écologiques sont saines

TEST_TRAFFIC_SHIFT

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

Voici un exemple de charge utile 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": {} }

Attentes à ce stade :

  • Le trafic de test est en train de passer aux tâches de révision des services écologiques.

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 charge utile 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": {} }

Attentes à ce stade :

  • 100 % du trafic de test a été affecté aux tâches de révision des services écologiques.

PRODUCTION_TRAFFIC_SHIFT

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

{ "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 } }

Attentes à ce stade :

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

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 des services écologiques.

{ "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": {} }

Attentes à ce stade :

  • 100 % du trafic de production a été consacré aux tâches de révision des services écologiques.

Catégories d'étapes du cycle de vie

Les étapes du cycle de vie se répartissent en deux catégories :

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

    • PRÉ_SCALE_UP

    • POST_SCALE_UP

    • POST-TEST_TRAFFIC_SHIFT

    • POST-PRODUCTION TRAFFIC_SHIFT

  2. Étapes d'appel 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 phases de cycle de vie

Pendant que les hooks du cycle de vie sont en cours d'exécution, l'état du déploiement s'appliquera IN_PROGRESS à toutes les étapes du cycle de vie.

Étape du cycle de vie État du déploiement
SERVICE DE RÉCONCILIATION EN_COURS
PRÉ_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