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

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

计算资源 &AMI;

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

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

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

  • 检查 Amazon ECS 容器代理

  • 自定义 Docker

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

注意

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

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

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

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

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

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

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

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

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

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

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

计算资源 &AMI; 规范

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

必填

  • 在 HVM 虚拟化类型 &AMI; 上运行至少 3.10 版 Linux 内核的现代 Linux 分配。不支持 Windows 容器。

    重要

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

  • 停止 Amazon ECS 容器代理。建议您使用最新的 版本。有关更多信息,请参阅Amazon Elastic Container Service 开发人员指南中的安装 Amazon ECS 容器代理

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

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

    注意

    要获得最佳体验,建议您使用所使用的相应 Amazon ECS 容器 代理版本附带的且经测试的 Docker 版本。Amazon ECS 提供了针对亚马逊 ECS 优化的 AMI 的 Linux 变体的变更日志。 GitHub有关更多信息,请参阅更改日志

推荐

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

经 Amazon ECS 优化的 AMI 已根据这些要求和建议进行了预配置。建议您将经 Amazon ECS 优化的 AMI 或 Amazon Linux AMI 与为您的计算资源安装的 ecs-init程序包一起使用。如果您的应用程序需要特定的操作系统或这些 AMI 中尚未提供的 Docker 版本,请选择另一个 AMI。有关更多信息,请参阅 Amazon Elastic Container Service 开发人员指南中的 经Amazon ECS 优化的 AMI