Comment puis-je résoudre l'erreur que je reçois dans AWS CodeDeploy lorsque mon déploiement s’interrompt en attendant un rappel d'état ?

Dernière mise à jour : 09/02/2022

Mon déploiement AWS CodeDeploy s’interrompt et renvoie l'erreur suivante : « Le déploiement a été interrompu en attendant un rappel d'état. CodeDeploy attend un rappel d'état dans l'heure suivante à l'appel d'un hook de déploiement ». Comment résoudre ce problème ?

Brève description

Ce problème peut se produire lorsque vous utilisez CodeDeploy pour déployer un service Amazon Elastic Container Service (Amazon ECS) avec un test de validation.

Si le test ne renvoie pas une réponse Réussi ou Échoué dans les 60 minutes suivant l'appel d'un hook d'événement de cycle de vie, CodeDeploy renvoie l'erreur suivante :

« Le déploiement a été interrompu en attendant un rappel d'état. CodeDeploy attend un rappel d'état dans l'heure suivante à l'appel d'un hook de déploiement ».

Remarque : Le délai d'expiration limite par défaut pour le rappel d'état d'une fonction AWS Lambda hook de cycle de vie est de 60 minutes.

Pour résoudre l'erreur, vérifiez que la fonction Lambda hook de cycle de vie dispose de la méthode et des autorisations AWS Identity and Access Management (IAM) requises.

Résolution

Confirmer la cause de l'erreur en consultant vos CloudWatch Logs

Vérifiez que la fonction Lambda hook de cycle de vie dispose des autorisations IAM requises

Assurez-vous que la fonction Lambda hook de cycle de vie dispose d’un rôle d'exécution qui inclut l'autorisation suivante : PutLifecycleEventHookExecutionStatus.

Remarque : L'autorisation PutLifecycleEventHookExecutionStatus n'est pas incluse par défaut dans la politique IAM CodeDeployFullAccess gérée par AWS.

Exemple d'instruction d'autorisations PutLifecycleEventHookExecutionStatus

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "codedeploy:PutLifecycleEventHookExecutionStatus",
            "Resource": "*"
        }
    ]
}

Vérifiez que la fonction Lambda hook de cycle de vie inclut la méthode requise pour renvoyer une réponse d'état à CodeDeploy

Assurez-vous que la fonction Lambda hook de cycle de vie inclut la méthode putLifecycleEventHookExecutionStatus.

Pour plus d'informations, consultez Étape 3 : créer une fonction Lambda hook de cycle de vie dans le Guide de l'utilisateur CodeDeploy.

Exemple de méthode Example putLifecycleEventHookExecutionStatus pour une fonction Lambda hook de cycle de vie

codedeploy.putLifecycleEventHookExecutionStatus(params, function(err, data) {
     if (err) {
          // Validation failed.
          console.log('AfterAllowTestTraffic validation tests failed');
          console.log(err, err.stack);
          callback("CodeDeploy Status update failed");
     } else {
          // Validation succeeded.
          console.log("AfterAllowTestTraffic validation tests succeeded");callback(null, "AfterAllowTestTraffic validation tests succeeded");
         }

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


Besoin d'aide pour une question technique ou de facturation ?