本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
计算资源 &AMI;
默认情况下, AWS Batch 托管计算环境使用最新经批准的 Amazon ECS 优化版 AMI 来处理计算资源。但是,您可能出于以下原因需要创建自己的 &AMI; 以用于托管计算环境和非托管计算环境:如果您需要以下任何一项,我们建议您创建自己的 AMI:
-
增加 &AMI; 根卷或数据卷的存储大小
-
为支持的 Amazon EC2 实例类型添加实例存储卷
-
检查 Amazon ECS 容器代理
-
自定义 Docker
-
配置 GPU 工作负载 AMI,它允许容器访问支持的 Amazon EC2 实例类型上的 GPU 硬件
注意
创建计算环境后, AWS Batch 不会升级计算环境中的 AMI。 AWS Batch 当有更新版本的 Amazon ECS 优化的 AMI 可用时,也不会更新您的计算环境中的 AMI。您需要管理客户操作系统。其中包括任何更新和安全补丁。您还负责为在计算资源上安装的任何其他应用程序软件或实用程序。要将新的 AMI 用于您的 AWS Batch 任务,请执行以下操作:
-
使用新的 AMI 创建新计算环境。
-
将计算环境添加到现有作业队列。
-
从作业队列中删除早期的计算环境。
-
删除早期的计算环境。
2022 年 4 月, AWS Batch 增加了对更新计算环境的增强支持。有关更多信息,请参阅 更新计算环境。要使用计算环境的增强更新来更新 AMI,请遵循以下规则:
-
要么不要设置服务角色 (
serviceRole
) 参数,要么将其设置为AWSServiceRoleForBatch服务相关角色。 -
将分配策略(
allocationStrategy
)参数设置为BEST_FIT_PROGRESSIVE
、SPOT_CAPACITY_OPTIMIZED
或SPOT_PRICE_CAPACITY_OPTIMIZED
。 -
将更新到最新图像版本(
updateToLatestImageVersion
)参数设置为true
。 -
请勿在
imageId
、imageIdOverride
(在ec2Configuration
)或启动模板 (launchTemplate
) 中指定 AMI ID。如果您不指定 AMI ID,请 AWS Batch 选择在启动基础设施更新时 AWS Batch 支持的最新 Amazon ECS 优化的 AMI。或者,您可以指定imageIdOverride
参数,而不是imageId
。或者,也可以指定由LaunchTemplate
属性标识的启动模板。更改这些属性中的任何一个都将启动基础架构更新。如果在启动模板中指定了 AMI ID,则不能通过在imageId
或imageIdOverride
参数中指定 AMI ID 来替换它。AMI ID 只能通过指定不同的启动模板进行替换。如果启动模板版本设置为$Default
或$Latest
,则可以通过为启动模板设置新的默认版本(如果$Default
)或向启动模板添加新版本(如果$Latest
)来替换 AMI ID。
如果遵循这些规则,触发基础设施更新的任何更新都将导致重新选择 AMI ID。如果启动模板 (launchTemplate
) 中的version
设置设置为$Latest
或$Default
,则在基础架构更新时会评估启动模板的最新版本或默认版本,即使launchTemplate
未更新。
计算资源 &AMI; 规范
基本 AWS 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 代理未在您的计算资源上运行,则它将无法接受来自的任务 AWS Batch。
经 Amazon ECS 优化的 AMI 已根据这些要求和建议进行了预配置。建议您将经 Amazon ECS 优化的 AMI 或 Amazon Linux AMI 与为您的计算资源安装的 ecs-init
程序包一起使用。如果您的应用程序需要特定的操作系统或这些 AMI 中尚未提供的 Docker 版本,请选择另一个 AMI。有关更多信息,请参阅 Amazon Elastic Container Service 开发人员指南中的 经Amazon ECS 优化的 AMI。