使用 ECS Exec 运行命令 - Amazon Elastic Container Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用 ECS Exec 运行命令

您可以使用 Amazon ECS Exec 收集与您的容器相关的诊断信息,并排除在容器的整个生命周期中遇到的错误。

先决条件

开始使用 ECS Exec 前,请确保您已完成以下操作:

  • 查看注意事项。有关更多信息,请参阅 注意事项

  • 为任务和服务配置 ECS Exec。有关更多信息,请参阅 配置 ECS Exec

  • 安装和配置 Amazon CLI。有关更多信息,请参阅 Get started with the Amazon CLI

  • 为 Amazon CLI 安装 Session Manager 插件。有关更多信息,请参阅安装 Amazon CLI Session Manager 插件

  • 为任务角色配置适当的权限。您必须使用具有 ECS Exec 相应权限的任务角色。有关更多信息,请参阅任务 IAM 角色

  • 验证版本要求。ECS Exec 具有版本要求,具体取决于您的任务是托管在 Amazon EC2 上还是 Amazon Fargate:

    • 如果您使用的是 Amazon EC2,必须使用 2021 年 1 月 20 日之后发布的经 Amazon ECS 优化的 AMI,代理版本为 1.50.2 或更高。有关更多信息,请参阅经 Amazon ECS 优化的 AMI

    • 如果您使用的是 Amazon Fargate,则必须使用平台版 1.4.0 或更高版本(Linux)或 1.0.0(Windows)。有关平台版本的更多信息,请参阅 Amazon Fargate 平台版本

使用控制台执行服务任务

您可以使用控制台通过 ECS Exec 运行命令。

  1. https://console.aws.amazon.com/ecs/v2 打开控制台。

  2. Clusters(集群)页面上,选择集群。

  3. 在“集群详细信息”页面,找到服务部分,然后选择服务。

    此时将显示服务详细信息页面。

  4. 在“服务详细信息”页面上,选择任务。然后,选择任务。

  5. 容器下,选择要在其中使用 ECS Exec 的容器。

  6. 要运行命令,请执行以下操作一:

    • 选择连接

      CloudShell 会话会显示您可以在哪里运行命令。

    • 选择箭头,然后选择复制 Amazon CLI 命令

      然后,您可以在本地运行命令。

预期结果

如果连接成功,则您应该会从容器中看到交互式 shell 提示。现在,您可以直接在容器环境中运行命令。要退出会话,请选择结束会话按钮。

使用控制台完成独立任务

您可以使用控制台通过 ECS Exec 运行命令。

  1. https://console.aws.amazon.com/ecs/v2 打开控制台。

  2. Clusters(集群)页面上,选择集群。

  3. 在“集群详细信息”页面上的任务部分中,选择任务。

    此时将显示任务详细信息页面。

  4. 容器下,选择要在其中使用 ECS Exec 的容器。

  5. 要运行命令,请执行以下操作一:

    • 选择连接

      CloudShell 会话会显示您可以在哪里运行命令。

    • 选择箭头,然后选择复制 Amazon CLI 命令

      然后,您可以在本地运行命令。

预期结果

如果连接成功,则您应该会从容器中看到交互式 shell 提示。现在,您可以直接在容器环境中运行命令。要退出会话,请选择结束会话按钮。

使用命令 Shell

您可以使用命令 shell 通过 ECS Exec 运行命令。

确认 ExecuteCommandAgent 正在运行后,可以使用以下命令在容器上打开交互式 shell。如果任务包含多个容器,则必须使用 --container 标记。Amazon ECS 仅支持启动交互式会话,因此您必须使用 --interactive 标记。

以下命令将对 ID 为 task-id 的任务的名为 container-name 的容器运行一个交互式 /bin/sh 命令。

task-id 是任务的 Amazon 资源名称(ARN)。

aws ecs execute-command --cluster cluster-name \ --task task-id \ --container container-name \ --interactive \ --command "/bin/sh"

预期结果

如果命令成功,则您应该会从容器中看到交互式 shell 提示。现在,您可以直接在容器环境中运行命令。要退出会话,请键入 exit 或按 Ctrl+D