

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

# AMI 选择顺序
<a name="ami-selection-order"></a>

Amazon Batch 使用以下优先顺序确定计算资源的亚马逊系统映像 (AMI)。了解此顺序有助于您了解为何为您的计算环境 Amazon Batch 选择特定 AMI：

1. **启动模板覆盖 AMI**-如果已启动实例的启动模板覆盖有图像，则使用其映像。

1. **计算资源映像 ID（已弃用）**-如果已设置，则使用此计算环境 AMI。*注意：已弃用的字段；使用 ec2Configuration。 imageIdOverride 相反。*

1. **EC2 配置映像 ID 覆盖**-如果指定，则使用此字段中的图像。

1. **启动模板 AMI**-如果计算环境具有与图像关联的启动模板，则将使用此映像。

1. **Amazon 默认 AMI**-如果以上均未配置，则根据 EC2Configuration 中指定的图像类型 Amazon Batch 选择默认 AMI。

**注意**  
ec2Configuration 参数是可选的。如果省略，则根据在计算环境中启动的实例类型 Amazon Batch 自动选择适当的 EC2Configuration 和默认 AMI。

**注意**  
此 AMI 选择顺序不适用于 Fargate 计算环境。

## AMI 选择顺序从最高到最低优先级
<a name="ami-order"></a>

1. **启动模板覆盖 AMI**（优先级最高）

   **API 字段：**`overrides[].launchTemplateId`包含目标实例类型

   **参考：[LaunchTemplateSpecification](https://docs.amazonaws.cn/batch/latest/APIReference/API_LaunchTemplateSpecification.html)**

   覆盖模板针对特定的实例类型，并提供比默认启动模板更精细的控制。在匹配实例类型方面，它们优先于所有其他 AMI 规范。

   ```
   {
     "computeResources": {
       "launchTemplate": {
         "launchTemplateId": "lt-default",
         "overrides": [
           {
             "launchTemplateId": "lt-gpu-optimized",
             "targetInstanceTypes": ["p3.2xlarge", "g4dn.xlarge"]
           }
         ]
       }
     }
   }
   ```

1. **计算资源镜像 ID**

   **API 字段：**`computeResources.imageId`

   **参考：[CreateComputeEnvironment](https://docs.amazonaws.cn/batch/latest/APIReference/API_CreateComputeEnvironment.html)**

   您可以直接在计算环境级别指定 AMI。这优先于 EC2 配置覆盖和启动模板（覆盖模板除外）。

   在具有多个 EC2 配置（例如`ECS_AL2023`和`ECS_AL2023_NVIDIA`）的计算环境中，此处指定的 AMI ID 用于所有 EC2 配置。
**重要**  
该`imageId`字段已被弃用。请`ec2Configuration.imageIdOverride`改用。

   ```
   {
     "computeResources": {
       "imageId": "ami-12345678",
       "instanceTypes": ["m5.large", "m5.xlarge"]
     }
   }
   ```

1. **EC2 配置映像 ID 覆盖**

   **API 字段：**`computeResources.ec2Configuration[].imageIdOverride`

   **参考：**[Ec2 配置](https://docs.amazonaws.cn/batch/latest/APIReference/API_Ec2Configuration.html)

   EC2 配置提供特定于图像类型的替换。此设置将覆盖指定图像类型的默认 AMI 选择并启动模板 AMI。

   ```
   {
     "computeResources": {
       "ec2Configuration": [
         {
           "imageType": "ECS_AL2",
           "imageIdOverride": "ami-87654321"
         }
       ]
     }
   }
   ```

1. **启动模板 AMI**

   **API 字段：**`ImageId`在 Amazon EC2 启动模板中

   **参考：**[使用 Amazon EC2 启动模板和 Amazon Batch](launch-templates.md)

   当您在启动模板中指定 AMI 时，它优先于默认 AMI 选择，但会被更高的优先级设置所覆盖。

   ```
   // EC2 Launch Template content
   {
     "LaunchTemplateName": "my-batch-template",
     "LaunchTemplateData": {
       "ImageId": "ami-12345678"
     }
   }
   ```

   由 Amazon Batch 启动模板引用：

   ```
   // Batch Launch Template content
   {
     "computeResources": {
       "launchTemplate": {
         "launchTemplateName": "my-batch-template",
         "version": "$Latest"
       }
     }
   }
   ```

1. **Amazon 默认 AMI**（最低优先级）

   **API 字段：**由 `computeResources.ec2Configuration[].imageType`

   **参考：**[Ec2 配置图片类型](https://docs.amazonaws.cn/batch/latest/APIReference/API_Ec2Configuration.html)

   如果未指定自定义 AMI，则根据图像 Amazon Batch 类型自动选择最新批准的 Amazon Amazon ECS 优化的 AMI。
**注意**  
`ec2Configuration`是可选的。 Amazon Batch 如果未`ec2Configuration`指定，将选择相应的默认 AMI。

   ```
   {
     "computeResources": {
       "ec2Configuration": [
         {
           "imageType": "ECS_AL2023"
         }
       ]
     }
   }
   ```