更新经 Amazon ECS 优化的 AMI 上的 Amazon ECS 容器代理 - Amazon Elastic Container Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

更新经 Amazon ECS 优化的 AMI 上的 Amazon ECS 容器代理

如果您使用经 Amazon ECS 优化的 AMI,则可通过多种方式获取最新版本的 Amazon ECS 容器代理(按建议的顺序显示):

  • 终止您当前的容器实例并启动最新版本的经 Amazon ECS 优化的 Amazon Linux 2 AMI(手动执行,或者通过使用最新的 AMI 更新 Auto Scaling 启动配置来执行)。这将提供全新的容器实例,其中包含最新的经测试和验证的版本的 Amazon Linux、Docker、ecs-init 和 Amazon ECS 容器代理。有关更多信息,请参阅经 Amazon ECS 优化的 AMI

  • 使用 SSH 连接到实例,并将 ecs-init 程序包(及其依赖项)更新到最新版本。此操作提供了最新的经测试和验证的版本的 Docker 和 ecs-init(它们在 Amazon Linux 存储库中提供)以及最新版本的 Amazon ECS 容器代理。有关更多信息,请参阅更新经 Amazon ECS 优化过的 AMI 上的 ecs-init 程序包

  • 使用 UpdateContainerAgent API 操作更新容器代理(通过控制台执行,或者通过 Amazon CLI 或 Amazon 开发工具包执行)。有关更多信息,请参阅使用 UpdateContainerAgent API 操作更新 Amazon ECS 容器代理

注意

代理更新不适用于 Windows 容器实例。我们建议您启动新的容器实例来更新您的 Windows 集群中的代理版本。

更新经 Amazon ECS 优化过的 AMI 上的 ecs-init 程序包

  1. 通过 SSH 登录到容器实例。有关更多信息,请参阅使用经典控制台连接到您的容器实例

  2. 使用以下命令更新 ecs-init 包。

    sudo yum update -y ecs-init
    注意

    将立即更新 ecs-init 程序包和 Amazon ECS 容器代理。但是,更新版本的 Docker 直至 Docker 守护程序重新启动后才会加载。通过重启实例或通过在您的实例上运行以下命令来重新启动:

    • 经 Amazon ECS 优化的 Amazon ECS Amazon Linux 2 AMI:

      sudo systemctl restart docker
    • 经 Amazon ECS 优化的 Amazon ECS Amazon Linux AMI:

      sudo service docker restart && sudo start ecs

使用 UpdateContainerAgent API 操作更新 Amazon ECS 容器代理

重要

UpdateContainerAgent API 仅在经 Amazon ECS 优化的 AMI 的Linux变体上受支持,但 Amazon ECS 优化的 Amazon Linux 2(arm64)AMI 除外。对于使用经 Amazon ECS 优化的 Amazon Linux 2 (arm64) AMI 的容器实例,请更新 ecs-init 程序包更新代理。有关运行其他操作系统的容器实例,请参阅手动更新 Amazon ECS 容器代理(适用于非经 Amazon ECS 优化的 AMI)。如果您使用的是 Windows 容器实例,建议您启动新的容器实例以更新 Windows 群集中的代理版本。

UpdateContainerAgent API 过程在您请求代理更新时开始(通过控制台执行,或者通过 Amazon CLI 或 Amazon 开发工具包。Amazon ECS 将对照最新的代理版本检查您当前的代理版本,如果有可用的代理版本,将按以下流程图所示的方式进行更新。如果更新不可用(例如代理已在运行最新版本),则会返回 NoUpdateAvailableException


                        代理更新流程

上面显示的更新过程的各个阶段如下所示:

PENDING

代理更新可用,并且更新过程已开始。

STAGING

代理已开始下载代理更新。如果代理无法下载更新,或者更新的内容不正确或已损坏,代理将发送失败通知,并且更新将变为 FAILED 状态。

STAGED

代理下载已完成,且代理内容已经过验证。

UPDATING

ecs-init 服务已重新启动,并且选取了新代理版本。如果代理出于某个原因无法重新启动,更新将变为 FAILED 状态;否则,代理将向 Amazon ECS 发送更新已完成的信号。

注意

代理更新不适用于 Windows 容器实例。我们建议您启动新的容器实例来更新您的 Windows 集群中的代理版本。

New Amazon Web Services Management Console

在控制台中更新经 Amazon ECS 优化的 AMI 上的 Amazon ECS 容器代理

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

  2. 从导航栏中,选择您的外部实例将注册的区域。

  3. 在导航窗格中,选择 集群 并选择托管外部实例的集群。

  4. Cluster : name(集群:名称)页面上,选择 Infrastructure(基础设施)选项卡。

  5. Container instances(容器实例)下,选择要更新的实例,然后选择 Update agent(更新代理)。

Classic Amazon Web Services Management Console
  1. 打开位于 https://console.aws.amazon.com/ecs/ 的 Amazon ECS 控制台。

  2. Clusters 页面上,选择托管容器实例或要检查的实例的集群。

  3. Cluster : cluster_name 页面上,选择 ECS Instances

  4. 选择要更新的容器实例。

  5. Container Instance 页面上,选择 Update agent

Amazon CLI

要在经 Amazon ECS 优化的 AMI 上使用 Amazon CLI 更新 Amazon ECS 容器代理

注意

使用 UpdateContainerAgent API 操作的代理更新不适用于 Windows 容器实例。我们建议您启动新的容器实例来更新您的 Windows 集群中的代理版本。

  • 使用以下命令更新容器实例上的 Amazon ECS 容器代理:

    aws ecs update-container-agent --cluster cluster_name --container-instance container_instance_id