Como soluciono problemas de um atendente do Amazon ECS desconectado?
Minhas instâncias de contêiner do Amazon Elastic Container Service (Amazon ECS) estão desconectadas.
Breve descrição
É esperado que seu atendente de contêiner do Amazon ECS se desconecte e se reconecte várias vezes em uma hora como parte da operação normal. Eventos de alteração que duram apenas alguns minutos podem não indicar problemas com o atendente de contêiner ou com sua instância de contêiner.
No entanto, se o atendente de contêiner permanecer em estado desconectado por mais tempo, a instância de contêiner não poderá operar como parte do seu cluster do Amazon ECS. Esse problema pode ser causado por um dos seguintes motivos:
- Problemas de rede impedem a comunicação entre a instância e o Amazon ECS.
- O atendente de contêiner não tem as permissões necessárias do AWS Identity and Access Management (IAM) para se comunicar com os endpoints do Amazon ECS.
- Há problemas com o host ou o daemon do Docker dentro da instância de contêiner.
- Há contenção de recursos no host subjacente.
É uma prática recomendada usar a versão mais recente do atendente de contêiner do Amazon ECS.
Resolução
Observação: a resolução a seguir se aplica às AMIs do Amazon Linux 2023 otimizadas para o Amazon ECS.
É possível usar chaves SSH para se conectar às suas instâncias do Amazon EC2. Se você não tiver as chaves SSH geradas, poderá usar o Gerenciador de Sessões, um recurso do AWS Systems Manager, para se conectar à sua instância. Por padrão, o Systems Manager Agent é instalado nas AMIs do Amazon Linux 2023 e na AMI base otimizada para ECS do Amazon Linux 2023.
Verifique se o atendente de contêiner está sendo executado na instância de contêiner
Para verificar o status e a conectividade do atendente de contêiner do Amazon ECS, execute um dos seguintes comandos em sua instância de contêiner:
sudo systemctl status ecs
sudo docker ps -f name=ecs-agent
A saída especifica ativo e é semelhante à seguinte:
ecs.service - Amazon Elastic Container Service - container agent Loaded: loaded (/usr/lib/systemd/system/ecs.service; enabled; preset: disabled) Active: active (running) since Thu 2026-02-19 08:42:39 UTC; 1min 17s ago Docs: https://aws.amazon.com/documentation/ecs/ Main PID: 2578 (amazon-ecs-init) Tasks: 5 (limit: 9497) Memory: 136.5M CPU: 214ms CGroup: /system.slice/ecs.service └─2578 /usr/libexec/amazon-ecs-init start CONTAINER ID IMAGE COMMAND CREATED STATUS 8ab4e7c372d7 amazon/amazon-ecs-agent:latest "/agent" 2 minutes ago Up 2 minutes (healthy)
Se o problema for causado por um atendente desconectado, execute o seguinte comando para reiniciar o atendente ECS:
sudo systemctl restart ecs
Observação: Não há saída retornada após a execução dos comandos anteriores.
Para verificar se o atendente está em execução, execute o seguinte comando:
sudo systemctl status ecs
Verifique se o serviço do Docker está sendo executado na instância de contêiner
Para verificar se o serviço do Docker está sendo executado na instância de contêiner afetada, execute o seguinte comando:
sudo systemctl status docker
A saída especifica ativo e é semelhante à seguinte:
docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; preset: disabled) Active: active (running) since Thu 2026-02-19 08:42:37 UTC; 3min 46s ago TriggeredBy: docker.socket Docs: https://docs.docker.com Main PID: 2314 (dockerd) Tasks: 13 Memory: 485.3M CPU: 4.846s CGroup: /system.slice/docker.service └─2314 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --default-ulimit nofile=32768:65536
Se o serviço do Docker estiver inativo, execute o seguinte comando para reiniciá-lo:
sudo systemctl restart docker
Observação: Não há saída retornada após a execução dos comandos anteriores.
Para verificar se o serviço do Docker foi reiniciado, execute o seguinte comando:
sudo systemctl status docker
Revise os arquivos de log do atendente de contêiner e do Docker
Se sua instância de contêiner ainda estiver desconectada, revise os arquivos de log no host do contêiner para o atendente de contêiner e para o Docker.
Verifique os seguintes arquivos de log para saber se há palavras-chave, como “erro”, “aviso” ou “estado de transição do agente”:
- Veja os logs mais recentes do atendente de contêiner do Amazon ECS em /var/log/ecs/ecs-agent.log. É possível visualizar o log girado filtrando como /var/log/ecs/ecs-agent-log.timestamp
- Veja o log de inicialização do Amazon ECS em /var/log/ecs/ecs-init.log
- Veja os logs de execução de dados do usuário em /var/log/cloud-init.log
- Visualize os logs do Daemon do Docker com o comando sudo journalctl -u docker
Se você usa Linux, também pode analisar os códigos de saída para obter mais informações sobre o atendente de contêiner interrompido.
Para obter o código de saída, execute o seguinte comando:
docker inspect <your container ID>
Observação: Substitua seu ID de contêiner pelo ID do contêiner interrompido.
É possível usar o coletor de logs do Amazon ECS para coletar logs gerais do sistema operacional, logs do Docker e logs do atendente de contêiner do Amazon ECS.
Verifique se o perfil de instância do IAM tem as permissões necessárias
Se o agente de contêiner ainda estiver desconectado, verifique se o perfil de instância do IAM associado à instância de contêiner tem as permissões do IAM necessárias:
-
Use SSH ou o Gerenciador de Sessões para se conectar à instância.
-
Para visualizar os metadados da instância no perfil de instância associado à instância, execute o seguinte comando:
TOKEN=$(curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600") curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/iam/infoA saída é semelhante ao seguinte:
{ "Code" : "Success", "LastUpdated" : "2026-02-19T08:42:14Z", "InstanceProfileArn" : "arn:aws:iam::1122334455:instance-profile/ecsInstanceRole", "InstanceProfileId" : "AIPA4VIZXOFF55F72XIZN" } -
Verifique se o perfil do IAM contém as permissões corretas para suas instâncias de contêiner.
-
Para verificar erros de credenciais específicos, execute o seguinte comando para verificar o log do agente de contêiner:
cat /var/log/ecs/ecs-agent.log.YYYY-MM-DD-##Observação: Substitua AAAA-MM-DD-## pelo carimbo de data/hora relevante.
O log do atendente de contêiner é alternado a cada hora. O sufixo muda automaticamente para refletir a data e a hora atuais. Atualize o comando para incluir o intervalo de data e o ID de log de quando o problema ocorreu.
Verifique se sua instância de contêiner tem recursos suficientes para executar o atendente do ECS
Se suas tarefas tiverem uma alta utilização de memória ou de CPU, sua instância de contêiner pode não ter recursos suficientes para executar o atendente do ECS.
O atendente de contêiner do Amazon ECS usa a função ReadMemInfo() do Docker para consultar a quantidade de memória disponível para o sistema operacional.
Execute o comando a seguir em sua instância de contêiner para ver a memória total reconhecida pelo sistema operacional:
free -b
Exemplo de saída para uma instância t2.large executando a AMI do Amazon Linux 2023 otimizada para Amazon ECS:
total used free shared buff/cache available Mem: 8327938048 337494016 6402355200 557056 1588088832 7745118208 Swap: 0 0 0
É possível reservar memória para o atendente de contêiner do Amazon ECS e outros processos críticos do sistema em suas instâncias de contêiner. Reservar essa memória ajuda a garantir que os contêineres da sua tarefa não disputem pela mesma memória. Para obter mais informações, consulte Reserva de memória da instância de contêiner do Linux do Amazon ECS.
Verifique se a variável de ambiente ECS_CLUSTER tem o nome de cluster correto
Se o parâmetro de configuração do atendente de contêinerECS_CLUSTER do Amazon ECS tiver o nome de cluster incorreto, a instância de contêiner não poderá se juntar ao cluster. Para verificar o conteúdo do arquivo /etc/ecs/ecs.config e verificar esse parâmetro, execute o seguinte comando:
cat /etc/ecs/ecs.config
Verifique se o atendente do ECS pode se comunicar com os endpoints do ECS
Para se conectar aos endpoints do ECS, as listas de controle de acesso da rede e o grupo de segurança da instância de contêiner devem permitir conexões de saída na porta 443 (HTTPS).
Se sua instância de contêiner estiver em uma sub-rede pública, verifique se a instância tem um endereço IP público e se a tabela de rotas da sub-rede tem uma rota para um gateway da Internet.
Se sua instância de contêiner estiver em uma sub-rede privada, verifique se a tabela de rotas da sub-rede tem uma rota para um gateway NAT ou se você configurou endpoints da VPC para o Amazon ECS.
Para verificar as conexões de saída com os endpoints do ECS (ACS/TCS), execute um dos seguintes comandos em sua instância de contêiner:
sudo yum install telnet -y telnet ecs.REGION.amazonaws.com 443
ou
curl https://ecs.REGION.amazonaws.com
Observação: substitua REGION pela sua região da AWS.
Revise as seguintes práticas recomendadas:
- A menos que seu aplicativo exija um sistema operacional específico ou uma versão do Docker que não esteja disponível na AMI otimizada para Amazon ECS, use as AMIs Linux otimizadas para Amazon ECS para executar suas workloads do ECS.
- Use a versão mais recente do atendente de contêiner do Amazon ECS. A versão mais recente inclui atributos aprimorados e fornece atualizações importantes.
- Configure tarefas com limites de CPU e memória.
Informações relacionadas
Solução de problemas do Amazon ECS
Perfil do IAM da instância de contêiner do Amazon ECS
Visualização de logs de atendente de contêiner do Amazon ECS
- Tópicos
- Containers
- Idioma
- Português

This article was reviewed and updated on 2026-03-05.
Conteúdo relevante
feita há um ano