跳至内容

如何解决 Amazon ECS 中的"An error occurred (TargetNotConnectedException) when calling the ExecuteCommand operation"错误?

1 分钟阅读
0

我尝试在 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"错误消息。

简短描述

由于以下原因,您会收到"ExecuteCommand"错误消息:

解决方法

**注意:**如果您在运行 AWS CLI 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI

更新 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 用户或角色权限

要查看您登录所使用的 IAM 用户 ID 和角色,请运行以下命令:

 aws sts get-caller-identity

运行 execute-command 命令的 IAM 用户或角色必须拥有以下权限:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "ecs:ExecuteCommand",
      "Resource": "arn:aws:ecs:example-region:example-arn:cluster/example-cluster/*"
    }
  ]
}

为该用户或角色附加新策略更新现有策略,以包含上述权限。

检查您是否在任务定义中将 pidMode 设置为任务

每个进程 ID (PID) 命名空间只能有一个 ECS Exec 会话。如果您在任务中共享 PID 命名空间,则只能在一个容器中启动 ECS Exec 会话。

检查您是否在任务定义中将 readonlyRootFilesystem 设置为 true

要创建所需的目录和文件,SSM Agent 需要一个可写入的容器文件系统。您无法通过 readonlyRootFilesystem 任务定义参数或任何其他方法将根文件系统设置为只读。

如果您在更新任务定义后仍收到错误,请从 GitHub 网站运行 amazon-ecs-exec-checkeramazon-ecs-exec-checker 脚本会验证您的 AWS CLI 环境以及 Amazon ECS 集群或任务。如果您未满足某个先决条件,该脚本也会向您发出通知。

相关信息

使用 ECS Exec

AWS 官方已更新 6 个月前