

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

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

AWS Batch 提供对您的计算环境使用的亚马逊系统映像 (AMI) 的可见性。

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

您可以通过 AWS Batch 控制台或使用 [ des ](https://docs.aws.amazon.com/cli/latest/reference/batch/describe-compute-environments.html) cribe-compute-environments 命令查看计算环境中使用的 AMI 的状态。

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

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

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

计算环境页面显示**批处理映像状态**列，显示每个计算环境`batchImageStatus`的总体情况。如果计算环境有多个 AMI，并且任何一个 AMI 都有可用**更新**，则控制台会显示**更新**适用于整个计算环境。

**注意**  
该状态在计算环境开始针对任何**图像类型进行扩展后出现**。

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

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

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

当您调用 [ describe-compute-en ](https://docs.aws.amazon.com/cli/latest/reference/batch/describe-compute-environments.html) vironments 时，响应中会包含以下值提供 AMI 可见性的`batchImageStatus`字段：
+ `LATEST`— 使用支持的最新 AMI AWS Batch。
+ `UPDATE_AVAILABLE`— 有更新可用。

**注意**  
该`batchImageStatus`字段仅针对 AWS Batch由管理的 AMI 出现。当在`imageId`（已弃用）或默认启动模板中指定自定义 AMI 时`imageIdOverride`，它不会出现。当计算环境有启动模板覆盖时，该状态不会出现。有关如何 AWS Batch 选择 AMI 的更多信息，请参阅[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>

当 AWS Batch 显示 AMI 更新可用时，您可以通过将 “更新 AMI 更新到最新版本” ** 设置为 true 来更新计算环境以使用较新的 AMI。**

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

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

**重要**  
如果你的分配策略是`BEST_FIT`，那么你必须进行[blue/green更新](blue-green-updates.md)。

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

要使用 AWS Batch 控制台更新 AMI，请执行以下操作：

1. 在处打开 AWS Batch 控制台[https://console.aws.amazon.com/batch/](https://console.aws.amazon.com/batch/)。

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

1. 选择计算环境旁边显示更新后的 AMI 状态的选项。在 “**操作” ** 菜单选项可用之前，必须选择计算环境。

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

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

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

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

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

要使用 CLI 更新 AM AWS I，请使用`update-compute-environment`命令。

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

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

------

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

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

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

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

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