

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

# 教程：创建计算资源 AMI
<a name="create-batch-ami"></a>

您可以创建您自己的自定义计算资源 AMI 以用于托管计算环境和非托管计算环境。有关说明，请参阅 [计算资源 &AMI; 规范](batch-ami-spec.md)。在创建自定义 AMI 后，您可以创建一个使用该 AMI 的计算环境，将此环境与一个任务队列关联，然后开始将任务提交到该队列。最后，开始向该队列提交作业。

**创建自定义计算资源 &AMI;**

1. 选择从中启动的基本 &AMI;。AMI 必须使用 HVM 虚拟化。基础 AMI 不能是 Windows AMI。
**注意**  
您为计算环境选择的 AMI 必须与您打算用于该计算环境的实例类型的架构匹配。例如，如果您的计算环境使用 A1 实例类型，则您选择的计算资源 AMI 必须支持 ARM 实例。Amazon ECS 同时提供 Amazon ECS 优化型 Amazon Linux 2 AMI 的 x86 和 ARM 版本。有关更多信息，请参阅*《Amazon Elastic Container Service 开发人员指南》*中的[经过 Amazon ECS 优化的 Amazon Linux 2 AMI](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html#ecs-optimized-ami-linux-variants.html)。

   经 Amazon ECS 优化的 Amazon Linux 2 AMI 是托管计算环境中的计算资源的默认 AMI。优化的亚马逊 ECS Amazon Linux 2 AMI 已 AWS Batch 由 AWS 工程师进行预配置和测试。这是一款最低限度的 AMI，您可以开始使用它并让您的计算资源 AWS 快速运行。有关更多信息，请参阅* Amazon Elastic Container Service 开发人员指南*中的 [经Amazon ECS 优化的 AMI](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html)。

   或者，您可以选择另一个 Amazon Linux 2 变体，并使用以下命令安装 `ecs-init` 程序包：有关更多信息，请参阅[《亚马逊弹性容器*服务开发人员指南》中的在 Amazon Linux 2 EC2 实例上安装 Amazon ECS 容器*代理](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-install.html#ecs-agent-install-al2)：

   ```
   $ sudo amazon-linux-extras disable docker
   $ sudo amazon-linux-extras install ecs-init
   ```

   例如，如果您想在 AWS Batch 计算资源上运行 GPU 工作负载，则可以从 [Amazon Linux 深度学习 AMI](https://aws.amazon.com/marketplace/pp/B01M0AXXQB) 开始。然后，将 AMI 配置为运行 AWS Batch 作业。有关更多信息，请参阅 [使用 GPU 工作负载 AMI](batch-gpu-ami.md)。
**重要**  
您可以选择不支持 `ecs-init` 软件包的基础 AMI。但是，如果这样做，则必须配置一种在启动时启动 Amazon ECS 代理并使其保持运行的方法。您还可以查看几个使用 `systemd` 启动和监控 Amazon ECS 容器代理的用户数据配置脚本示例。有关更多信息，请参阅* Amazon Elastic Container Service 开发人员指南*中的[示例容器实例用户数据配置脚本](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/example_user_data_scripts.html)。

1. 使用适用于 &AMI; 的存储选项从选定的基本 &AMI; 启动实例。您可以配置附加的 Amazon EBS 卷或实例存储卷 (如果选定实例类型支持实例存储卷) 的大小和数量。有关更多信息，请参阅亚马逊* EC2 用户指南中的[启动 EC2 实例](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/launching-instance.html)和亚马逊*[实例存储](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html)。

1. 使用 SSH 连接到您的实例并执行任何必要的配置任务，例如：SSH这可能包括以下任一或所有步骤：
   + 安装 Amazon ECS 容器代理 有关更多信息，请参阅 *Amazon Elastic Container Service 开发人员指南*中的[安装 Amazon ECS 容器代理](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-install.html)。
   + 配置脚本以设置实例存储卷的格式。
   + 将实例存储卷或 Amazon EFS 文件系统添加到 `/etc/fstab` 文件，以便它们在系统启动时挂载。
   + 配置 Docker 选项 (启用调试、调整基本映像大小等)。
   + 安装程序包或复制文件。

   有关更多信息，请参阅 *Amazon EC2 用户指南*中的[使用 SSH 连接您的 Linux 实例](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html)。

1. 如果您在实例上启动了 Amazon ECS 容器代理，则在创建 AMI 之前，必须将其停止并移除所有永久性数据检查点文件。否则，如果您不这样做，代理不会在从您的 AMI 启动的实例上启动。

   1. 停止 Amazon ECS 容器代理。
      + 经 Amazon ECS 优化的 Amazon ECS Amazon Linux 2 AMI：

        ```
        sudo systemctl stop ecs
        ```
      + 经 Amazon ECS 优化的 Amazon ECS Amazon Linux AMI：

        ```
        sudo stop ecs
        ```

   1. 删除持久性数据检查点文件。默认情况下，该文件位于以下 `/var/lib/ecs/data/` 目录中。使用以下命令删除这些文件（如果有）。

      ```
      sudo rm -rf /var/lib/ecs/data/*
      ```

1. 从正在运行的实例创建新的 &AMI;。有关更多信息，请参阅亚马逊* EC2 用户指南指南*中的[创建由亚马逊 EBS 支持的 Linux AMI](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/creating-an-ami-ebs.html)。

**要将您的新 AMI 与 AWS Batch**

1. 使用新的 AMI 创建新计算环境。为此，请在创建 AWS Batch 计算环境时选择映像类型并在**映像 ID 覆盖**框中输入自定义 AMI ID。有关更多信息，请参阅 [教程：使用 Amazon EC2 资源创建托管计算环境](create-compute-environment-managed-ec2.md)。
**注意**  
您为计算环境选择的 AMI 必须与您打算用于该计算环境的实例类型的架构匹配。例如，如果您的计算环境使用 A1 实例类型，则您选择的计算资源 AMI 必须支持 ARM 实例。Amazon ECS 同时提供 Amazon ECS 优化型 Amazon Linux 2 AMI 的 x86 和 ARM 版本。有关更多信息，请参阅*《Amazon Elastic Container Service 开发人员指南》*中的[经过 Amazon ECS 优化的 Amazon Linux 2 AMI](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html#ecs-optimized-ami-linux-variants.html)。

1. 创建作业队列并关联新计算环境。有关更多信息，请参阅 [创建作业队列](create-job-queue.md)。
**注意**  
与作业队列关联的所有计算环境必须共享同一架构。 AWS Batch 不支持在单个作业队列中混合使用计算环境架构类型。

1. （可选）将示例作业提交到新作业队列。有关更多信息，请参阅 [作业定义示例](example-job-definitions.md)、[创建单节点作业定义](create-job-definition.md) 和 [教程：提交作业](submit_job.md)。