Como faço para resolver o erro que recebo no AWS CodeDeploy quando minha implantação atinge o tempo limite enquanto aguarda um retorno de chamada de status?

3 minuto de leitura
0

Minha implantação do AWS CodeDeploy atinge o tempo limite e retorna o seguinte erro: “A implantação atingiu o tempo limite enquanto aguardava um retorno de chamada de status. O CodeDeploy espera um retorno de chamada de status dentro de uma hora após a invocação de um gancho de implantação.”

Breve descrição

Esse problema pode ocorrer quando você usa CodeDeploy para implantar um serviço do Amazon Elastic Container Service (Amazon ECS) com um teste de validação.

Se o teste não retornar uma resposta de Bem-sucedido ou Com falha até 60 minutos depois que um gancho de eventos do ciclo de vida é invocado, CodeDeploy retornará o seguinte erro:

“A implantação atingiu o tempo limite enquanto aguardava um retorno de chamada de status. O CodeDeploy espera um retorno de chamada de status dentro de uma hora após a invocação de um gancho de implantação.”

Observação: o tempo limite padrão para o retorno de chamada de status da função do AWS Lambda do gancho do ciclo de vida é de 60 minutos.

Para resolver o erro, verifique se a função do Lambda do gancho do ciclo de vida tem o método necessário e as permissões do AWS Identity and Access Management (IAM).

Solução

Confirme a causa do erro examinando o CloudWatch Logs

Para obter instruções, consulte Como posso recuperar dados de log do Amazon CloudWatch Logs?

Verifique se a função do Lambda do gancho do ciclo de vida tem as permissões do IAM necessárias

Verifique se a função do Lambda do gancho do ciclo de vida tem uma função de execução que inclui a seguinte permissão: PutLifecycleEventHookExecutionStatus.

Observação: a permissão PutLifecycleEventHookExecutionStatus não está incluída por padrão na política do IAM CodeDeployFullAccess gerenciada pela AWS.

Veja a seguir o exemplo de uma instrução de permissões PutLifecycleEventHookExecutionStatus:

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

Verifique se a função do Lambda do gancho do ciclo de vida inclui o método necessário para retornar uma resposta de status para CodeDeploy

Verifique se a função do Lambda do gancho do ciclo de vida inclui o método putLifecycleEventHookExecutionStatus.

Para obter mais informações, consulte a Etapa 3: Criar uma função do Lambda do gancho do ciclo de vida no Guia do usuário do CodeDeploy.

Veja a seguir o exemplo de um método putLifecycleEventHookExecutionStatus para obter uma função do Lambda do gancho do ciclo de vida:

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 OFICIAL
AWS OFICIALAtualizada há um ano