¿Por qué los registros de contenedores de Amazon ECS no se entregan a Amazon CloudWatch Logs?

Última actualización: 09/03/2022

No puedo encontrar los registros de contenedores de mi tarea de Amazon Elastic Container Service (Amazon ECS) en Amazon CloudWatch Logs.

Descripción corta

Los registros de contenedores de Amazon ECS no se entregan a CloudWatch Logs debido a uno o más de los siguientes motivos:

  • El controlador de registro awslogs no está configurado correctamente en las definiciones de tareas de Amazon ECS.
  • El rol de AWS Identity and Access Management (IAM) no tiene los permisos requeridos.
  • Hay problemas con la configuración de red.
  • El nivel de registro del contenedor no está configurado correctamente.

Resolución

El controlador de registro awslogs no está configurado correctamente

  • Para enviar la información de registro del contenedor a CloudWatch Logs, debe configurar los contenedores en sus tareas correctamente. Asegúrese de haber configurado el parámetro logConfiguration correctamente cuando defina los parámetros del contenedor. Si la definición de tarea de Amazon ECS implica varios contenedores, debe configurar este parámetro para cada contenedor.
  • Asegúrese de haber agregado el controlador de registro awslogs al parámetro logConfiguration en la definición de la tarea.
  • Para el tipo de lanzamiento de Amazon Elastic Compute Cloud (Amazon EC2), realice estas comprobaciones adicionales:
    • Asegúrese de que la instancia de contenedor de Amazon ECS incluya al menos la versión 1.9.0 del agente de contenedor. Para obtener información sobre cómo comprobar la versión del agente y actualizar a la última versión, consulte Actualización del agente de contenedor de Amazon ECS.
    • Si no utiliza la AMI optimizada para Amazon ECS para sus instancias de contenedor, asegúrese de que el controlador de registro awslogs esté especificado en la instancia de contenedor cuando inicie el agente con la siguiente variable de entorno. Para obtener más información, consulte Instalación del agente de contenedor de Amazon ECS.
ECS_AVAILABLE_LOGGING_DRIVERS='["json-file","awslogs"]'

El rol de IAM no tiene los permisos requeridos

  • Asegúrese de que el rol de IAM de su instancia de contenedor de Amazon ECS tenga los permisos logs:CreateLogStream y logs:PutLogEvents.
  • Para el tipo de lanzamiento de Fargate, utilice el rol de IAM de ejecución de tareas de Amazon ECS con los permisos logs:CreateLogStream y logs:PutLogEvents. Para obtener más información, consulte Rol de IAM de ejecución de tareas de Amazon ECS.
  • Para el tipo de lanzamiento de Amazon EC2, compruebe lo siguiente:
    • Si no utiliza el rol de IAM de ejecución de tareas de Amazon ECS en la definición de tarea, asegúrese de que los permisos logs:CreateLogStream y logs:PutLogEvents se concedan en el rol de IAM utilizado por la instancia de contenedor.
    • Si utiliza el rol de IAM de ejecución de tareas de Amazon ECS, asegúrese de que el valor del parámetro del agente de contenedor ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE esté establecido en true (verdadero).
      Nota: Cuando utiliza la AMI optimizada para Amazon ECS con la versión 1.16.0 -1 o posterior del paquete ecs-init, el valor predeterminado de este parámetro es true. En Windows, el valor predeterminado de este parámetro es false. Para obtener más información, consulte Configuración del agente de contenedor de Amazon ECS.

Hay problemas con la configuración de la red

Si su Amazon Virtual Private Cloud (Amazon VPC) no tiene una puerta de enlace de Internet y las tareas utilizan el controlador de registro awslogs para enviar información de registro a CloudWatch Logs, asegúrese de haber creado un punto de conexión de Amazon VPC de interfaz para CloudWatch Logs. Para más información, consulte Utilizar CloudWatch Logs con puntos de conexión de VPC de interfaz.

El nivel de registro del contenedor no está configurado correctamente

El controlador de registro awslogs simplemente transfiere los registros del contenedor que son las transmisiones de E/S STDOUT y STDERR de Docker a CloudWatch Logs. Por lo tanto, compruebe que la aplicación envía los registros a las transmisiones de E/S STDOUT y STDERR. Asegúrese de establecer el nivel de registro correcto para su aplicación durante la creación del contenedor. Según la aplicación, puede establecer el nivel de registro a través de una variable de entorno o un archivo de configuración.