

# 更新外部实例上的 AWS Systems Manager 代理和 Amazon ECS 容器代理
<a name="ecs-anywhere-updates"></a>

运行 Amazon ECS 工作负载时，您的本地部署服务器或 VM 必须同时运行 AWS Systems Manager Agent（SSM Agent）和 Amazon ECS 容器代理。AWS 在添加或更新任何功能时发布这些代理的新版本。如果您的外部实例正在使用任一代理的早期版本，则可以使用以下过程更新。

## 更新外部实例上的 SSM Agent
<a name="ecs-anywhere-updates-ssmagent"></a>

AWS Systems Manager 建议您自动完成更新实例上的 SSM Agent 的过程。它们提供了多种自动更新的方法。有关更多信息，请参阅 *AWS Systems Manager 用户指南*中的[自动更新 SSM Agent](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent-automatic-updates.html)。

## 更新外部实例上的 Amazon ECS 代理
<a name="ecs-anywhere-updates-ecsagent"></a>

在您的外部实例上，Amazon ECS 容器代理将通过升级 `ecs-init` 程序包更新。更新 Amazon ECS 代理不会中断正在运行的任务或服务。Amazon ECS在每个区域的 Amazon S3 存储桶中提供 `ecs-init` 程序包和签名文件。从 `ecs-init`版本 `1.52.1-1` 开始，Amazon ECS 提供单独的 `ecs-init` 程序包，具体取决于您的外部实例使用的操作系统和系统体系结构。

可以使用下表确定 `ecs-init` 程序包，您应该根据外部实例使用的操作系统和系统体系结构下载该程序包。

**注意**  
您可以使用以下命令确定外部实例使用的操作系统和系统体系结构。  

```
cat /etc/os-release
uname -m
```


| 操作系统（体系结构） | ecs-init 程序包 | 
| --- | --- | 
|  CentOS 7 (x86\$164) CentOS 8 (x86\$164) CentOS Stream 9 (x86\$164) SUSE Enterprise Server 15 (x86\$164) RHEL 7 (x86\$164) RHEL 8 (x86\$164)  |  `amazon-ecs-init-latest.x86_64.rpm`  | 
|  CentOS 7 (aarch64) CentOS 8 (aarch64) CentOS Stream 9 (aarch64) RHEL 7 (aarch64)  |  `amazon-ecs-init-latest.aarch64.rpm`  | 
|  Debian 9 (x86\$164) Debian 10 (x86\$164) Debian 11 (x86\$164) Debian 12 (x86\$164) Ubuntu 18 (x86\$164) Ubuntu 20 (x86\$164) Ubuntu 22 (x86\$164) Ubuntu 24 (x86\$164)  |  `amazon-ecs-init-latest.amd64.deb`  | 
|  Debian 9 (aarch64) Debian 10 (aarch64) Debian 11 (aarch64) Debian 12 (aarch64) Ubuntu 18 (aarch64) Ubuntu 20 (aarch64) Ubuntu 22 (aarch64) Ubuntu 24 (aarch64)  |  `amazon-ecs-init-latest.arm64.deb`  | 

请按照以下步骤更新 Amazon ECS 代理。

**要更新 Amazon ECS 代理**

1. 确认您正在运行的 Amazon ECS 代理版本。

   ```
   curl -s 127.0.0.1:51678/v1/metadata | python3 -mjson.tool
   ```

1. 下载适用于您的操作系统和系统体系结构的`ecs-init` 程序包。Amazon ECS在每个区域的 Amazon S3 存储桶中提供 `ecs-init` 程序包文件。确保将命令中的*<region>*标识符替换为地理位置最接近的区域名称（例如，`us-west-2`）。

   **amazon-ecs-init-latest.x86\$164.rpm**

   ```
   curl -o amazon-ecs-init.rpm https://s3.<region>.amazonaws.com/amazon-ecs-agent-<region>/amazon-ecs-init-latest.x86_64.rpm
   ```

   **amazon-ecs-init-latest.aarch64.rpm**

   ```
   curl -o amazon-ecs-init.rpm https://s3.<region>.amazonaws.com/amazon-ecs-agent-<region>/amazon-ecs-init-latest.aarch64.rpm
   ```

   **amazon-ecs-init-latest.amd64.deb**

   ```
   curl -o amazon-ecs-init.deb https://s3.<region>.amazonaws.com/amazon-ecs-agent-<region>/amazon-ecs-init-latest.amd64.deb
   ```

   **amazon-ecs-init-latest.arm64.deb**

   ```
   curl -o amazon-ecs-init.deb https://s3.<region>.amazonaws.com/amazon-ecs-agent-<region>/amazon-ecs-init-latest.arm64.deb
   ```

