Amazon Elastic Container Service
开发人员指南 (API Version 2014-11-13)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

远程管理容器实例

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

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

  • 安装或卸载程序包

  • 执行安全更新

  • 清除 Docker 镜像

  • 停止或启动服务

  • 查看系统资源

  • 查看日志文件

  • 执行文件操作

本主题介绍了经 Amazon ECS 优化的 AMI 上 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. 对于 Filter,键入 AmazonEC2RoleforSSM 以缩小要附加的可用策略的范围。

  7. 选中 AmazonEC2RoleforSSM 策略的复选框,然后选择 Attach Policy

在经 Amazon ECS 优化的 AMI 上安装 SSM 代理

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

在现有的经 Amazon ECS 优化的 AMI 容器实例上手动安装 SSM 代理

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

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

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

    注意

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

    Copy
    #!/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 更新容器实例软件

Amazon ECS 容器实例上的 Run Command 的最常见使用案例之一是,一次性同时更新整个容器实例队列中的实例软件。

  1. AmazonEC2RoleforSSM 策略附加到您的 ecsInstanceRole

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

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

  4. 在左侧导航窗格中,选择 Commands

  5. 选择 Run a command

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

  7. Target instances 部分中,选择 Select instances 并检查要将更新命令发送到的容器实例。

  8. Commands 部分中,输入要发送到容器实例的命令。在此示例中,以下命令将更新实例软件,但您可以发送所需的任何命令。

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

  10. (可选)选择 View result 以查看您的命令的结果。

  11. (可选)从最近命令列表中选择一个命令以查看命令输出。

     Run Command 命令列表
  12. (可选)选择 Output 选项卡,然后选择 View Output。下图显示 yum update 命令的容器实例输出的代码段。

    注意

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

     Run Command 命令输出