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 ?

Lecture de 3 minute(s)
0

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 ».

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

Pour obtenir des instructions, consultez Comment récupérer des données des journaux à partir d'Amazon 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.

Consultez l'exemple suivant 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.

Voir l’exemple suivant d’un 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");
         }

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an