Come posso risolvere l'errore che ricevo in AWS CodeDeploy se la mia implementazione scade mentre è in attesa di un callback di stato?

3 minuti di lettura
0

La mia implementazione di AWS CodeDeploy si esaurisce e restituisce il seguente errore: "L'implementazione è scaduta mentre era in attesa di un callback di stato. CodeDeploy prevede un callback di stato entro un'ora dal richiamo di un hook di implementazione."

Breve descrizione

Questo problema può verificarsi quando utilizzi CodeDeploy per implementare un servizio Amazon Elastic Container Service (Amazon ECS) con un test di convalida.

Se il test non restituisce la risposta riuscito o non riuscito entro 60 minuti dall'invocazione di un evento hook del ciclo di vita, CodeDeploy restituisce il seguente errore:

"L'implementazione è scaduta mentre era in attesa di un callback di stato. CodeDeploy prevede un callback di stato entro un'ora dall'invocazione di un hook di implementazione."

Nota: Il limite di timeout predefinito per il callback di stato di una funzione AWS Lambda hook del ciclo di vita è di 60 minuti.

Per risolvere l'errore, verifica che la funzione Lambda hook del ciclo di vita disponga del metodo e delle autorizzazioni AWS Identity and Access Management (IAM) richiesti.

Soluzione

Confermare la causa dell'errore esaminando i log di CloudWatch

Per istruzioni, consulta Come posso recuperare i dati di log dai file di log Amazon CloudWatch?

Verifica che la funzione Lambda hook del ciclo di vita disponga delle autorizzazioni IAM richieste

Assicurati che la funzione Lambda hook del ciclo di vita abbia un ruolo di esecuzione che include la seguente autorizzazione: PutLifecycleEventHookExecutionStatus.

Nota: L'autorizzazione PutLifecycleEventHookExecutionStatus non è inclusa per impostazione predefinita nella policy IAM CodeDeployFullAccess gestita da AWS.

Vedi il seguente esempio di dichiarazione di autorizzazione PutLifecycleEventHookExecutionStatus:

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

Verifica che la funzione Lambda hook del ciclo di vita includa il metodo richiesto per restituire una risposta di stato a CodeDeploy

Assicurati che la funzione Lambda hook del ciclo di vita includa il metodo putLifecycleEventHookExecutionStatus.

Per ulteriori informazioni, consulta la Fase 3: Crea una funzione Lambda hook del ciclo di vita nella guida dell'utente CodeDeploy.

Vedi il seguente esempio di metodo putLifecycleEventHookExecutionStatus per una funzione Lambda hook del ciclo di vita:

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 UFFICIALE
AWS UFFICIALEAggiornata 2 anni fa