1. （可选）用 PGP 签名验证 `ecs-init` 程序包文件。

   1. 下载并安装 GnuPG。有关 GnuPG 的更多信息，请参阅 [GnuPG 网站](https://www.gnupg.org)。对于 Linux 系统，使用您的 Linux 风格的程序包管理器安装 `gpg`。

   1. 检索 Amazon ECS PGP 公钥。

      ```
      gpg --keyserver hkp://keys.gnupg.net:80 --recv BCE9D9A42D51784F
      ```

   1. 下载 `ecs-init` 程序包签名文件。签名是存储在扩展名为 `.asc` 的文件中的 ASCII 分离 PGP 签名。Amazon ECS在每个区域的 Amazon S3 存储桶中提供签名文件。确保将命令中的*<region>*标识符替换为地理位置最接近的区域名称（例如，`us-west-2`）。

      **amazon-ecs-init-latest.x86\$164.rpm**

      ```
      curl -o amazon-ecs-init.rpm.asc https://s3.<region>.amazonaws.com/amazon-ecs-agent-<region>/amazon-ecs-init-latest.x86_64.rpm.asc
      ```

      **amazon-ecs-init-latest.aarch64.rpm**

      ```
      curl -o amazon-ecs-init.rpm.asc https://s3.<region>.amazonaws.com/amazon-ecs-agent-<region>/amazon-ecs-init-latest.aarch64.rpm.asc
      ```

      **amazon-ecs-init-latest.amd64.deb**

      ```
      curl -o amazon-ecs-init.deb.asc https://s3.<region>.amazonaws.com/amazon-ecs-agent-<region>/amazon-ecs-init-latest.amd64.deb.asc
      ```

      **amazon-ecs-init-latest.arm64.deb**

      ```
      curl -o amazon-ecs-init.deb.asc https://s3.<region>.amazonaws.com/amazon-ecs-agent-<region>/amazon-ecs-init-latest.arm64.deb.asc
      ```

   1. 用密钥验证 `ecs-init` 程序包文件。

      **对于 `rpm` 程序包**

      ```
      gpg --verify amazon-ecs-init.rpm.asc ./amazon-ecs-init.rpm
      ```

      **对于 `deb` 程序包**

      ```
      gpg --verify amazon-ecs-init.deb.asc ./amazon-ecs-init.deb
      ```

      预期的输出如下所示：

      ```
      gpg: Signature made Fri 14 May 2021 09:31:36 PM UTC
      gpg:                using RSA key 50DECCC4710E61AF
      gpg: Good signature from "Amazon ECS <ecs-security@amazon.com>" [unknown]
      gpg: WARNING: This key is not certified with a trusted signature!
      gpg:          There is no indication that the signature belongs to the owner.
      Primary key fingerprint: F34C 3DDA E729 26B0 79BE  AEC6 BCE9 D9A4 2D51 784F
           Subkey fingerprint: D64B B6F9 0CF3 77E9 B5FB  346F 50DE CCC4 710E 61AF
      ```

1. 安装 `ecs-init` 软件包。

   **对于 CentOS 7、CentOS 8 和 RHEL 7 上的 `rpm` 程序包**

   ```
   sudo yum install -y ./amazon-ecs-init.rpm
   ```

   **对于SUSE 企业服务器 15 上的 `rpm` 程序包**

   ```
   sudo zypper install -y --allow-unsigned-rpm ./amazon-ecs-init.rpm
   ```

   **对于 `deb` 程序包**

   ```
   sudo dpkg -i ./amazon-ecs-init.deb
   ```

1. 重新启动 `ecs` 服务。

   ```
   sudo systemctl restart ecs
   ```

1. 验证 Amazon ECS 代理版本是否已更新。

   ```
   curl -s 127.0.0.1:51678/v1/metadata | python3 -mjson.tool
   ```