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

使用 AWS Systems Manager 远程管理容器实例

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

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

  • 安装或卸载程序包。

  • 执行安全更新。

  • 清除 Docker 映像。

  • 停止或启动服务。

  • 查看系统资源。

  • 查看日志文件。

  • 执行文件操作。

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

Run Command IAM 策略

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

将 Systems Manager 策略附加到您的 ecsInstanceRole

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

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

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

  4. 选择 Permissions 选项卡。

  5. 选择附加策略。​

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

  7. 在策略列表中,选中 AmazonSSMManagedInstanceCore 旁边的复选框。使用此策略可提供使用 Systems Manager 所需的最低权限。

    有关您可以为 Systems Manager 操作提供的其他策略的信息,请参阅 AWS Systems Manager 用户指南 中的 为 Systems Manager 创建 IAM 实例配置文件

  8. 选择 Attach Policy

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

在您将 Systems Manager 策略附加到 ecsInstanceRole 之后,可以在容器实例上安装 AWS Systems Manager 代理(SSM 代理)。SSM 代理是一个 Amazon 软件,可以在 Amazon EC2 实例、本地服务器或虚拟机 (VM) 上安装和配置。SSM 代理让 Systems Manager 可以更新、管理和配置这些资源。SSM 代理处理 Run Command 请求,并配置在请求中指定的实例。使用以下过程在Amazon ECS-optimized AMI 容器实例上安装 SSM 代理。

注意

SSM 代理适用于提供了 Systems Manager 的所有区域。(有关受支持区域的列表,请参阅 AWS General ReferenceAWS Systems Manager 区域和终端节点表主题的区域栏。) 每个区域具有其区域特定的下载 URL,但以下命令使用您当前的指定 AWS 区域。有关 SSM 代理的更多信息,请参阅 AWS Systems Manager 用户指南 中的使用 SSM 代理

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

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

  2. 运行以下命令安装 SSM 代理 RPM。

    [ec2-user ~]$ sudo yum install -y amazon-ssm-agent

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

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

    #!/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

在将 Systems Manager 托管策略附加到 ecsInstanceRole 并在容器实例上安装 SSM 代理后,您可以开始使用 Run Command 将命令发送到容器实例。有关在您的实例上运行命令和 Shell 脚本并查看结果输出的信息,请参阅 AWS Systems Manager 用户指南 中的 使用 Systems Manager Run Command 运行命令Run Command 演练

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

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

  1. 将 Systems Manager 托管策略附加到 ecsInstanceRole。

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

  3. https://console.amazonaws.cn/systems-manager 处打开 Systems Manager 控制台。

  4. 在左侧导航窗格中,选择 Run Command,然后选择运行命令

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

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

    $ yum update -y
  7. 目标实例部分中,选中要运行更新命令的容器实例旁的复选框。

  8. 选择 Run 以将命令发送到指定实例。

  9. (可选)选择刷新图标以监控命令状态。

  10. (可选)在目标和输出中,选择实例 ID 旁边的按钮,然后选择查看输出