当我尝试在 Amazon Elastic Container Service (Amazon ECS) 中运行 AWS 命令行界面(AWS CLI)命令 execute-command 时,出现以下错误: "An error occurred (TargetNotConnectedException) when calling the ExecuteCommand operation: The execute command failed due to an internal error.Try again later".
简短描述
遇到这个错误,可能是由于以下原因:
- Amazon ECS 任务角色没有运行 execute-command 命令所需的权限。
- 运行命令的 AWS Identity and Access Management (IAM) 角色或用户没有所需的权限。
**注意:**如果在运行 AWS CLI 命令时收到错误,请参阅 Troubleshoot AWS CLI errors。此外,确保您使用的是最新的 AWS CLI 版本。
解决方法
检查 Amazon ECS 任务角色权限
当 Amazon ECS 任务角色没有所需权限时,就会出现此错误。要解决此错误,请创建拥有所需权限的 IAM 策略,然后将该策略附加到 Amazon ECS 任务角色。
- 创建以下 IAM 策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ssmmessages:CreateControlChannel",
"ssmmessages:CreateDataChannel",
"ssmmessages:OpenControlChannel",
"ssmmessages:OpenDataChannel"
],
"Resource": "*"
}
]
}
**注意:**确保在 AWS Organizations 级别上不会拒绝这些权限。
- 将策略附加到 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/*"
}
]
}
如果您仍然遇到错误,请从 GitHub 网站上运行 amazon-ecs-exec-checker 脚本。此脚本允许您检查和验证您的 AWS CLI 环境以及 Amazon ECS 集群或任务。该脚本还会通知您未满足的先决条件。
相关信息
使用 ECS Exec