当我尝试在 Amazon Elastic Container Service (Amazon ECS) 中运行 AWS Command Line Interface (AWS CLI) 的 command execute-command 时,出现以下错误:
“调用 ExecuteCommand 运营时发生错误(TargetNotConnectedException):由于内部错误,执行命令失败。稍后重试”
简短描述
由于以下原因,您可能会收到此类错误:
- Amazon ECS 任务角色没有运行 execute-command 命令所需的权限。
- 正在运行命令的 AWS Identity and Access Management (IAM) 角色或用户并没有所需的权限。
**注意:**如果在运行 AWS CLI 命令时收到错误信息,请确保您使用的是最新版本的 AWS CLI。
解决方案
查看 Amazon ECS 任务角色权限
当 Amazon ECS 任务角色没有所需的权限时,您会收到此错误提示。您可以通过使用所需权限来创建一个 IAM 策略,然后将该策略附加到 Amazon ECS 任务角色上,以便解决此类错误。
1. 创建以下 IAM 策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ssmmessages:CreateControlChannel",
"ssmmessages:CreateDataChannel",
"ssmmessages:OpenControlChannel",
"ssmmessages:OpenDataChannel"
],
"Resource": "*"
}
]
}
**注意:**请确保这些权限在 AWS Organizations 级别上不会被拒绝。
2. 将策略附加到 Amazon ECS 任务角色上。
在任务级别上宣传这些变更时,可能会出现延迟。因此,在将策略附加到任务角色后,请等待一段时间,然后尝试运行 execute-command 命令。
检查 IAM 用户或角色权限
请确保运行 execute-command 命令的 IAM 用户或角色具有以下权限:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "ecs:ExecuteCommand",
"Resource": "arn:aws:ecs:example-region:example-arn:cluster/example-cluster/*"
}
]
}
如果您仍然收到错误提示,请运行 amazon-ecs-exec-checker 脚本。此脚本允许您检查和验证您的 AWS CLI 环境和 Amazon ECS 集群或任务。该脚本还会通知您未符合要求的先决条件。
相关信息
启用和使用 ECS Exec