¿Cómo soluciono el error «[Servicio de AWS] was unable to place a task because no container instance met all of its requirements» en Amazon ECS?
Quiero realizar una tarea en Amazon Elastic Container Service (Amazon ECS). Sin embargo, recibo el siguiente error: «[Servicio de AWS] was unable to place a task because no container instance met all of its requirements».
Descripción corta
Puede recibir este error debido a uno o varios de los siguientes motivos:
- No se encontró ninguna instancia de contenedor en su clúster
- El puerto que necesita la tarea ya está en uso
- No hay suficiente memoria para las tareas
- No hay suficientes unidades de CPU para la instancia de contenedor
- No hay suficientes puntos de conexión de interfaz de red elástica disponibles
- Falta un atributo obligatorio para la instancia de contenedor
Para obtener más información sobre estos problemas, consulte Service event messages.
Nota: Si no ha recibido el mensaje de error anterior, elija un artículo basándose en uno de los siguientes mensajes de error que haya recibido:
- [AWS service] was unable to place a task because no container instance met all of its requirements. The closest matching container-instance container-instance-id has insufficient CPU units available.
- [AWS service] was unable to place a task because no container instance met all of its requirements. The closest matching container-instance container-instance-id encountered error "AGENT".
Resolución
Nota: Si recibe errores al ejecutar comandos de AWS CLI, compruebe si está utilizando la versión más reciente de AWS CLI.
Para resolver el error, elija una solución basada en su caso de uso:
- Si no hay ninguna instancia de contenedor registrada en su clúster, agregue instancias de contenedor al clúster.
- Si el puerto que requiere la tarea está en uso, agregue instancias de contenedor al clúster o reduzca la cantidad de tareas deseadas.
**Nota:**Si es posible, considere la posibilidad de usar la asignación dinámica de puertos para permitir que las tareas usen cualquier puerto disponible en una instancia de contenedor. - Si la instancia de contenedor no tiene suficiente memoria para las tareas, reduzca la cantidad de memoria en la definición de la tarea. También puede iniciar más instancias de contenedor en el clúster. Para obtener más información, consulte la sección Not enough memory en Service event messages. Esta sección se encuentra en service (service-name) was unable to place a task because no container instance met all of its requirements.
- Si la instancia de contenedor no tiene suficientes unidades de CPU, ajuste la CPU que requieren las tareas o inicie más instancias de contenedor en el clúster.
Para obtener más información, consulte la sección Not enough CPU en Service event messages. Esta sección se encuentra en service (service-name) was unable to place a task because no container instance met all of its requirements. O bien, consulte How do I resolve "the closest matching container-instance container-instance-id has insufficient CPU units available" error in Amazon ECS? - Si la instancia de contenedor no tiene ningún punto de conexión de interfaz de red elástica disponible, agregue más instancias de contenedor al clúster. Para obtener más información, consulte la sección Not enough available ENI attachment points en Service event messages. Esta sección se encuentra en service (service-name) was unable to place a task because no container instance met all of its requirements. Si el problema persiste, considere la posibilidad de utilizar awsvpcTrunking para aumentar la densidad de las interfaces de red elásticas en sus instancias de Amazon Elastic Compute Cloud (Amazon EC2).
- Si a la instancia de contenedor le falta un atributo obligatorio, consulte la sección Container instance missing required attribute en Service event messages. Esta sección se encuentra en service (service-name) was unable to place a task because no container instance met all of its requirements. Para encontrar los atributos que faltan, ejecute el comando ecs-cli check-attributes:
ecs-cli check-attributes --task-def Task_Definition --container-instances Container_Instance --cluster Cluster_Name
Nota: En Task_Definition Name, introduzca el nombre de la definición de la tarea. En Container_Instance, introduzca el nombre de la instancia de contenedor. En Cluster_Name, introduzca el nombre de su clúster.
- Puede configurar un servicio Amazon ECS para que se ejecute en una subred diferente de la subred de la instancia de contenedor. En este caso, la salida del comando ecs-cli-check-attributes muestra None para los atributos que faltan, aunque la tarea falle y se produzca el error del atributo faltante. Asegúrese de que las subredes de su servicio y de la instancia de contenedor coincidan. Para ello, vuelva a crear el servicio Amazon ECS en la subred en la que existe la instancia de contenedor. Para obtener más información, consulte Task definition parameters y Amazon ECS container agent configuration.
Por ejemplo, si ejecuta el siguiente comando:
ecs-cli check-attributes --task-def task:1 --container-instances 650cf1df296749e1bce1b9e0cebb588a --cluster test-cluster
La salida es similar a la siguiente:
Container Instance Missing Attributes tes-cluster None
Para obtener más información, ejecute el comando:
ecs-cli --help
Información relacionada
Contenido relevante
- OFICIAL DE AWSActualizada hace 4 años
- OFICIAL DE AWSActualizada hace 8 meses
- OFICIAL DE AWSActualizada hace un año
- OFICIAL DE AWSActualizada hace 7 meses