我该如何解决 Amazon ECS中 “调用 ExecuteCommand 运营时发生错误(TargetNotConnectedException)”的这类问题呢?

1 分钟阅读
0

当我尝试在 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

AWS 官方
AWS 官方已更新 2 年前