

# 经 Amazon ECS 优化的 Linux AMI
<a name="ecs-optimized_AMI"></a>

**重要**  
Amazon ECS 优化版 Amazon Linux 2 AMI 的生命周期将于 2026 年 6 月 30 日终止，这与上游 Amazon Linux 2 操作系统的生命周期终止日期相同（有关更多信息，请参阅 [Amazon Linux 2 常见问题](https://aws.amazon.com/amazon-linux-2/faqs/)）。我们鼓励客户升级自己的应用程序以便使用 Amazon Linux 2023，其中包括直到 2028 年的长期支持。有关从 Amazon Linux 2 迁移到 Amazon Linux 2023 的信息，请参阅 [Migrating from the Amazon Linux 2 Amazon ECS-optimized AMI to the Amazon Linux 2023 Amazon ECS-optimized AMI](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/al2-to-al2023-ami-transition.html)。

默认情况下，所有 Amazon ECS 优化 AMI 的弃用日期均设置为 AMI 创建日期后的两年。您可以使用 Amazon EC2 `DescribeImages` API 来检查 AMI 的弃用状态和日期。有关更多信息，请参阅*《Amazon Elastic Compute Cloud API Reference》*中的 [DescribeImages](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeImages.html)。

Amazon ECS 提供已根据这些要求和建议进行了预配置的经 Amazon ECS 优化的 AMI，以运行您的容器工作负载。建议您在 Amazon EC2 实例中使用 Amazon ECS 优化版 Amazon Linux 2023 AMI。从最新的经 Amazon ECS 优化的 AMI 启动容器实例可确保您收到最新的安全更新和容器代理版本。有关如何启动实例的信息，请参阅 [启动 Amazon ECS Linux 容器实例](launch_container_instance.md)。

您使用控制台创建集群时，Amazon ECS 会使用与所选操作系统关联的最新 AMI 为您的实例创建启动模板。

使用 CloudFormation 创建集群时，SSM 参数是自动扩缩组实例的 Amazon EC2 启动模板的一部分。您可以将该模板配置为使用动态 Systems Manager 参数来确定要部署的经 Amazon ECS 优化的 AMI。此参数可确保每次部署堆栈时，都会检查是否存在需要应用到 EC2 实例的可用更新。有关如何使用 Systems Manager 参数的示例，请参阅《AWS CloudFormation 用户指南》中的 [Create an Amazon ECS cluster with the Amazon ECS-optimized Amazon Linux 2023 AMI](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-cluster.html#aws-resource-ecs-cluster--examples--Create_an_cluster_with_the_Amazon_Linux_2023_ECS-Optimized-AMI)**。

如果需要自定义经 Amazon ECS 优化的 AMI，请参阅 GitHub 上的 [Amazon ECS Optimized AMI Build Recipes](https://github.com/aws/amazon-ecs-ami)。

以下 Amazon ECS 优化型 AMI 的变体可用于具有 Amazon Linux 2023 操作系统的 Amazon EC2 实例。


| 操作系统 | AMI | 说明 | 存储配置 | 
| --- | --- | --- | --- | 
| Amazon Linux 2023 |  经 Amazon ECS 优化的 Amazon Linux 2023 AMI |  Amazon Linux 2023 是 AWS 的下一代 Amazon Linux。在大多数情况下，推荐用于为您的 Amazon ECS 工作负载启动 Amazon EC2 实例。有关更多信息，请参阅《Amazon Linux 2023 用户指南》**中的[什么是 Amazon Linux 2023](https://docs.aws.amazon.com/linux/al2023/ug/what-is-amazon-linux.html)。  | 预设情况下，经 Amazon ECS 优化的 Amazon Linux 2023 AMI 附带一个 30GiB 的根卷。您可以在启动时修改 30 GiB 的根卷大小，以增加您的容器实例上的可用存储。此存储用于操作系统和 Docker 映像与元数据。经 Amazon ECS 优化的 Amazon Linux 2023 AMI 的默认文件系统是 `xfs`，Docker 使用 `overlay2` 存储驱动程序。有关更多信息，请参阅 Docker 文档中的[使用 OverlayFS 存储驱动程序](https://docs.docker.com/engine/storage/drivers/overlayfs-driver/)。 | 
| Amazon Linux 2023（arm64） |  经 Amazon ECS 优化的 Amazon Linux 2023（arm64）AMI |  此 AMI 基于 Amazon Linux 2023，建议将其用于为 Amazon ECS 工作负载启动采用基于 ARM 的 AWS Graviton/Graviton 2/Graviton 3/Graviton 4 处理器的 Amazon EC2 实例。有关更多信息，请参阅《Amazon EC2 实例类型指南》中的 [Specifications for the Amazon EC2 general purpose instances](https://docs.aws.amazon.com/ec2/latest/instancetypes/gp.html)**。  | 预设情况下，经 Amazon ECS 优化的 Amazon Linux 2023 AMI 附带一个 30GiB 的根卷。您可以在启动时修改 30 GiB 的根卷大小，以增加您的容器实例上的可用存储。此存储用于操作系统和 Docker 映像与元数据。经 Amazon ECS 优化的 Amazon Linux 2023 AMI 的默认文件系统是 `xfs`，Docker 使用 `overlay2` 存储驱动程序。有关更多信息，请参阅 Docker 文档中的[使用 OverlayFS 存储驱动程序](https://docs.docker.com/engine/storage/drivers/overlayfs-driver/)。 | 
| Amazon Linux 2023（Neuron） |  经 Amazon ECS 优化的 Amazon Linux 2023 AMI  |  基于 Amazon Linux 2023，此 AMI 适用于 Amazon EC2 Inf1、Trn1 或 Inf2 实例。带有预先配置 AWS Inferentia 和 AWS Trainium 驱动程序以及 Docker 的 AWS Neuron 运行时系统，它使得在 Amazon ECS 上运行机器学习推理工作负载变得更加容易。有关更多信息，请参阅 [适用于 AWS 神经元机器学习工作负载的 Amazon ECS 任务定义](ecs-inference.md)。 经 Amazon ECS 优化的 Amazon Linux 2023（Neuron）AMI 不随附 AWS CLI 预装。  | 预设情况下，经 Amazon ECS 优化的 Amazon Linux 2023 AMI 附带一个 30GiB 的根卷。您可以在启动时修改 30 GiB 的根卷大小，以增加您的容器实例上的可用存储。此存储用于操作系统和 Docker 映像与元数据。经 Amazon ECS 优化的 Amazon Linux 2023 AMI 的默认文件系统是 `xfs`，Docker 使用 `overlay2` 存储驱动程序。有关更多信息，请参阅 Docker 文档中的[使用 OverlayFS 存储驱动程序](https://docs.docker.com/engine/storage/drivers/overlayfs-driver/)。 | 
| Amazon Linux 2023 GPU | 经 Amazon ECS 优化的 Amazon Linux 2023 GPU AMI |  此 AMI 基于 Amazon Linux 2023，建议在为 Amazon ECS 工作负载启动基于 Amazon EC2 GPU 的实例时使用。预配置了 NVIDIA 内核驱动程序和 Docker GPU 运行时，可以使正在运行的工作负载充分利用 Amazon ECS 上的 GPU。有关更多信息，请参阅 [适用于 GPU 工作负载的 Amazon ECS 任务定义](ecs-gpu.md)。  | 预设情况下，经 Amazon ECS 优化的 Amazon Linux 2023 AMI 附带一个 30GiB 的根卷。您可以在启动时修改 30 GiB 的根卷大小，以增加您的容器实例上的可用存储。此存储用于操作系统和 Docker 映像与元数据。经 Amazon ECS 优化的 Amazon Linux 2023 AMI 的默认文件系统是 `xfs`，Docker 使用 `overlay2` 存储驱动程序。有关更多信息，请参阅 Docker 文档中的[使用 OverlayFS 存储驱动程序](https://docs.docker.com/engine/storage/drivers/overlayfs-driver/)。 | 

以下 Amazon ECS 优化型 AMI 的变体可用于使用 Amazon Linux 2 操作系统的 Amazon EC2 实例。


| 操作系统 | AMI | 说明 | 存储配置 | 
| --- | --- | --- | --- | 
|  **Amazon Linux 2**   |  经 Amazon ECS 优化的 Amazon Linux 2 内核 5.10 AMI | 基于 Amazon Linux 2，在启动 Amazon EC2 实例时使用此 AMI，您需要为 Amazon ECS 工作负载使用 Linux 内核 5.10 而不是内核 4.14。经 Amazon ECS 优化的 Amazon Linux 2 内核 5.10 AMI 未预装 AWS CLI。 | 预设情况下，基于Amazon Linux 2 的经 Amazon ECS 优化的 AMI（经 Amazon ECS 优化的 Amazon Linux 2 AMI、经 Amazon ECS 优化的 Amazon Linux 2（arm64）AMI 和Amazon ECS GPU 优化型 AMI）随附单个 30 GiB 根卷发货。您可以在启动时修改 30 GiB 的根卷大小，以增加您的容器实例上的可用存储。此存储用于操作系统和 Docker 映像与元数据。经 Amazon ECS 优化的 Amazon Linux 2 AMI 的原定设置文件系统是 `xfs`，Docker 使用 `overlay2` 存储驱动程序。有关更多信息，请参阅 Docker 文档中的[使用 OverlayFS 存储驱动程序](https://docs.docker.com/engine/storage/drivers/overlayfs-driver/)。 | 
|  **Amazon Linux 2**  |  经 Amazon ECS 优化的 Amazon Linux 2 AMI | 此项适用于您的 Amazon ECS 工作负载。经 Amazon ECS 优化的 Amazon Linux 2 AMI 不随附 AWS CLI 预装。 | 预设情况下，基于Amazon Linux 2 的经 Amazon ECS 优化的 AMI（经 Amazon ECS 优化的 Amazon Linux 2 AMI、经 Amazon ECS 优化的 Amazon Linux 2（arm64）AMI 和Amazon ECS GPU 优化型 AMI）随附单个 30 GiB 根卷发货。您可以在启动时修改 30 GiB 的根卷大小，以增加您的容器实例上的可用存储。此存储用于操作系统和 Docker 映像与元数据。经 Amazon ECS 优化的 Amazon Linux 2 AMI 的原定设置文件系统是 `xfs`，Docker 使用 `overlay2` 存储驱动程序。有关更多信息，请参阅 Docker 文档中的[使用 OverlayFS 存储驱动程序](https://docs.docker.com/engine/storage/drivers/overlayfs-driver/)。 | 
|  **Amazon Linux 2（arm64）**  |  经 Amazon ECS 优化的 Amazon Linux 2 内核 5.10（arm64）AMI |  此 AMI 基于 Amazon Linux 2，适用于为 Amazon ECS 工作负载启动采用基于 Arm 的 AWS Graviton/Graviton 2/Graviton 3/Graviton 4 处理器，并且您希望使用 Linux 内核 5.10 而不是 Linux 内核 4.14 的 Amazon EC2 实例。有关更多信息，请参阅《Amazon EC2 实例类型指南》中的 [Specifications for Amazon EC2 general purpose instances](https://docs.aws.amazon.com/ec2/latest/instancetypes/gp.html)**。 经 Amazon ECS 优化的 Amazon Linux 2（arm64）AMI 不随附 AWS CLI 预装。  | 预设情况下，基于Amazon Linux 2 的经 Amazon ECS 优化的 AMI（经 Amazon ECS 优化的 Amazon Linux 2 AMI、经 Amazon ECS 优化的 Amazon Linux 2（arm64）AMI 和Amazon ECS GPU 优化型 AMI）随附单个 30 GiB 根卷发货。您可以在启动时修改 30 GiB 的根卷大小，以增加您的容器实例上的可用存储。此存储用于操作系统和 Docker 映像与元数据。经 Amazon ECS 优化的 Amazon Linux 2 AMI 的原定设置文件系统是 `xfs`，Docker 使用 `overlay2` 存储驱动程序。有关更多信息，请参阅 Docker 文档中的[使用 OverlayFS 存储驱动程序](https://docs.docker.com/engine/storage/drivers/overlayfs-driver/)。 | 
| Amazon Linux 2（arm64） | 经 Amazon ECS 优化的 Amazon Linux 2（arm64）AMI |  此 AMI 基于 Amazon Linux 2，适用于为 Amazon ECS 工作负载启动采用基于 Arm 的 AWS Graviton/Graviton 2/Graviton 3/Graviton 4 处理器的 Amazon EC2 实例。 经 Amazon ECS 优化的 Amazon Linux 2（arm64）AMI 不随附 AWS CLI 预装。  | 预设情况下，基于Amazon Linux 2 的经 Amazon ECS 优化的 AMI（经 Amazon ECS 优化的 Amazon Linux 2 AMI、经 Amazon ECS 优化的 Amazon Linux 2（arm64）AMI 和Amazon ECS GPU 优化型 AMI）随附单个 30 GiB 根卷发货。您可以在启动时修改 30 GiB 的根卷大小，以增加您的容器实例上的可用存储。此存储用于操作系统和 Docker 映像与元数据。经 Amazon ECS 优化的 Amazon Linux 2 AMI 的原定设置文件系统是 `xfs`，Docker 使用 `overlay2` 存储驱动程序。有关更多信息，请参阅 Docker 文档中的[使用 OverlayFS 存储驱动程序](https://docs.docker.com/engine/storage/drivers/overlayfs-driver/)。 | 
|  **Amazon Linux 2（GPU）**  | Amazon ECS GPU 优化型内核 5.10 AMI | 基于 Amazon Linux 2，建议在为 Amazon ECS 工作负载启动基于 Amazon EC2 GPU 的实例（含 Linux 内核 5.10）时使用此 AMI。预配置了 NVIDIA 内核驱动程序和 Docker GPU 运行时，可以使正在运行的工作负载充分利用 Amazon ECS 上的 GPU。有关更多信息，请参阅 [适用于 GPU 工作负载的 Amazon ECS 任务定义](ecs-gpu.md)。 | 预设情况下，基于Amazon Linux 2 的经 Amazon ECS 优化的 AMI（经 Amazon ECS 优化的 Amazon Linux 2 AMI、经 Amazon ECS 优化的 Amazon Linux 2（arm64）AMI 和Amazon ECS GPU 优化型 AMI）随附单个 30 GiB 根卷发货。您可以在启动时修改 30 GiB 的根卷大小，以增加您的容器实例上的可用存储。此存储用于操作系统和 Docker 映像与元数据。经 Amazon ECS 优化的 Amazon Linux 2 AMI 的原定设置文件系统是 `xfs`，Docker 使用 `overlay2` 存储驱动程序。有关更多信息，请参阅 Docker 文档中的[使用 OverlayFS 存储驱动程序](https://docs.docker.com/engine/storage/drivers/overlayfs-driver/)。 | 
| Amazon Linux 2（GPU） | Amazon ECS GPU 优化型 AMI | 基于 Amazon Linux 2，建议在为 Amazon ECS 工作负载启动基于 Amazon EC2 GPU 的实例（含 Linux 内核 4.14）时使用此 AMI。预配置了 NVIDIA 内核驱动程序和 Docker GPU 运行时，可以使正在运行的工作负载充分利用 Amazon ECS 上的 GPU。有关更多信息，请参阅 [适用于 GPU 工作负载的 Amazon ECS 任务定义](ecs-gpu.md)。 | 预设情况下，基于Amazon Linux 2 的经 Amazon ECS 优化的 AMI（经 Amazon ECS 优化的 Amazon Linux 2 AMI、经 Amazon ECS 优化的 Amazon Linux 2（arm64）AMI 和Amazon ECS GPU 优化型 AMI）随附单个 30 GiB 根卷发货。您可以在启动时修改 30 GiB 的根卷大小，以增加您的容器实例上的可用存储。此存储用于操作系统和 Docker 映像与元数据。经 Amazon ECS 优化的 Amazon Linux 2 AMI 的原定设置文件系统是 `xfs`，Docker 使用 `overlay2` 存储驱动程序。有关更多信息，请参阅 Docker 文档中的[使用 OverlayFS 存储驱动程序](https://docs.docker.com/engine/storage/drivers/overlayfs-driver/)。 | 
| Amazon Linux 2（Neuron）  | 经 Amazon ECS 优化的 Amazon Linux 2（Neuron）内核 5.10 AMI  | 基于 Amazon Linux 2，此 AMI 适用于 Amazon EC2 Inf1、Trn1 或 Inf2 实例。其带有预先配置 AWS Inferentia（含 Linux 内核 5.10）和 AWS Trainium 驱动程序以及 Docker 的 AWS Neuron 运行时，使得在 Amazon ECS 上运行机器学习推理工作负载变得更加容易。有关更多信息，请参阅 [适用于 AWS 神经元机器学习工作负载的 Amazon ECS 任务定义](ecs-inference.md)。经 Amazon ECS 优化的 Amazon Linux 2（Neuron）AMI 不随附 AWS CLI 预装。 | 预设情况下，基于Amazon Linux 2 的经 Amazon ECS 优化的 AMI（经 Amazon ECS 优化的 Amazon Linux 2 AMI、经 Amazon ECS 优化的 Amazon Linux 2（arm64）AMI 和Amazon ECS GPU 优化型 AMI）随附单个 30 GiB 根卷发货。您可以在启动时修改 30 GiB 的根卷大小，以增加您的容器实例上的可用存储。此存储用于操作系统和 Docker 映像与元数据。经 Amazon ECS 优化的 Amazon Linux 2 AMI 的原定设置文件系统是 `xfs`，Docker 使用 `overlay2` 存储驱动程序。有关更多信息，请参阅 Docker 文档中的[使用 OverlayFS 存储驱动程序](https://docs.docker.com/engine/storage/drivers/overlayfs-driver/)。 | 
| Amazon Linux 2（Neuron）  | 经 Amazon ECS 优化的 Amazon Linux 2（Neuron）AMI | 基于 Amazon Linux 2，此 AMI 适用于 Amazon EC2 Inf1、Trn1 或 Inf2 实例。带有预先配置 AWS Inferentia 和 AWS Trainium 驱动程序以及 Docker 的 AWS Neuron 运行时系统，它使得在 Amazon ECS 上运行机器学习推理工作负载变得更加容易。有关更多信息，请参阅 [适用于 AWS 神经元机器学习工作负载的 Amazon ECS 任务定义](ecs-inference.md)。经 Amazon ECS 优化的 Amazon Linux 2（Neuron）AMI 不随附 AWS CLI 预装。 | 预设情况下，基于Amazon Linux 2 的经 Amazon ECS 优化的 AMI（经 Amazon ECS 优化的 Amazon Linux 2 AMI、经 Amazon ECS 优化的 Amazon Linux 2（arm64）AMI 和Amazon ECS GPU 优化型 AMI）随附单个 30 GiB 根卷发货。您可以在启动时修改 30 GiB 的根卷大小，以增加您的容器实例上的可用存储。此存储用于操作系统和 Docker 映像与元数据。经 Amazon ECS 优化的 Amazon Linux 2 AMI 的原定设置文件系统是 `xfs`，Docker 使用 `overlay2` 存储驱动程序。有关更多信息，请参阅 Docker 文档中的[使用 OverlayFS 存储驱动程序](https://docs.docker.com/engine/storage/drivers/overlayfs-driver/)。 | 

Amazon ECS 为 GitHub 上的 Amazon ECS 优化 AMI 的 Linux 变体提供了更改日志。有关更多信息，请参阅[更改日志](https://github.com/aws/amazon-ecs-ami/blob/main/CHANGELOG.md)。

经 Amazon ECS 优化的 AMI 的 Linux 变体使用 Amazon Linux 2 AMI 或 Amazon Linux 2023 AMI 作为其基础。您可以通过查询 Systems Manager Parameter Store API 来检索每个变体的 AMI 名称。有关更多信息，请参阅 [检索经 Amazon ECS 优化的 Linux AMI 元数据](retrieve-ecs-optimized_AMI.md)。还提供了 Amazon Linux 2 AMI 版本注释。有关更多信息，请参阅 [Amazon Linux 2 版本注释](https://docs.aws.amazon.com/AL2/latest/relnotes/relnotes-al2.html)。还提供了 Amazon Linux 2023 发布说明。有关更多信息，请参阅 [Amazon Linux 2023 发布说明](https://docs.aws.amazon.com/linux/al2023/release-notes/relnotes.html)。

以下页面提供了有关更改的更多信息：
+ GitHub 上的[来源 AMI 发布](https://github.com/aws/amazon-ecs-ami/releases)说明
+ Docker 文档中的 [Docker 引擎版本注释](https://docs.docker.com/engine/release-notes/)
+ NVIDIA 文档中的 [NVIDIA 驱动程序文档](https://docs.nvidia.com/datacenter/tesla/index.html)
+ GitHub 上的 [Amazon ECS 代理变更日志](https://github.com/aws/amazon-ecs-agent/blob/master/CHANGELOG.md)

  `ecs-init` 应用程序的源代码以及用于打包代理的脚本和配置现在已成为代理存储库的一部分。有关 `ecs-init` 的旧版本和包装，请参阅 GitHub 上的 [Amazon ecs-init 变更日志](https://github.com/aws/amazon-ecs-init/blob/master/CHANGELOG.md)

## 将安全更新应用于经 Amazon ECS 优化的 AMI
<a name="ecs-optimized-AMI-security-changes"></a>

基于 Amazon Linux 的、经 Amazon ECS 优化的 AMI 包含的自定义版本的 cloud-init。Cloud-init 是一个程序包，用于在云计算环境中引导 Linux 映像，并在启动实例时执行所需操作。默认情况下，在 2024 年 6 月 12 日之前发布的所有经 Amazon ECS 优化的 Amazon Linux AMI 在实例启动时都已应用了“关键”和“重要”安全更新。

从 2024 年 6 月 12 日起发布的经 Amazon ECS 优化的 Amazon Linux 2 AMI 开始，默认行为将不再包括在启动时更新程序包。相反，建议您在发布版本后更新为新的经 Amazon ECS 优化的 AMI。经 Amazon ECS 优化的 AMI 在有可用安全更新或基本 AMI 更改时发布。这将确保您收到最新的程序包版本和安全更新，并且程序包版本在实例启动后不可变。有关检索最新经 Amazon ECS 优化 AMI 的更多信息，请参阅 [检索经 Amazon ECS 优化的 Linux AMI 元数据](retrieve-ecs-optimized_AMI.md)。

建议将您的环境自动化，以在新 AMI 可用时进行更新。有关可用选项的信息，请参阅 [Amazon ECS enables easier EC2 capacity management, with managed instance draining](https://aws.amazon.com/blogs/containers/amazon-ecs-enables-easier-ec2-capacity-management-with-managed-instance-draining/)。

要继续对某个 AMI 版本手动应用“关键”和“重要”安全更新，则可以在 Amazon EC2 实例上运行以下命令。

```
yum update --security
```

**警告**  
 更新 docker 或 containerd 软件包会导致主机上所有正在运行的容器停止，这意味着所有正在运行的 Amazon ECS 任务都将停止。请相应地制定计划，以最大程度地减少服务中断。

如果您想在启动时重新启用安全更新，则可以在启动 Amazon EC2 实例时将以下行添加到 cloud-init 用户数据的 `#cloud-config` 部分。有关更多信息，请参阅《Amazon Linux 用户指南》**中的 [Using cloud-init on Amazon Linux 2](https://docs.aws.amazon.com/linux/al2/ug/amazon-linux-cloud-init.html)。

```
#cloud-config
repo_upgrade: security
```

## 经 Amazon ECS 优化的 AL2023 GPU AMI 中的版本锁定的软件包
<a name="ecs-optimized-ami-version-locked-packages"></a>

在经 Amazon ECS 优化的 AL2023 GPU AMI 中，某些软件包对于 GPU 功能的正确、高性能行为至关重要。这些方法包括：
+ NVIDIA 驱动程序（`nvidia*`）
+ 内核模块（`kmod*`）
+ NVIDIA 库（`libnvidia*`）
+ 内核软件包（`kernel*`）

**注意**  
这并非是详尽的列表。完整的锁定软件包列表可通过 `dnf versionlock list` 获得

这些软件包锁定了版本来确保稳定性，并防止可能中断 GPU 工作负载的意外更改。因此，这些软件包通常应在一个托管进程的范围内进行修改，该进程可以妥善处理潜在问题并维护 GPU 功能。

为了防止意外修改，这些软件包使用了 `dnf versionlock` 插件。

如果希望修改锁定的软件包，您可以：

```
# unlock a single package
sudo dnf versionlock delete $PACKAGE_NAME

# unlock all packages
sudo dnf versionlock clear
```

**重要**  
当需要更新这些软件包时，客户应该考虑使用包含所需更新的最新 AMI 版本。如果需要更新现有实例，则应采用涉及解锁、更新和重新锁定软件包的谨慎方法，始终确保在整个过程中保持 GPU 功能正常运行。

# 检索经 Amazon ECS 优化的 Linux AMI 元数据
<a name="retrieve-ecs-optimized_AMI"></a>

您可以通过编程方式检索经 Amazon ECS 优化的 AMI 元数据。元数据包括 AMI 名称、Amazon ECS 容器代理版本和 Amazon ECS 运行时版本（其中包括 Docker 版本）。

您使用控制台创建集群时，Amazon ECS 会使用与所选操作系统关联的最新 AMI 为您的实例创建启动模板。

使用 CloudFormation 创建集群时，SSM 参数是自动扩缩组实例的 Amazon EC2 启动模板的一部分。您可以将该模板配置为使用动态 Systems Manager 参数来确定要部署的经 Amazon ECS 优化的 AMI。此参数可确保每次部署堆栈时，都会检查是否存在需要应用到 EC2 实例的可用更新。有关如何使用 Systems Manager 参数的示例，请参阅《AWS CloudFormation 用户指南》中的 [Create an Amazon ECS cluster with the Amazon ECS-optimized Amazon Linux 2023 AMI](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-cluster.html#aws-resource-ecs-cluster--examples--Create_an_cluster_with_the_Amazon_Linux_2023_ECS-Optimized-AMI)**。

经 Amazon ECS 优化的 AMI 的 AMI ID、映像名称、操作系统、容器代理版本、源映像名称和运行时版本可通过查询 Systems Manager Parameter Store API 以编程方式检索。有关 Systems Manager Parameter Store API 的更多信息，请参阅 [GetParameters](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParameters.html) 和 [GetParametersByPath](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParametersByPath.html)。

**注意**  
您的管理用户必须具有以下 IAM 权限才能检索经 Amazon ECS 优化的 AMI 元数据。这些权限已添加到 `AmazonECS_FullAccess` IAM 策略。  
ssm:GetParameters
ssm:GetParameter
ssm:GetParametersByPath

## Systems Manager Parameter Store 参数格式
<a name="ecs-optimized-ami-parameter-format"></a>

以下是经 Amazon ECS 优化的 AMI 变体参数名称的格式。

**Linux 经 Amazon ECS 优化的 AMI**
+ Amazon Linux 2023 AMI 元数据：

  ```
  /aws/service/ecs/optimized-ami/amazon-linux-2023/<version>
  ```
+ Amazon Linux 2023（arm64）AMI 元数据：

  ```
  /aws/service/ecs/optimized-ami/amazon-linux-2023/arm64/<version>
  ```
+ Amazon Linux 2023（Neuron）AMI 元数据：

  ```
  /aws/service/ecs/optimized-ami/amazon-linux-2023/neuron/<version>
  ```
+ Amazon Linux 2023（GPU）AMI 元数据：

  ```
  /aws/service/ecs/optimized-ami/amazon-linux-2023/gpu/<version>
  ```

  Amazon Linux 2 AMI 元数据：

  ```
  /aws/service/ecs/optimized-ami/amazon-linux-2/<version>
  ```
+ Amazon Linux 2 内核 5.10 AMI 元数据：

  ```
  /aws/service/ecs/optimized-ami/amazon-linux-2/kernel-5.10/<version>
  ```
+ Amazon Linux 2（arm64）AMI 元数据：

  ```
  /aws/service/ecs/optimized-ami/amazon-linux-2/arm64/<version>
  ```
+ Amazon Linux 2 内核 5.10（arm64）AMI 元数据：

  ```
  /aws/service/ecs/optimized-ami/amazon-linux-2/kernel-5.10/arm64/<version>
  ```
+ Amazon ECS GPU 优化型内核 5.10 AMI 元数据：

  ```
  /aws/service/ecs/optimized-ami/amazon-linux-2/kernel-5.10/gpu/<version>
  ```
+ Amazon Linux 2（GPU）AMI 元数据：

  ```
  /aws/service/ecs/optimized-ami/amazon-linux-2/gpu/<version>
  ```
+ 经 Amazon ECS 优化的 Amazon Linux 2（Neuron）内核 5.10 AMI 元数据：

  ```
  /aws/service/ecs/optimized-ami/amazon-linux-2/kernel-5.10/inf/<version>
  ```
+ Amazon Linux 2（Neuron）AMI 元数据：

  ```
  /aws/service/ecs/optimized-ami/amazon-linux-2/inf/<version>
  ```

以下参数名称格式通过使用子参数 `image_id` 检索最新推荐的经 Amazon ECS 优化的 Amazon Linux 2 AMI 的映像 ID。

```
/aws/service/ecs/optimized-ami/amazon-linux-2/recommended/image_id
```

以下参数名称格式通过指定 AMI 名称来检索特定的经 Amazon ECS 优化的 AMI 版本的元数据。
+ 经 Amazon ECS 优化的 Amazon Linux 2 AMI 元数据：

  ```
  /aws/service/ecs/optimized-ami/amazon-linux-2/amzn2-ami-ecs-hvm-2.0.20181112-x86_64-ebs
  ```

**注意**  
经 Amazon ECS 优化的 Amazon Linux 2 AMI 的所有版本都可用于检索。只能检索经 Amazon ECS 优化的 AMI 版本 `amzn-ami-2017.09.l-amazon-ecs-optimized`（Linux）及更高版本。

## 示例
<a name="ecs-optimized-ami-parameter-examples"></a>

以下示例说明了可用于检索经 Amazon ECS 优化的 AMI 变体的元数据的方法。

### 检索最新推荐的经 Amazon ECS 优化的 AMI 的元数据
<a name="ecs-optimized-ami-parameter-examples-1"></a>

您可以使用 AWS CLI 和以下 AWS CLI 命令检索最新推荐的经 Amazon ECS 优化的 AMI。

**Linux 经 Amazon ECS 优化的 AMI**
+ **对于经 Amazon ECS 优化的 Amazon Linux 2023 AMI：**

  ```
  aws ssm get-parameters --names /aws/service/ecs/optimized-ami/amazon-linux-2023/recommended --region us-east-1
  ```
+ **对于经 Amazon ECS 优化的 Amazon Linux 2023（arm64）AMI：**

  ```
  aws ssm get-parameters --names /aws/service/ecs/optimized-ami/amazon-linux-2023/arm64/recommended --region us-east-1
  ```
+ **对于经 Amazon ECS 优化的 Amazon Linux 2023（Neuron）AMI：**

  ```
  aws ssm get-parameters --names /aws/service/ecs/optimized-ami/amazon-linux-2023/neuron/recommended --region us-east-1
  ```
+ **对于经 Amazon ECS 优化的 Amazon Linux 2023 GPU AMI：**

  ```
  aws ssm get-parameters --names /aws/service/ecs/optimized-ami/amazon-linux-2023/gpu/recommended --region us-east-1
  ```
+ **对于经 Amazon ECS 优化的 Amazon Linux 2 内核 5.10 AMI：**

  ```
  aws ssm get-parameters --names /aws/service/ecs/optimized-ami/amazon-linux-2/kernel-5.10/recommended --region us-east-1
  ```
+ **对于经 Amazon ECS 优化的 Amazon Linux 2 AMI：**

  ```
  aws ssm get-parameters --names /aws/service/ecs/optimized-ami/amazon-linux-2/recommended --region us-east-1
  ```
+ **对于经 Amazon ECS 优化的 Amazon Linux 2 内核 5.10（arm64）AMI：**

  ```
  aws ssm get-parameters --names /aws/service/ecs/optimized-ami/amazon-linux-2/kernel-5.10/arm64/recommended --region us-east-1
  ```
+ **对于经 Amazon ECS 优化的 Amazon Linux 2（arm64）AMI：**

  ```
  aws ssm get-parameters --names /aws/service/ecs/optimized-ami/amazon-linux-2/arm64/recommended --region us-east-1
  ```
+ **对于 Amazon ECS GPU 优化型内核 5.10 AMI：**

  ```
  aws ssm get-parameters --names /aws/service/ecs/optimized-ami/amazon-linux-2/kernel-5.10/gpu/recommended --region us-east-1
  ```
+ **对于 Amazon ECS GPU 优化型 AMI：**

  ```
  aws ssm get-parameters --names /aws/service/ecs/optimized-ami/amazon-linux-2/gpu/recommended --region us-east-1
  ```
+ **对于经 Amazon ECS 优化的 Amazon Linux 2（Neuron）内核 5.10 AMI：**

  ```
  aws ssm get-parameters --names /aws/service/ecs/optimized-ami/amazon-linux-2/kernel-5.10/inf/recommended --region us-east-1
  ```
+ **对于经 Amazon ECS 优化的 Amazon Linux 2（Neuron）AMI：**

  ```
  aws ssm get-parameters --names /aws/service/ecs/optimized-ami/amazon-linux-2/inf/recommended --region us-east-1
  ```

### 检索最新推荐的经 Amazon ECS 优化的 Amazon Linux 2023 AMI 的映像 ID
<a name="ecs-optimized-ami-parameter-examples-6"></a>

您可以通过使用子参数 `image_id` 检索最新推荐的经 Amazon ECS 优化的 Amazon Linux 2023 AMI ID 的映像 ID。

```
aws ssm get-parameters --names /aws/service/ecs/optimized-ami/amazon-linux-2023/recommended/image_id --region us-east-1
```

要仅检索 `image_id` 值，您可以查询特定参数值；例如：

```
aws ssm get-parameters --names /aws/service/ecs/optimized-ami/amazon-linux-2023/recommended/image_id --region us-east-1 --query "Parameters[0].Value"
```

### 检索特定经 Amazon ECS 优化的 Amazon Linux 2 AMI 版本的元数据
<a name="ecs-optimized-ami-parameter-examples-2"></a>

使用 AWS CLI 和以下 AWS CLI 命令检索特定 经 Amazon ECS 优化的 Amazon Linux AMI版本的元数据。将要检索的 经 Amazon ECS 优化的 Amazon Linux AMI 的名称替换为 AMI 名称 

```
aws ssm get-parameters --names /aws/service/ecs/optimized-ami/amazon-linux-2/amzn2-ami-ecs-hvm-2.0.20200928-x86_64-ebs --region us-east-1
```

### 使用 Systems Manager GetParametersByPath API 检索经 Amazon ECS 优化的 Amazon Linux 2 内核 5.10 AMI 元数据
<a name="ecs-optimized-ami-parameter-examples-3"></a>

通过 AWS CLI 和下列命令使用 Systems Manager GetParametersByPath API 检索 经 Amazon ECS 优化的 Amazon Linux 2 AMI 元数据。

```
aws ssm get-parameters-by-path --path /aws/service/ecs/optimized-ami/amazon-linux-2/kernel-5.10/ --region us-east-1
```

### 检索最新推荐的经 Amazon ECS 优化的 Amazon Linux 2 内核 5.10 AMI 的映像 ID
<a name="ecs-optimized-ami-parameter-examples-4"></a>

您可以通过使用子参数 `image_id` 检索最新推荐的经 Amazon ECS 优化的 Amazon Linux 2 内核 5.10 AMI ID 的映像 ID。

```
aws ssm get-parameters --names /aws/service/ecs/optimized-ami/amazon-linux-2/kernel-5.10/recommended/image_id --region us-east-1
```

要仅检索 `image_id` 值，您可以查询特定参数值；例如：

```
aws ssm get-parameters --names /aws/service/ecs/optimized-ami/amazon-linux-2/recommended/image_id --region us-east-1 --query "Parameters[0].Value"
```

### 在 CloudFormation 模板中使用最新推荐的经 Amazon ECS 优化的 AMI
<a name="ecs-optimized-ami-parameter-examples-5"></a>

您可以参考 Systems Manager 参数存储名称引用 CloudFormation 模板中最新推荐的经 Amazon ECS 优化的 AMI。

**Linux 示例**

```
Parameters:kernel-5.10
  LatestECSOptimizedAMI:
    Description: AMI ID
    Type: AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>
    Default: /aws/service/ecs/optimized-ami/amazon-linux-2/kernel-5.10/recommended/image_id
```

# 从 Amazon Linux 2 迁移到 Amazon Linux 2023 Amazon ECS 优化版 AMI
<a name="al2-to-al2023-ami-transition"></a>

继 [Amazon Linux](https://aws.amazon.com/amazon-linux-2/faqs) 之后，Amazon ECS 将于 2026 年 6 月 30 日起终止对 Amazon Linux 2 Amazon ECS 优化版 AMI 的标准支持。在此日期之后，Amazon ECS 代理版本将被固定，新的 Amazon Linux 2 Amazon ECS 优化版 AMI 只有在源 Amazon Linux 2 AMI 更新后才会发布。生命周期终止（EOL）于 2026 年 6 月 30 日生效，之后即使源 AMI 已更新，也不会再发布 Amazon ECS 优化版 Amazon Linux 2 AMI。

Amazon Linux 2023 提供了默认安全方法，包括预配置的安全策略、允许模式下的 SELinux、默认启用仅 IMDSv2 模式、优化的启动时间以及改进的程序包管理，增强了安全性和性能。

Amazon Linux 2 和 Amazon Linux 2023 Amazon ECS 优化版 AMI 之间高度兼容，大多数客户在使用这两个操作系统时所感受到的工作负载变化将微乎其微。

有关更多信息，请参阅《Amazon Linux 2023 用户指南》**中的[比较 Amazon Linux 2 与 *Amazon Linux 2023*](https://docs.aws.amazon.com/linux/al2023/ug/compare-with-al2.html) 以及 [AL2023 常见问题](https://aws.amazon.com/linux/amazon-linux-2023/faqs)。

## 兼容性注意事项
<a name="al2-to-al2023-ami-transition-compatibility"></a>

### 程序包管理和操作系统更新
<a name="al2-to-al2023-ami-transition-compatibility-package-management"></a>

与之前版本的 Amazon Linux 不同，Amazon ECS 优化版 Amazon Linux 2023 AMI 被锁定到特定版本的 Amazon Linux 存储库。这可以防止用户无意中更新可能引入不需要的更改或重大更改的程序包。有关更多信息，请参阅《Amazon Linux 2023 用户指南》**中的 [Managing repositories and OS updates in Amazon Linux 2023](https://docs.aws.amazon.com/linux/al2023/ug/managing-repos-os-updates.html)。

### Linux 内核版本
<a name="al2-to-al2023-ami-transition-compatibility-kernel"></a>

Amazon Linux 2 AMI 基于 Linux 内核 4.14 和 5.10，而 Amazon Linux 2023 使用 Linux 内核 6.1 和 6.12。有关更多信息，请参阅《Amazon Linux 2023 用户指南**》中的 [Comparing Amazon Linux 2 and Amazon Linux 2023 kernels](https://docs.aws.amazon.com/linux/al2023/ug/compare-with-al2-kernel.html)。

### 程序包可用性更改
<a name="al2-to-al2023-ami-transition-compatibility-packages"></a>

以下是 Amazon Linux 2023 中值得注意的程序包更改：
+ Amazon Linux 2 不再包含 Amazon Linux 2023 中的某些源二进制包。有关更多信息，请参阅《Amazon Linux 2023 Release Notes》**中的 [Packages removed from Amazon Linux 2023](https://docs.aws.amazon.com/linux/al2023/release-notes/removed.html)。
+ Amazon Linux 支持不同版本程序包的方式的更改。Amazon Linux 2023 中不存在 Amazon Linux 2 中使用的 `amazon-linux-extras` 系统。所有程序包都可在“核心”存储库中找到。
+ Amazon Linux 2023 不支持适用于 Enterprise Linux 的附加程序包（EPEL）。有关更多信息，请参阅《Amazon Linux 2023 用户指南》**中的 [EPEL compatibility in Amazon Linux 2023](https://docs.aws.amazon.com/linux/al2023/ug/epel.html)。
+ Amazon Linux 2023 不支持 32 位应用程序。有关更多信息，请参阅《Amazon Linux 2023 用户指南》**中的 [Deprecated features from Amazon Linux 2](https://docs.aws.amazon.com/linux/al2023/ug/deprecated-al2.html#deprecated-32bit-rpms)。

### 控制组（cgroup）更改
<a name="al2-to-al2023-ami-transition-compatibility-cgroups"></a>

控制组（cgroup）是 Linux 内核的一项功能，用于分层组织进程并在进程之间分配系统资源。控制组被广泛用于通过 `systemd` 实现容器运行时系统。

Amazon ECS 代理、Docker 和 containerd 均支持 cgroupv1 和 cgroupv2。Amazon ECS 代理和容器运行时会为您管理 cgroup，因此 Amazon ECS 客户无需对此底层 cgroup 升级进行任何更改。

有关 cgroupv2 的更多详细信息，请参阅《Amazon Linux 2023 用户指南》**中的 [Control groups v2 in Amazon Linux 2023](https://docs.aws.amazon.com/linux/al2023/ug/cgroupv2.html)。

### 实例元数据服务（IMDS）更改
<a name="al2-to-al2023-ami-transition-compatibility-imds"></a>

默认情况下，Amazon Linux 2023 需要实例元数据服务版本 2（IMDSv2）。IMDSv2 可带来多项好处，有助于改善安全状况。它使用面向会话的身份验证方法，需要在简单的 HTTP PUT 请求中创建密钥令牌才能启动会话。会话令牌的有效时间可以介于 1 秒到 6 小时之间。

有关如何从 IMDSv1 过渡到 IMDSv2 的更多信息，请参阅《Amazon EC2 用户指南》**中的[过渡到使用实例元数据服务版本 2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-metadata-transition-to-version-2.html)。

如果您想使用 IMDSv1，您仍然可以通过使用实例元数据选项启动属性，手动覆盖设置来做到这一点。

### 内存交换性更改
<a name="al2-to-al2023-ami-transition-compatibility-memory-swappiness"></a>

Amazon Linux 2023 和 cgroups v2 不支持按容器交换内存。有关更多信息，请参阅 [管理 Amazon ECS 上的容器交换内存空间](container-swap.md)。

### FIPS 验证更改
<a name="al2-to-al2023-ami-transition-compatibility-fips"></a>

Amazon Linux 2 通过了 FIPS 140-2 认证，Amazon Linux 2023 通过了 FIPS 140-3 认证。

要在 Amazon Linux 2023 上启用 FIPS 模式，请在您的 Amazon EC2 实例上安装必要的程序包，然后按照《Amazon Linux 2023 用户指南》**的 [Enable FIPS Mode on Amazon Linux 2023](https://docs.aws.amazon.com/linux/al2023/ug/fips-mode.html) 中的说明，完成配置步骤即可。

### 加速实例支持
<a name="al2-to-al2023-ami-transition-compatibility-accelerated"></a>

Amazon ECS 优化版 Amazon Linux 2023 AMI 同时支持 Neuron 和 GPU 加速实例类型。有关更多信息，请参阅 [经 Amazon ECS 优化的 Linux AMI](ecs-optimized_AMI.md)。

## 构建自定义 AMI
<a name="al2-to-al2023-ami-transition-custom-ami"></a>

虽然我们建议您迁移到官方支持和发布的 Amazon Linux 2023 Amazon ECS 优化版 AMI，但您可以继续使用用于构建 Amazon ECS 优化版 AMI 的 Linux 变体的开源构建脚本，来构建自定义 Amazon Linux 2 Amazon ECS 优化版 AMI。有关更多信息，请参阅 [经 Amazon ECS 优化的 Linux AMI 构建脚本](ecs-ami-build-scripts.md)。

## 迁移策略
<a name="al2-to-al2023-ami-transition-migration"></a>

我们建议制定和实施包括全面应用程序测试在内的迁移计划。以下各节根据您管理 Amazon ECS 基础设施的方式概述了不同的迁移策略。

### 使用 Amazon ECS 容量提供程序进行迁移
<a name="al2-to-al2023-ami-transition-migration-capacity-providers"></a>

1. 使用新的启动模板创建一个新的容量提供程序。这应该引用一个自动扩缩组群组，其启动模板与您的现有模板类似，但它应该指定其中一个 Amazon Linux 2023 变体，而非 Amazon Linux 2 Amazon ECS 优化版 AMI。将这个新容量提供程序添加到现有的 Amazon ECS 集群。

1. 更新集群的默认容量提供程序策略，将现有的 Amazon Linux 2 容量提供程序和新的 Amazon Linux 2023 容量提供程序纳入其中。首先，对 Amazon Linux 2 提供程序使用较高的权重，对 Amazon Linux 2023 提供程序使用较低的权重（例如，Amazon Linux 2：权重 80，Amazon Linux 2023：权重 20）。这会导致 Amazon ECS 在计划新任务时开始预置 Amazon Linux 2023 实例。确认实例是否注册正确，任务是否能够在新实例上成功运行。

1. 逐步调整集群默认策略中的容量提供程序权重，增加 Amazon Linux 2023 提供程序的权重，同时随着时间的推移降低 Amazon Linux 2 提供程序的权重（例如，先是 60/40，然后是 40/60，接着是 20/80）。您还可以更新各个服务容量提供程序的策略，以优先考虑 Amazon Linux 2023 实例。监控任务放置，确保它们在 Amazon Linux 2023 实例上成功运行。

1. （可选）清空 Amazon Linux 2 容器实例以加速任务迁移。如果您有足够的 Amazon Linux 2023 替换容量，则可以通过 Amazon ECS 控制台或 AWS CLI 手动清空 Amazon Linux 2 容器实例，加速将任务从 Amazon Linux 2 过渡到 Amazon Linux 2023。迁移完成后，从您的集群中移除 Amazon Linux 2 容量提供程序，并删除关联的自动扩缩组。

### 使用 Amazon EC2 Auto Scaling 组进行迁移
<a name="al2-to-al2023-ami-transition-migration-asg"></a>

1. 使用新的启动模板创建一个新的 Amazon EC2 Auto Scaling 组。此模板应与现有的启动模板类似，但它应指定其中一个 Amazon Linux 2023 变体，而非 Amazon Linux 2 Amazon ECS 优化版 AMI。这个新的自动扩缩组可以向现有集群启动实例。

1. 纵向扩展该自动扩缩组，即可开始将 Amazon Linux 2023 实例注册到您的集群中。确认实例是否注册正确，任务是否能够在新实例上成功运行。

1. 验证确认您的任务可在 Amazon Linux 2023 上运行后，纵向扩展 Amazon Linux 2023 自动扩缩组，同时逐步缩减 Amazon Linux 2 自动扩缩组，直到完全替换所有 Amazon Linux 2 实例。

1. 如果您有足够的 Amazon Linux 2023 替换容量，则可能需要显式清空容器实例，以加速将任务从 Amazon Linux 2 过渡到 Amazon Linux 2023。有关更多信息，请参阅 [耗尽 Amazon ECS 容器实例](container-instance-draining.md)。

### 使用手动托管的实例进行迁移
<a name="al2-to-al2023-ami-transition-migration-manual"></a>

1. 使用 Amazon ECS 优化版 Amazon Linux 2023 AMI（而不是 Amazon Linux 2）手动启动新的 Amazon EC2 实例（或调整启动该实例的脚本）。确保这些实例使用与现有 Amazon Linux 2 实例相同的安全组、子网、IAM 角色和集群配置。这些实例应在启动时自动注册到现有 Amazon ECS 集群中。

1. 确认新的 Amazon Linux 2023 实例是否已成功注册到 Amazon ECS 集群并且处于 `ACTIVE` 状态。通过等待自然任务放置或手动停止/启动某些任务以触发重新计划，测试是否可以在这些新实例上计划任务并正常运行任务。

1. 根据需要启动其他 Amazon Linux 2023 实例，然后手动逐个清空和终止 Amazon Linux 2 实例，从而逐步替换 Amazon Linux 2 实例。将实例设置为 `DRAINING` 状态，通过 Amazon ECS 控制台清空实例，这将停止在这些实例上放置新任务，并允许现有任务完成或在其他地方重新计划这些任务。

# 经 Amazon ECS 优化的 Linux AMI 构建脚本
<a name="ecs-ami-build-scripts"></a>

Amazon ECS 已对用于构建 Amazon ECS 优化版 AMI 的 Linux 变体的构建脚本进行开源。GitHub 上现在提供了这些生成脚本。有关更多信息，请参阅 GitHub 上的 [amazon-ecs-ami](https://github.com/aws/amazon-ecs-ami)。

如果您需要自定义经 Amazon ECS 优化的 AMI，请参阅 GitHub 上的 [经 Amazon ECS 优化的 AMI 生成配方](https://github.com/aws/amazon-ecs-ami)。

生成脚本存储库包含 [HashiCorp packer](https://developer.hashicorp.com/packer/docs) 模板和生成脚本以生成经 Amazon ECS 优化的 AMI 的每个 Linux 变体。这些脚本是经 Amazon ECS 优化的 AMI 生成的可信来源，因此您可关注 GitHub 存储库以监控对 AMI 所做的更改。例如，您可能希望自己的 AMI 使用 Amazon ECS 团队用于正式 AMI 的同一版本的 Docker。

有关更多信息，请通过 GitHub 上的 [aws/amazon-ecs-ami](https://github.com/aws/amazon-ecs-ami) 参阅 Amazon ECS AMI 存储桶。

**要构建经 Amazon ECS 优化的 Linux AMI**

1. 克隆 `aws/amazon-ecs-ami` GitHub 存储库。

   ```
   git clone https://github.com/aws/amazon-ecs-ami.git
   ```

1. 添加 AWS 区域的环境变量以在创建 AMI 时使用。用要使用的区域替换 `us-west-2` 值。

   ```
   export REGION=us-west-2
   ```

1. 提供了一个 Makefile 来构建 AMI。从克隆存储库的根目录中，使用以下命令之一，这对应于要构建的经 Amazon ECS 优化 AMI 的 Linux 变体。
   + 经 Amazon ECS 优化的 Amazon Linux 2 AMI

     ```
     make al2
     ```
   + 经 Amazon ECS 优化的 Amazon Linux 2（arm64）AMI

     ```
     make al2arm
     ```
   + Amazon ECS GPU 优化型 AMI

     ```
     make al2gpu
     ```
   + 经 Amazon ECS 优化的 Amazon Linux 2（Neuron）AMI

     ```
     make al2inf
     ```
   + 经 Amazon ECS 优化的 Amazon Linux 2023 AMI

     ```
     make al2023
     ```
   + 经 Amazon ECS 优化的 Amazon Linux 2023（arm64）AMI

     ```
     make al2023arm
     ```
   + 经 Amazon ECS 优化的 Amazon Linux 2023 GPU AMI

     ```
     make al2023gpu
     ```
   + 经 Amazon ECS 优化的 Amazon Linux 2023（Neuron）AMI

     ```
     make al2023neu
     ```