Global outage event
If you're experiencing issues with your AWS services, then please refer to the AWS Health Dashboard. You can find the overall status of ongoing outages, the health of AWS services, and the latest updates from AWS engineers.
为什么具有 Amazon Linux 1 AMI 的 Amazon ECS 容器实例已断开连接?
我的 Amazon Elastic Container Service (Amazon ECS) 容器实例已断开连接。
简短描述
您的 Amazon ECS 容器代理一小时可能会连接和重新连接多次。这些变更事件很正常,不需要担心。
但是,如果您的容器代理仍处于断开状态,则容器实例将不能作为 ECS 集群的一部分运行。当 agentConnected 返回 false 时,您的代理已断开连接。该问题可能是由于下列原因造成的:
- 联网问题阻止实例与 Amazon ECS 之间的通信。
- 该容器代理不具有与 Amazon ECS 终端节点通信所需要的 AWS Identity and Access Management (IAM) 权限。
- 容器实例内的主机或 Docker 服务存在问题。
要确定连接断开的原因,请完成以下步骤。
解决方法
**注意:**以下分辨率适用于经 Amazon ECS 优化的 Amazon Linux 1 AMI。有关适用于 Amazon ECS 优化的 Amazon Linux 2 AMI 的解决方案,请参阅如何对断开连接的 Amazon ECS 代理进行故障排除?
验证 Docker 服务在容器实例上运行
1. 要验证 Docker 服务在受影响的容器实例上运行,请运行以下命令:
sudo service docker status
该命令输出类似于以下内容:
docker (pid 23013) is running...
如果 Docker 服务未运行,或者如果您需要重新启动该服务,请运行以下命令:
sudo service docker restart
注意:当服务正在运行时,请勿输入此命令。首先,请确保将容器实例设置为耗尽 状态。然后,重新启动 Docker 服务,以便在另一个容器实例上安排现有任务。
该命令的输出内容必须包含以下行:
Stopping docker: [ OK ] Starting docker: [ OK ]
**注意:**要验证 Docker 服务在重启命令之后运行,请运行 sudo service docker status 命令。
2. 要启动 ECS 代理,请运行以下命令:
sudo start ecs
验证容器代理在容器实例上运行
要验证容器代理是否正在受影响容器实例上运行,请运行以下命令:
sudo status ecs
如果容器代理未在您的容器实例上运行,则运行以下命令来开启代理:
sudo start ecs
该命令输出类似于以下内容:
ecs start/running, process 23403
查看容器代理和 Docker 的日志文件
如果您的容器实例仍然断开连接,请查看容器代理和 Docker 的容器主机上的日志文件。
要为容器代理和 Docker 输出日志文件,请运行以下命令:
sudo cat /var/log/ecs/ecs-agent.log.YYYY-MM-DD-** sudo cat /var/log/docker
**注意:**要从容器实例中收集日志信息,请运行 Amazon ECS 日志收集器。
验证 IAM 实例配置文件拥有必要的权限
如果容器代理仍然断开连接,请验证与容器实例关联的 IAM 实例配置文件拥有必要的 IAM 权限。
1. 使用 SSH 连接到实例。
2. 要查看与实例相关的实例配置文件上的实例元数据,请运行以下命令:
curl http://169.254.169.254/latest/meta-data/iam/info
该命令输出类似于以下内容:
{ "Code" : "Success", "LastUpdated" : "2019-06-29T15:47:03Z", "InstanceProfileArn" : "arn:aws:iam::1122334455:instance-profile/ecsInstanceRole", "InstanceProfileId" : "AIPAJ5WF3LZVY7PLUHV72" }
4. 要验证容器代理的特定凭证错误,请运行以下命令检查容器代理日志以获取 ECS 日志列表:
cat /var/log/ecs/ecs-agent.log.YYYY-MM-DD-**
**注意:**容器代理日志每小时轮换一次,且后缀会自动更改以反映当前日期和时间。更新命令,以包含发生问题时的日期范围和日志 ID。
如果容器代理没有所需的凭证,您会在日志中收到与以下内容类似的错误:
2019-06-29T16:10:09Z [ERROR] Unable to register as a container instance with ECS: AccessDeniedException: User: arn:aws:sts::1122334455:assumed-role/ecsInstanceRole/i-0052b2e858b1891ef is not authorized to perform: ecs:RegisterContainerInstance on resource: arn:aws:ecs:us-east-1:1122334455:cluster/exampleCluster status code: 400, request id: 0b73e260-5088-4688-a425-6f35f1ef440f 2019-06-29T16:10:09Z [ERROR] Error re-registering: AccessDeniedException: User: arn:aws:sts::1122334455:assumed-role/ecsInstanceRole/i-0052b2e858b1891ef is not authorized to perform: ecs:RegisterContainerInstance on resource: arn:aws:ecs:us-east-1:1122334455:cluster/exampleCluster status code: 400, request id: 0b73e260-5088-4688-a425-6f35f1ef440f
其他帮助
如果您无法通过此解决方案确定 ECS 容器实例中存在的问题,请联系高级支持,以寻求帮助。首先,使用 Amazon ECS 日志收集器创建实例日志的存档。然后,将日志附加到支持工单上,以帮助支持工程师对问题进行故障排除。
相关信息
- 语言
- 中文 (简体)

相关内容
- 已提问 9 个月前
AWS 官方已更新 10 个月前