Amazon Elastic Container Service
开发人员指南 (API 版本 2014-11-13)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

远程管理容器实例

您可以使用 Amazon EC2 Run Command 功能安全地远程管理 Amazon ECS 容器实例的配置。Run Command 提供了一种无需在本地登录实例即可执行常见管理任务的简单方法。您可以通过同时对多个容器实例执行命令来管理集群中的配置更改。Run Command 将报告每个命令的状态和结果。

下面是您可使用 Run Command 执行的任务类型的一些示例:

  • 安装或卸载程序包。

  • 执行安全更新。

  • 清除 Docker 映像。

  • 停止或启动服务。

  • 查看系统资源。

  • 查看日志文件。

  • 执行文件操作。

本主题介绍了Amazon ECS-optimized AMI 的 Linux 变体上 Run Command 的基本安装和几个简单的使用案例,但这些内容并不详尽。有关 Run Command 的更多信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例) 中的远程管理 Amazon EC2 实例

Run Command IAM 策略

您必须先将允许访问 Amazon EC2 Systems Manager (SSM) API 的 IAM 策略附加到 ecsInstanceRole,然后才能利用 Run Command 将命令发送到您的容器实例。以下过程介绍如何将 AmazonEC2RoleforSSM 托管的策略附加到您的容器实例角色,以便通过此角色启动的实例可使用 Run Command。

AmazonEC2RoleforSSM 策略附加到您的 ecsInstanceRole

  1. 通过以下网址打开 IAM 控制台:https://console.amazonaws.cn/iam/

  2. 在导航窗格中,选择 Roles

  3. 选择 ecsInstanceRole。如果角色不存在,请按照 Amazon ECS 容器实例 IAM 角色中的过程操作来创建角色。

  4. 选择 Permissions

  5. Managed Policies 部分中,选择 Attach Policy

  6. 要缩小要附加的可用策略的范围,请为筛选条件键入 AmazonEC2RoleforSSM

  7. 选中 AmazonEC2RoleforSSM 策略的复选框,然后选择附加策略

在Amazon ECS-Optimized AMI 上安装 SSM 代理

在将 AmazonEC2RoleforSSM 策略附加到您的 ecsInstanceRole 后,可以在容器实例上安装 SSM 代理。SSM 代理处理 Run Command 请求并配置在该请求中指定的实例。使用以下过程在Amazon ECS-optimized AMI 容器实例上安装 SSM 代理。

在现有的Amazon ECS-optimized AMI 容器实例上手动安装 SSM 代理

  1. 连接到您的容器实例。

  2. 安装 SSM 代理 RPM。SSM 代理适用于提供了 Amazon ECS 的所有区域。每个区域均具有自己的区域特定的下载 URL。以下示例命令适用于 Amazon ECS 支持的所有区域。通过替换容器实例的区域来避免 RPM 下载的跨区域数据传输费用。

    [ec2-user ~]$ sudo yum install -y https://amazon-ssm-us-east-1.s3.amazonaws.com/latest/linux_amd64/amazon-ssm-agent.rpm

在启动新实例时使用 Amazon EC2 用户数据安装 SSM 代理

  • 通过执行启动 Amazon ECS 容器实例中的过程(但在步骤 6.g 中,将以下用户数据脚本复制并粘贴到 User data 字段中)启动一个或多个容器实例。您也可以将此用户数据脚本中的命令添加到执行其他任务(如设置实例要注册到的集群的名称)所需的其他现有脚本。

    注意

    以下用户数据脚本将安装 jq JSON 分析器并使用该分析器确定容器实例的区域。之后,此数据脚本将下载并安装 SSM 代理。

    #!/bin/bash # Install JQ JSON parser yum install -y jq # Get the current region from the instance metadata region=$(curl -s http://169.254.169.254/latest/dynamic/instance-identity/document | jq -r .region) # Install the SSM agent RPM yum install -y https://amazon-ssm-$region.s3.amazonaws.com/latest/linux_amd64/amazon-ssm-agent.rpm

使用 Run Command

在将 AmazonEC2RoleforSSM 策略附加到 ecsInstanceRole 并在容器实例上安装 SSM 代理后,您可以开始使用 Run Command 将命令发送到容器实例。Amazon EC2 用户指南(适用于 Linux 实例) 中的以下主题说明如何在实例上运行命令和外壳脚本并查看结果输出:

有关 Run Command 的更多信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例) 中的远程管理 Amazon EC2 实例

示例:使用 Run Command 更新容器实例软件

Run Command 的常用案例是,一次性更新整个容器实例队列中的实例软件。

  1. 将 AmazonEC2RoleforSSM 策略附加到您的 ecsInstanceRole。

  2. 在容器实例上安装 SSM 代理。有关更多信息,请参阅 在Amazon ECS-Optimized AMI 上安装 SSM 代理

  3. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

  4. 在左侧导航窗格中,依次选择命令运行命令

  5. 对于 Command document,选择 AWS-RunShellScript

  6. Target instances (目标实例) 部分中,选择选择实例并检查要将更新命令发送到的容器实例。

  7. Commands 部分中,输入要发送到容器实例的命令。在此示例中,以下命令将更新实例软件:

    $ yum update -y
  8. 选择 Run 以将命令发送到指定实例。

  9. (可选)选择查看结果

  10. (可选)要查看命令输出,请从最近命令列表中选择一个命令。

    
                        Run Command 命令列表
  11. (可选)依次选择输出查看输出。下图显示 yum update 命令的容器实例输出的代码段。

    注意

    除非您将命令配置为将输出保存到 Amazon S3 存储桶,否则命令输出将在 2500 个字符处被截断。

    
                        Run Command 命令输出