Comment puis-je vérifier que les actions du cycle de vie EC2 Auto Scaling se terminent lors de l'utilisation d'AWS CodeDeploy ?

Date de la dernière mise à jour : 31/08/2022

J'utilise AWS CodeDeploy avec les hooks de cycle de vie Auto Scaling d'Amazon Elastic Compute Cloud (Amazon EC2). Toutefois, les actions du cycle de vie ne se terminent pas et les instances EC2 ne se lancent pas.

Brève description

CodeDeploy utilise des hooks de cycle de vie Amazon EC2 Auto Scaling pour effectuer les déploiements. Les hooks de cycle de vie peuvent influer sur la séquence des états du cycle de vie des instances EC2 pour les raisons suivantes :

  • L'échec de déploiements, qui entraîne l'échec des actions de cycle de vie.
  • Plusieurs groupes de déploiements associés à un seul groupe EC2 Auto Scaling qui dépassent les limites de CodeDeploy et entraînent l'expiration de délais.
  • Des hooks de cycle de vie restants associés à des applications supprimées qui entraînent l'expiration des délais.

Résolution

Consultez l'historique des activités de mise à l'échelle de votre groupe Auto Scaling :

  • Dans le volet de navigation de la console EC2, choisissez Auto Scaling Groups (Groupes Auto Scaling) sous Auto Scaling. Dans le volet de contenu, sélectionnez votre groupe Auto Scaling. Choisissez ensuite la vue Activity History (Historique des activités).
  • Dans l'interface de la ligne de commande AWS (AWS CLI), utilisez la commande describe-scaling-activities.

Ensuite, vérifiez les problèmes suivants dans l'historique.

Échec de déploiements

L'erreur suivante indique généralement un échec du déploiement avec CodeDeploy :

Description: Launching a new EC2 instance: i-f362a82e. Status Reason: 
Instance failed to complete user's Lifecycle Action: Lifecycle Action 
with token 0fc62a4b-153b-4dba-9bf4-9f233e72a697 was abandoned: Lifecycle
 Action Completed with ABANDON Result Cause: At 2016-07-22T16:16:56Z 
an instance was started in response to a difference between desired and 
actual capacity, increasing the capacity from 2 to 3.

Vérifiez les détails de votre déploiement pour savoir pourquoi votre déploiement a échoué. Pour plus d'informations, reportez-vous à Dépannage de CodeDeploy.

Association de plusieurs groupes de déploiements à un seul groupe EC2 Auto Scaling

L'erreur suivante se produit généralement lorsque plusieurs groupes de déploiements sont associés à un même groupe EC2 Auto Scaling :

Description: Launching a new EC2 instance: i-649f40a2. Status Reason: 
Instance failed to complete user's Lifecycle Action: Lifecycle Action 
with token 95c60857-3c0a-4a67-8518-6dc18797e421 was abandoned: Heartbeat
 Timeout Cause: At 2016-07-23T05:08:35Z an instance was started 
in response to a difference between desired and actual capacity, 
increasing the capacity from 1 to 2.

Cette erreur indique une erreur d'expiration de délai due à la limite de cinq minutes dans CodeDeploy. Ce délai peut se produire lorsque plusieurs déploiements envoient des commandes à l'agent CodeDeploy en même temps.

Consolidez vos déploiements dans un seul groupe de déploiement. Veillez à supprimer les groupes de déploiements inutiles pour éviter les hooks de cycle de vie inutiles. Pour plus d'informations, voir Utilisation des groupes de déploiements dans CodeDeploy.

Hooks de cycle de vie restants provenant des applications supprimées

Vérifiez les hooks de cycle de vie actifs associés aux groupes de déploiements qui ont des applications supprimées. Ce problème peut se produire lorsqu'une application est supprimée avant que ses groupes de déploiements ne soient supprimés.

Concluez que les hooks de cycle de vie utilisant les instances EC2 d'un groupe Auto Scaling ne se lancent pas et l'erreur « Délai d'expiration d'impulsions » s'affiche. Pour comprendre le résultat lorsque vous concluez un hook de cycle de vie, vérifiez le paramètre « --lifecycle-action-result » dans l'appel d'API CompleteLifecycleAction dans CloudTrail.


Cet article vous a-t-il été utile ?


Avez-vous besoin d'aide pour une question technique ou de facturation ?