计算资源 AMI - Amazon Batch
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

计算资源 AMI

默认情况下,Amazon Batch托管计算环境使用最新的、经批准的 Amazon ECS 优化版 AMI 作为计算资源。但是,您可能需要创建自己的 AMI,用于托管和非托管计算环境。如果您需要以下任何一项,我们建议您创建自己的 AMI:

  • 增加 AMI 根或数据卷的存储大小

  • 为支持的 Amazon EC2 实例类型添加实例存储量

  • 自定义亚马逊 ECS 容器代理

  • 自定义 Docker

  • 配置 GPU 工作负载 AMI 以允许容器访问支持的 Amazon EC2 实例类型上的 GPU 硬件

注意

创建计算环境后,Amazon Batch不升级计算环境中的 AMI。 Amazon Batch当有更新版本的 Amazon ECS 优化的 AMI 可用时,也不会更新计算环境中的 AMI。您负责管理客户机操作系统。这包括所有更新和安全补丁。您还应对在计算资源上安装的任何其他应用程序软件或实用程序负责。要在Amazon Batch任务中使用新的 AMI,请执行以下操作:

  1. 使用新的 AMI 创建新计算环境。

  2. 将计算环境添加到现有作业队列。

  3. 从您的作业队列中删除早期的计算环境。

  4. 删除早期的计算环境。

2022 年 4 月,Amazon Batch 增加了对更新计算环境的增强支持。有关更多信息,请参阅更新计算环境:要使用计算环境的增强更新来更新 AMI,请遵循以下规则:

  • 要么不要设置服务角色 (serviceRole) 参数,要么将其设置为AWSServiceRoleForBatch服务相关角色。

  • 将分配策略 (allocationStrategy) 参数设置为BEST_FIT_PROGRESSIVESPOT_CAPACITY_OPTIMIZED

  • 将 “更新到最新图像版本 (updateToLatestImageVersion)” 参数设置为true

  • 不要在imageIdimageIdOverride(输入)或启动模板(ec2ConfigurationlaunchTemplate)中指定 AMI ID。如果您未指定 AMI ID,则Amazon Batch选择在启动基础设施更新时Amazon Batch支持的最新 Amazon ECS 优化的 AMI。或者,您可以在imageIdimageIdOverride参数中指定 AMI ID。或者,您可以指定由LaunchTemplate属性标识的启动模板。更改这些属性中的任何一个都会启动基础架构更新。如果在启动模板中指定了 AMI ID,则不能通过在imageIdimageIdOverride参数中指定 AMI ID 来替换 AMI ID。只能通过指定不同的启动模板来替换 AMI ID。如果启动模板版本设置为$Default$Latest,则可以通过为启动模板设置新的默认版本(如果$Default)或向启动模板添加新版本(如果)来替换 AMI ID。$Latest

如果遵循这些规则,则启动基础设施更新的任何更新都会导致重新选择 AMI ID。如果启动模板 (launchTemplate) 中的version设置设置为$Latest$Default,则在基础架构更新时会评估启动模板的最新版本或默认版本,即使该版本launchTemplate未更新。

计算资源 AMI 规范

基本Amazon Batch计算资源 AMI 规范包含以下内容:

必填

  • 一种现代 Linux 发行版,在 HVM 虚拟化类型 AMI 上运行至少 3.10 版的 Linux 内核。不支持 Windows 容器。

    重要

    多节点并行作业只能在安装了ecs-init软件包的 Amazon Linux 实例上启动的计算资源上运行。我们建议您在创建计算环境时使用默认 Amazon ECS 优化的 AMI。您可以通过不指定自定义 AMI 来实现此目的。有关更多信息,请参阅多节点并行作业

  • 亚马逊 ECS 容器代理。建议您使用最新的 版本。有关更多信息,请参阅亚马逊弹性容器服务开发人员指南中的安装 Amazon ECS 容器代理

  • 启动 Amazon ECS 容器代理时,必须将日志驱动程序指定为带有ECS_AVAILABLE_LOGGING_DRIVERS环境变量的可用日志驱动程序。awslogs有关更多信息,请参阅《Amazon Elastic Container Service 开发人员指南》中的 Amazon ECS 容器代理配置

  • 运行至少版本 1.9 的 Docker 守护程序以及任何 Docker 运行时依赖关系。有关更多信息,请参阅 Docker 文档中的检查运行时依赖项

    注意

    我们建议您使用 Docker 版本,该版本附带并使用您正在使用的相应的 Amazon ECS 代理版本进行了测试。有关更多信息,请参阅《亚马逊弹性容器服务开发者指南》中的 Amazon ECS 容器代理版本

推荐

  • 用于运行和监控 Amazon ECS 代理的初始化和保密过程。Amazon ECS 优化的 ecs-init AMI 使用启动进程,其他操作系统可能会使用systemd。有关更多信息和示例,请参阅 Amazon Elastic 容器服务开发人员指南中的示例容器实例用户数据配置脚本。有关的更多信息ecs-init,请参阅上的ecs-init项目GitHub。托管计算环境至少需要 Amazon ECS 代理在启动时启动。如果 Amazon ECS 代理未在您的计算资源上运行,则它无法接受来自的任务Amazon Batch。

Amazon ECS 优化的 AMI 已预先配置了这些要求和建议。我们建议您使用亚马逊 ECS 优化的 AMI 或亚马逊 Linux AMI 以及为您的计算资源安装的ecs-init软件包。如果您的应用程序需要特定的操作系统或那些 AMI 中尚不可用的 Docker 版本,请选择其他 AMI。有关更多信息,请参阅亚马逊弹性容器服务开发人员指南中的亚马逊 ECS 优化的 AMI