¿Cómo puedo resolver el error «ResourceInitializationError: no se pudieron validar los argumentos del registrador» en Amazon ECS?

4 minutos de lectura
0

Cuando ejecuto una tarea en Amazon Elastic Container Service (Amazon ECS), aparece el error «ResourceInitializationError: no se pudieron validar los argumentos del registrador».

Descripción breve

Cuando una tarea de Amazon ECS no puede encontrar el grupo de registro de Amazon CloudWatch que está definido en la tarea definitionAmazon, Amazon ECS devuelve el error ResourceInitialization. Si recibe el siguiente mensaje de error:

«ResourceInitializationError: no se pudieron validar los argumentos del registrador: se ha vuelto a intentar crear la secuencia 1 vez: no se pudo crear la secuencia de registro de CloudWatch: ResourceNotFoundException: El grupo de registro especificado no existe. : estado de salida 1»

Para resolver el error, cree un nuevo grupo de registro para la tarea.

Para solucionar los problemas de las tareas de Amazon ECS que no se inician, use el runbook AWSSupport-TroubleshootECSTaskFailedToStart. A continuación, consulte los pasos de solución de problemas correspondientes a su problema.

Resolución

Encuentre una tarea que no se pudo iniciar

Importante:

  • Use el runbook AWSSupport-TroubleshootECSTaskFailedToStart en la misma región de AWS en la que se encuentran los recursos del clúster de ECS.
  • Cuando use el runbook, debe usar el ID de la tarea fallida más reciente. Si la tarea fallida forma parte de un servicio de Amazon ECS, use la tarea fallida más reciente del servicio. La tarea fallida debe estar visible en ECS:DescribeTasks durante la automatización. De forma predeterminada, las tareas de ECS detenidas están visibles durante 1 hora después de entrar en el estado Detenido. El uso del identificador de tarea fallida más reciente evita que la limpieza del estado de la tarea interrumpa el análisis durante la automatización.

Para obtener instrucciones sobre cómo iniciar el runbook, consulte AWSSupport-TroubleshootECSTaskFailedToStart. Dependiendo del resultado de la automatización, use uno de los siguientes pasos manuales de solución de problemas.

Solucionar el error

Para resolver el error ResourceInitialization, revise las siguientes soluciones para crear un nuevo grupo de registro para la tarea.

Si no sabe qué grupo de registro está definido en la definición de la tarea y devuelve error, ejecute el comando siguiente:

aws ecs describe-task-definition --task-definition nginx-fargate:3 | jq -r .taskDefinition.containerDefinitions[].logConfiguration

El resultado describe el grupo de registro que debe volver a crear en CloudWatch.

Cree un grupo de registro de CloudWatch en la consola

  1. Abra la consola de CloudWatch.
  2. En la barra de navegación, elija la Región en la que se encuentra el clúster de Amazon ECS.
  3. En el panel de navegación, elija Registros y, a continuación, Grupos de registro.
  4. En la ventana Grupos de registro, seleccione Crear grupo de registro.

Cree un grupo de registro de CloudWatch mediante la AWS CLI

Cree un grupo de registro de CloudWatch con el comando create-log-group de la interfaz de la línea de comandos de AWS (AWS CLI). El siguiente comando de ejemplo crea un grupo de registro denominado mylogs:

Nota: Si recibe errores al ejecutar los comandos de AWS CLI, asegúrese de usar la versión más reciente de AWS CLI.

aws logs create-log-group --log-group-name mylogs

Use la característica de configuración automática en la consola de Amazon ECS

La opción de configuración automática usa el nombre de la familia de definiciones de tareas con ecs como prefijo para crear un grupo de registro. El siguiente ejemplo especifica una configuración de registro en la definición de la tarea:

{  "containerDefinitions": [  
    {  
      "logConfiguration": {  
        "logDriver": "awslogs",  
        "options": {  
          "awslogs-create-group": "true",  
          "awslogs-group": "awslogs-wordpress",  
          "awslogs-region": "us-west-2",  
          "awslogs-stream-prefix": "awslogs-example"  
        }  
      }  
    }  
  ]  
}

También puede crear un grupo de registro personalizado mediante los pasos siguientes:

  1. Especifique las opciones de configuración del registro.
  2. Añada la clave awslogs-create-group con el valor true. Esto creará el grupo de registros.

El siguiente ejemplo especifica una configuración de registro en la definición de la tarea con las opciones definidas:

{  "containerDefinitions": [  
    {  
      "logConfiguration": {  
        "logDriver": "awslogs",  
        "options": {  
          "awslogs-group": "example_container",  
          "awslogs-region": "eu-west-1",  
          "awslogs-create-group": "true",  
          "awslogs-stream-prefix": "example"  
        }  
      }  
    }  
  ]  
}

Nota: La política gestionada de AWS Identity and Access Management (IAM) AmazonECSTaskExecutionRolePolicy no incluye los permisos logs:CreateLogGroup. Para usar la opción awslogs-create-group, añada logs:CreateLogGroup como política de IAM en línea.