Como resolvo o erro "[AWS service] was unable to place a task because no container instance met all of its requirements" no Amazon ECS?
Quero colocar uma tarefa no Amazon Elastic Container Service (Amazon ECS). No entanto, recebo o seguinte erro: "[AWS service] was unable to place a task because no container instance met all of its requirements."
Breve descrição
Você pode receber esse erro devido a um ou mais dos seguintes motivos:
- Nenhuma instância de contêiner foi encontrada em seu cluster
- A porta necessária para a tarefa já está em uso
- Memória insuficiente para suas tarefas
- Unidades de CPU insuficientes para sua instância de contêiner
- Pontos de conexão de interface de rede elástica disponíveis insuficientes
- Falta um atributo obrigatório para sua instância de contêiner
Para obter mais informações sobre esses problemas, consulte Service event messages.
Observação: se você não recebeu a mensagem de erro anterior, escolha um artigo com base em uma das seguintes mensagens de erro que você recebeu:
- [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".
Resolução
Observação: se você receber erros ao executar comandos da AWS CLI, certifique-se de estar utilizando a versão mais recente da AWS CLI.
Para resolver o erro, escolha uma resolução com base no seu caso de uso:
- Se não houver instâncias de contêiner registradas em seu cluster, adicione instâncias de contêiner ao seu cluster.
- Se a porta exigida pela tarefa estiver em uso, adicione instâncias de contêiner ao seu cluster ou reduza o número de tarefas desejadas.
Observação: se possível, considere usar o mapeamento dinâmico de portas para permitir que suas tarefas usem qualquer porta disponível em uma instância de contêiner. - Se a instância do contêiner não tiver memória suficiente para suas tarefas, reduza a quantidade de memória na definição da tarefa. Ou inicie mais instâncias de contêiner em seu cluster. Para obter mais informações, consulte a seção Not enough memory em Service event messages. Esta seção está localizada em service (service-name) was unable to place a task because no container instance met all of its requirements.
- Se a instância de contêiner não tiver unidades de CPU suficientes, ajuste a CPU exigida pelas tarefas ou inicie mais instâncias de contêiner em seu cluster.
Para obter mais informações, consulte a seção Not enough CPU em Service event messages. Esta seção está localizada em service (service-name) was unable to place a task because no container instance met all of its requirements. Ou consulte How do I resolve "the closest matching container-instance container-instance-id has insufficient CPU units available" error in Amazon ECS? - Se a instância de contêiner não tiver nenhum ponto de conexão de interface de rede elástica disponível, adicione mais instâncias de contêiner ao seu cluster. Para obter mais informações, consulte a seção Not enough available ENI attachment points em Service event messages. Esta seção está localizada em service (service-name) was unable to place a task because no container instance met all of its requirements. Se o problema persistir, considere usar awsvpcTrunking para aumentar a densidade da interface de rede elástica em suas instâncias do Amazon Elastic Compute Cloud (Amazon EC2).
- Se a instância do contêiner não tiver um atributo obrigatório, consulte a seção Container instance missing required attribute em Service event messages. Esta seção está localizada em service (service-name) was unable to place a task because no container instance met all of its requirements. Para encontrar os atributos ausentes, execute o comando ecs-cli check-attributes command:
ecs-cli check-attributes --task-def Task_Definition --container-instances Container_Instance --cluster Cluster_Name
Observação: em Task_Definition Name, insira o nome da sua definição de tarefa. Em Container_Instance, insira o nome da sua instância de contêiner. Em Cluster_Name, insira o nome do seu cluster.
- Você pode configurar um serviço do Amazon ECS para ser executado em uma sub-rede diferente da sub-rede da instância do contêiner. Nesse caso, a saída do comando ecs-cli-check-attributes mostra None para atributos ausentes, mesmo que a tarefa falhe com o erro de atributo ausente. Certifique-se de que as sub-redes do seu serviço e da instância do contêiner correspondam. Para fazer isso, recrie o serviço Amazon ECS na sub-rede em que a instância do contêiner existe. Para obter mais informações, consulte Task definition parameters e Amazon ECS container agent configuration.
Por exemplo, se você executar o seguinte comando:
ecs-cli check-attributes --task-def task:1 --container-instances 650cf1df296749e1bce1b9e0cebb588a --cluster test-cluster
A saída é semelhante a:
Container Instance Missing Attributes tes-cluster None
Para obter mais informações, execute o comando:
ecs-cli --help
Informações relacionadas
Conteúdo relevante
- AWS OFICIALAtualizada há 10 meses
- AWS OFICIALAtualizada há 7 meses
- AWS OFICIALAtualizada há 6 meses
- AWS OFICIALAtualizada há 2 anos