¿Cómo soluciono los errores de comprobación de estado del contenedor de tareas de Amazon ECS?

Última actualización: 11/03/2022

Mi tarea de Amazon Elastic Container Service (Amazon ECS) no supera la comprobación de estado del contenedor. ¿Cómo se soluciona esto?

Descripción corta

Si recibe el siguiente error, significa que los contenedores de Amazon ECS de su tarea utilizan comprobaciones de estado que su servicio no puede aprobar:

(service AWS-Service) (task ff3e71a4-d7e5-428b-9232-2345657889) failed container health checks

Resolución

Para solucionar errores de comprobación de estado de los contenedores de Amazon ECS, pruebe los siguientes consejos:

  • Pruebe el contenedor localmente para asegurarse de que aprueba las comprobaciones de estado del contenedor antes de aprovisionarlo en Amazon ECS.
  • Confirme que el comando que está pasando al contenedor es correcto y que utiliza la sintaxis correcta para sus tareas de Amazon ECS.
  • Asegúrese de que su contenedor tenga tiempo suficiente para crear instancias.
  • Si su tarea de Amazon ECS se ejecutó durante un tiempo, consulte los registros de la aplicación y los registros de Amazon CloudWatch.

Pruebe el contenedor localmente para asegurarse de que aprueba la comprobación de estado del contenedor

Antes de aprovisionar su contenedor en Amazon ECS, asegúrese de que su contenedor pueda funcionar como se espera y de que aprueba la comprobación de estado del contenedor especificada. Puede probar su contenedor con la configuración Dockerfile HEALTHCHECK en el sitio web de Docker. Después de que su contenedor apruebe la comprobación de estado definida en Dockerfile, puede especificar la configuración de la comprobación de estado en la definición de la tarea. La especificación de la configuración de comprobación de estado permite que el agente de contenedores de Amazon ECS supervise e informe de la comprobación de estado especificada.

Nota: Amazon ECS no supervisa las comprobaciones de estado de Docker que están integradas en una imagen de contenedor y no se especifican en la definición del contenedor. Los parámetros de comprobación de estado que se especifican en una definición de contenedor invalidan cualquier comprobación de estado de Docker que exista en la imagen del contenedor.

Confirme que utiliza la sintaxis correcta para sus tareas de Amazon ECS

Asegúrese de que utiliza los comandos y la sintaxis correctos para sus tareas de Amazon ECS.

Por ejemplo, si utiliza el panel JSON de la consola de administración de AWS, AWS Command Line Interface (AWS CLI) o las API, escriba la lista de comandos entre corchetes de la siguiente manera:

["CMD-SHELL", "curl -f http://localhost/ || exit 1"]

Si utiliza la consola de administración de AWS para editar su tarea de ECS, no necesita incluir los corchetes:

"CMD-SHELL", "curl -f http://localhost/ || exit 1"

Además, compruebe que no está separando el comando de comprobación de estado con comillas dobles, por ejemplo ["CMD-SHELL", "healthcheck.sh", "||", "exit 1"]. En su lugar, use la siguiente sintaxis de comandos:

["CMD-SHELL", "healthcheck.sh || exit 1"]

Asegúrese de que su contenedor tenga tiempo suficiente para crear instancias

Si su contenedor tarda un tiempo en iniciarse, entonces su contenedor podría no aprobar la comprobación de estado del contenedor. Pruebe configurar startPeriod en el parámetro de definición de contenedor avanzada. Esto le da a su contenedor de Amazon ECS tiempo suficiente para iniciar antes de que se incluyan las comprobaciones de estado fallidas en el número máximo de reintentos.

Compruebe los registros de su aplicación y los registros de Amazon CloudWatch si la tarea se ejecutó durante un tiempo

Si su contenedor de Amazon ECS se ejecutó durante un tiempo y no supera la comprobación de estado del contenedor, consulte los registros de su aplicación. Si su tarea de Amazon ECS utiliza el controlador de registro awslogs, compruebe los registros de su aplicación en Amazon CloudWatch.

Nota: AWS Fargate es un servicio administrado. Por lo tanto, no puede acceder a la infraestructura subyacente. Para solucionar problemas, lance sus tareas de Amazon ECS en Amazon Elastic Compute Cloud (Amazon EC2). Luego, conéctese a sus instancias de Amazon EC2 mediante SSH. También puede intentar usar Amazon ECS Exec para interactuar directamente con sus contenedores de ECS.


¿Le resultó útil este artículo?


¿Necesita asistencia técnica o con la facturación?