Mi tarea de Amazon Elastic Container Service (Amazon ECS) no supera la comprobación de estado del contenedor.
Descripción corta
Si los contenedores de Amazon ECS de la tarea realizan comprobaciones de estado que tu servicio no puede superar, aparece el siguiente error:
«(service AWS-Service) (task ff3e71a4-d7e5-428b-9232-2345657889) failed container health checks».
Resolución
Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulta Solución de problemas de AWS CLI. Además, asegúrate de utilizar la versión más reciente de la AWS CLI.
Prueba localmente el contenedor para asegurarte de que supere las comprobaciones de estado del contenedor
Antes de aprovisionar el contenedor en Amazon ECS, asegúrate de que funcione según lo previsto. Prueba el contenedor con HEALTHCHECK en el sitio web de Docker Docs. Confirma que el contenedor pasa la comprobación de estado del Dockerfile. A continuación, especifique la configuración de la comprobación de estado en la definición de la tarea para permitir que el agente del contenedor de Amazon ECS supervise y notifique la comprobación de estado.
**Nota:**Amazon ECS no supervisa las comprobaciones de estado de Docker que están integradas en una imagen de contenedor y no están especificadas en la definición del contenedor. Los parámetros de comprobación de estado que se especifican en una definición de contenedor anulan las comprobaciones de estado de Docker que existen en la imagen del contenedor.
Confirmación de que utilizas la sintaxis correcta para las tareas de Amazon ECS
Confirma que el comando que pasas al contenedor sea correcto y que utilices la sintaxis correcta para tus comandos. No separes el comando de la comprobación de estado con comillas dobles, como ["CMD-SHELL", "healthcheck.sh", "||", "exit 1"]. En su lugar, utiliza la siguiente sintaxis de comandos:
["CMD-SHELL", "healthcheck.sh || exit 1"]
Deja el tiempo suficiente al contenedor para que se inicie
Si el contenedor tarda mucho en iniciarse, es posible que no pase la comprobación de estado del contenedor. Establece startPeriod en el parámetro de definición avanzada de contenedores para satisfacer tus necesidades de configuración.
Para las tareas que se están ejecutando durante mucho tiempo, comprueba los registros de la aplicación
Si el contenedor se ejecuta durante mucho tiempo y no supera la comprobación de estado del contenedor, comprueba los registros de la aplicación. Si la tarea utiliza el controlador de registros awslogs, comprueba los registros de la aplicación en Amazon CloudWatch.
Nota: AWS Fargate es un servicio administrado, por lo que no puedes acceder a la infraestructura subyacente. Para solucionar este problema, inicia las tareas de Amazon ECS en Amazon Elastic Compute Cloud (Amazon EC2). A continuación, utiliza SSH para conectarse a las instancias de Amazon EC2. También puedes usar ECS Exec para interactuar directamente con los contenedores de Amazon ECS.
Información relacionada
¿Cómo puedo ejecutar mis tareas de Amazon ECS que usan el tipo de inicio de Amazon EC2 para superar la comprobación de estado del equilibrador de carga de aplicación?