

# 使用 ECS Exec 运行命令
<a name="ecs-exec-run"></a>

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

## 先决条件
<a name="ecs-exec-run-prerequisites"></a>

开始使用 ECS Exec 前，请确保您已完成以下操作：
+ 查看注意事项。有关更多信息，请参阅 [注意事项](ecs-exec.md#ecs-exec-considerations)。
+ 为任务和服务配置 ECS Exec。有关更多信息，请参阅 [配置 ECS Exec](ecs-exec.md#ecs-exec-enabling-and-using)。
+ **安装和配置 Amazon CLI**。有关更多信息，请参阅 [Get started with the Amazon CLI](https://docs.amazonaws.cn/cli/latest/userguide/cli-chap-getting-started.html)。
+ **为 Amazon CLI 安装 Session Manager 插件**。有关更多信息，请参阅[安装 Amazon CLI Session Manager 插件](https://docs.amazonaws.cn/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html)。
+ **为任务角色配置适当的权限**。您必须使用具有 ECS Exec 相应权限的任务角色。有关更多信息，请参阅[任务 IAM 角色](https://docs.amazonaws.cn/AmazonECS/latest/developerguide/task-iam-roles.html)。
+ **验证版本要求**。ECS Exec 具有版本要求，具体取决于您的任务是托管在 Amazon EC2 上还是 Amazon Fargate：
  + 如果您使用的是 Amazon EC2，必须使用 2021 年 1 月 20 日之后发布的经 Amazon ECS 优化的 AMI，代理版本为 1.50.2 或更高。有关更多信息，请参阅[经 Amazon ECS 优化的 AMI](https://docs.amazonaws.cn/AmazonECS/latest/developerguide/ecs-optimized_AMI.html)。
  + 如果您使用的是 Amazon Fargate，则必须使用平台版本 `1.4.0` 或更高版本（Linux）或 `1.0.0`（Windows）。有关平台版本的更多信息，请参阅 [Amazon Fargate 平台版本](https://docs.amazonaws.cn/AmazonECS/latest/developerguide/platform-fargate.html)。

## 使用控制台执行服务任务
<a name="ecs-exec-run-using-console"></a>

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

1. 在 [https://console.aws.amazon.com/ecs/v2](https://console.amazonaws.cn/ecs/v2) 打开控制台。

1. 在 **Clusters**（集群）页面上，选择集群。

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

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

1. 在“服务详细信息”页面上，选择**任务**。然后，选择任务。

1. 在**容器**下，选择要在其中使用 ECS Exec 的容器。

1. 要运行命令，请执行以下操作一：
   + 选择**连接**。

     CloudShell 会话会显示您可以在哪里运行命令。
   + 选择箭头，然后选择**复制 Amazon CLI 命令**。

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

**预期结果**

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

## 使用控制台完成独立任务
<a name="ecs-exec-run-using-console-standalone-tasks"></a>

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

1. 在 [https://console.aws.amazon.com/ecs/v2](https://console.amazonaws.cn/ecs/v2) 打开控制台。

1. 在 **Clusters**（集群）页面上，选择集群。

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

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

1. 在**容器**下，选择要在其中使用 ECS Exec 的容器。

1. 要运行命令，请执行以下操作一：
   + 选择**连接**。

     CloudShell 会话会显示您可以在哪里运行命令。
   + 选择箭头，然后选择**复制 Amazon CLI 命令**。

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

**预期结果**

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

## 使用命令 Shell
<a name="ecs-exec-run-using-command-shell"></a>

您可以使用命令 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`。