¿Cómo soluciono el error que recibo en AWS CodeDeploy cuando se agota el tiempo de espera de mi despliegue mientras espero una devolución de llamada de estado?

3 minutos de lectura
0

Mi despliegue de AWS CodeDeploy agota el tiempo de espera y muestra el siguiente error: «Se ha agotado el tiempo de espera del despliegue mientras se esperaba una devolución de llamada de estado. CodeDeploy espera recibir una devolución de llamada de estado en el plazo de una hora después de invocar un enlace de despliegue».

Descripción breve

Este problema puede producirse al utilizar CodeDeploy para desplegar un servicio de Amazon Elastic Container Service (Amazon ECS) con una prueba de validación.

Si la prueba no devuelve una respuesta correcta o incorrecta en un plazo de 60 minutos a partir de la invocación de un enlace de eventos de ciclo de vida, CodeDeploy devolverá el siguiente error:

«Se ha agotado el tiempo de espera del despliegue mientras se esperaba una devolución de llamada de estado. CodeDeploy espera recibir una devolución de llamada de estado en el plazo de una hora después de invocar un enlace de despliegue».

Nota: El límite de tiempo de espera predeterminado para la devolución de llamada de estado de una función de AWS Lambda de enlace de ciclo de vida es de 60 minutos.

Para resolver el error, compruebe que la función de Lambda de enlace de ciclo de vida tenga el método y los permisos de AWS Identity and Access Management (IAM) requeridos.

Resolución

Revise los registros de CloudWatch para confirmar la causa del error

Para obtener instrucciones, consulte ¿Cómo puedo recuperar los datos de registro de los Registros de Amazon CloudWatch?

Compruebe que la función de Lambda de enlace de ciclo de vida tenga los permisos de IAM necesarios

Asegúrese de que la función de Lambda de enlace de ciclo de vida tenga un rol de ejecución que incluya el siguiente permiso: PutLifecycleEventHookExecutionStatus.

**Nota:**El permiso PutLifecycleEventHookExecutionStatus no se incluye de forma predeterminada en la política de IAM CodeDeployFullAccess administrada por AWS.

Consulte el siguiente ejemplo de una declaración de permisos PutLifecycleEventHookExecutionStatus:

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

Compruebe que la función de Lambda de enlace de ciclo de vida incluya el método necesario para devolver una respuesta de estado a CodeDeploy

Asegúrese de que la función de Lambda de enlace de ciclo de vida incluya el método putLifecycleEventHookExecutionStatus.

Para obtener más información, consulte el Paso 3: Cree una función de Lambda de enlace de ciclo de vida en la Guía del usuario de CodeDeploy.

Consulte el siguiente ejemplo de un método putLifecycleEventHookExecutionStatus para una función de Lambda de enlace de 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");
         }

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año