

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 在计算环境中管理 AMI 版本
<a name="managing-ami-versions"></a>

Amazon Batch 提供对您的计算环境使用的 Amazon 系统映像 (AMIs) 的可见性。

## 查看 AMI 状态
<a name="viewing-ami-status"></a>

您可以通过 Amazon Batch 控制台或 AMIs 使用[describe-compute-environments](https://docs.amazonaws.cn/cli/latest/reference/batch/describe-compute-environments.html)命令查看计算环境中使用的状态。

------
#### [ Console ]

在 Amazon Batch 控制台中，AMI 状态信息显示在两个位置，其状态值如下：
+ 最@@ **新**-使用支持的最新 AMI Amazon Batch。
+ **更新可用**-有更新可用。

**注意**  
仅显示 Amazon Batch托管 AMIs的 AMI 状态信息。在`imageId`（已弃用）、或默认启动模板中指定图像时`imageIdOverride`，状态不会出现。当计算环境有启动模板覆盖时，该状态不会出现。有关 AMI 选择的更多信息，请参阅[AMI 选择顺序](ami-selection-order.md)。

计算环境页面显示一个 B **atch 映像状态**列，其中显示了每个计算环境`batchImageStatus`的总体情况。如果一个计算环境有多个 AMIs 且任何一个 AMI 有**可用的更新**，则控制台会显示整个计算环境都**可以使用更新**。

**注意**  
该状态将在计算环境开始缩放任何**图像类型**后出现。

在计算环境详细信息页面上，计算**资源选项卡的 Ec **2 配置**部分显示了计算****环境中每**种映像类型的**批处理映像状态**。如果一种**图像类型**有多个， AMIs 并且任何一个 AMI 有**可用的更新**，则控制台会显示该**图像类型的****更新可用**。

**注意**  
只有在计算环境开始缩放该特定**图像类型的**实例之后，才会显示每**种图像类型的**状态。

------
#### [ CLI ]

在您调用时 [describe-compute-environments](https://docs.amazonaws.cn/cli/latest/reference/batch/describe-compute-environments.html)，响应中包含可提供 AMI 可见性的`batchImageStatus`字段，其值如下：
+ `LATEST`— 使用支持的最新 AMI Amazon Batch。
+ `UPDATE_AVAILABLE`— 有更新可用。

**注意**  
该`batchImageStatus`字段仅针对 Amazon Batch-managed 出现。 AMIs在`imageId`（已弃用）、或默认启动模板中指定自定义 AMIs 时`imageIdOverride`，它不会出现。当计算环境有启动模板覆盖时，该状态不会出现。有关如何 Amazon Batch 选择的更多信息 AMIs，请参阅[AMI 选择顺序](ami-selection-order.md)。  
每个字段都独立显示，`Ec2Configuration`并且仅在计算环境开始使用该字段扩展实例之后`imageType`。

```
{
    "computeEnvironments": [
        {
            "computeEnvironmentName": "my-compute-environment",
            "computeResources": {
                "ec2Configuration": [
                    {
                        "imageType": "ECS_AL2023"
                    },
                    {
                        "imageType": "ECS_AL2023_NVIDIA",
                        "batchImageStatus": "UPDATE_AVAILABLE"
                    }
                ]
            }
        }
    ]
}
```

------

## 更新 AMI 版本
<a name="updating-ami-versions"></a>

当 Amazon Batch 表示有 AMI 更新可用时，您可以 AMIs 通过将 **AMI 更新到最新版本设置为 true 来更新计算环境来更新计算环境以使用更新的版本**。

您无需指定新的 AMI，当您将 “**更新 AMI IDs ” 设置为最新版本 AMIs 时， Amazon Batch 会自动选择支持的最新版本**。

**重要**  
更新 AMIs 会触发[基础架构更新](infrastructure-updates.md)，而不是扩展更新。这意味着 Amazon Batch 用使用更新后的 AMI 的新实例替换现有实例。更新过程比扩展更新需要更长的时间，并且可能会中断正在运行的作业，具体取决于您的更新策略配置。

**重要**  
如果您的分配策略是`BEST_FIT`，则必须执行[蓝/绿更新](blue-green-updates.md)。

------
#### [ Console ]

要 AMIs 使用 Amazon Batch 控制台进行更新，请执行以下操作：

1. 打开 Amazon Batch 控制台，网址为[https://console.aws.amazon.com/batch/](https://console.amazonaws.cn/batch/)。

1. 在导航窗格中，选择**环境**。

1. 选择显示有更新的 AMI 状态的计算环境。

1. 选择 “**立即更新**”（按 AMI 状态）或 “**操作****” > “编辑”** 以打开更新模式。

1. 在 AMI 更新模式中，查看当前 AMI 版本及其状态。

1. 选择 “**确认**” 或 “**保存**” 开始基础架构更新。

在基础架构更新`UPDATING`期间，计算环境的状态会更改为。您可以在 控制台中监控进度。

------
#### [ CLI ]

要 AMIs 使用 Amazon CLI 进行更新，请使用`update-compute-environment`命令。

```
aws batch update-compute-environment \
    --compute-environment my-compute-environment \
    --compute-resources updateToLatestImageVersion=true
```

此命令会触发基础设施更新，使用 Amazon Batch支持 AMIs的最新实例将实例替换为新实例。

------

## 自定义 AMI 注意事项
<a name="custom-ami-considerations"></a>

如果您的计算环境使用自定义 AMIs，即在`ComputeResources.imageId`（已弃用）中 AMIs 指定`Ec2Configuration.imageIdOverride`，则默认启动模板或启动模板会被覆盖， Amazon Batch 则无法提供这些模板的状态信息。 AMIs
+ **状态可见性** — 在控制台中为其 Batc **h 图像状态**自定义 AMIs 显示 “**-**”，并且不在 API 响应中包含该`batchImageStatus`字段。
+ **手动管理**-您负责维护和更新自定义 AMIs。随时了解您的 AMI 提供商提供的安全和软件补丁，并 AMIs 相应地更新您的自定义补丁。
+ **EC2 管理** — 使用 Amazon EC2 控制台或 APIs 管理自定义 AMI 生命周期，包括创建新版本和弃用旧版本。

有关管理自定义的更多信息 AMIs，请参阅[计算资源 AMIs](compute_resource_AMIs.md)。

## AMI 更新的最佳实践
<a name="ami-update-best-practices"></a>

本节适用于自定义和默认 AMIs。
+ **定期监控**-定期检查计算环境的 AMI 状态，以确定何时有更新可用。默认情况下 AMIs，`batchImageStatus`将在有更新可用时显示。对于自定义 AMIs，您需要使用其他资源，例如 Amazon 安全公告。
+ **维护时段** — 在可以接受任务中断的情况下，在维护时段内安排 AMI 更新，因为基础架构更新会取代现有实例。
+ **Job 重试策略** — 配置作业重试策略以处理在基础架构更新期间可能中断的作业。有关更多信息，请参阅 [自动作业重试](job_retries.md)。
+ **更新策略配置**-配置适当的更新策略以控制在基础架构更新期间如何处理正在运行的作业。有关更多信息，请参阅 [执行基础设施更新](infrastructure-updates.md)。
+ **测试** — 在将 AMI 更新应用于生产计算环境之前，先在开发环境中对其进行测试。