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

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

计算环境

作业队列映射到一个或多个计算环境。计算环境包含用于运行容器化批处理任务的 Amazon ECS 容器实例。特定的计算环境也可以映射到一个或多个作业队列。在作业队列中,每个关联的计算环境都有一个顺序,调度器使用该顺序来确定准备运行的作业将在何处运行。如果第一个计算环境的状态为VALID并且有可用资源,则任务将调度到该计算环境中的容器实例。如果第一个计算环境的状态为INVALID或无法提供合适的计算资源,则调度器会尝试在下一个计算环境上运行作业。

注意

Amazon Batch不支持 Fargate 或 EC2 资源上的 Windows 容器。

托管计算环境

您可以使用托管计算环境来满足业务需求。在托管计算环境中,您可以使用Amazon Batch来管理环境中计算资源的容量和实例类型。这基于您在创建计算环境时定义的计算资源规范。您可以选择使用 EC2 按需实例和 EC2 Spot 实例。或者,您可以或者在托管计算环境中使用 Fargate 和 Fargate Spot 容量。您可以选择设置最高价格。这样,Spot 实例仅在 Spot 实例价格低于按需价格的某个指定百分比时启动。

托管计算环境将 Amazon ECS 容器实例启动到您在创建计算环境时指定的 VPC 和子网中。Amazon ECS 容器实例需要外部网络访问权限以便与 Amazon ECS 服务终端节点进行通信。有些子网不为容器实例提供公有 IP 地址。如果您的容器实例没有公有 IP 地址,必须使用网络地址转换(NAT)来获得此访问。有关更多信息,请参阅 Amazon VPC 用户指南中的 NAT 网关。有关如何创建 VPC 的更多信息,请参阅创建 Virtual Cloud

默认情况下,Amazon Batch托管计算环境使用了最近批准的 Amazon ECS 优化的 AMI 来计算资源。但是,出于各种原因,您可能需要创建自己的 AMI 以用于托管计算环境。有关更多信息,请参阅 计算资源 AMI

注意

Amazon Batch创建计算环境后,不会自动升级该计算环境中的 AMI。例如,当有更新版本的 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。在这种情况下,Amazon Batch选择启动基础设施更新时支持的最新 Amazon ECS 优化 AMI。Amazon Batch或者,您可以在imageIdimageIdOverride参数或者LaunchTemplate属性标识的启动模板中指定 AMI ID。更改这些属性中的任何一个都将启动基础设施更新。如果在启动模板中指定了 AMI ID,则不能通过在imageIdimageIdOverride参数中指定 AMI ID 来替换它。只能通过指定不同的启动模板来进行替换。或者,如果启动模板版本设置为$Default$Latest,则通过为启动模板设置新的默认版本(如果是$Default)或向启动模板添加新版本(如果是$Latest)。

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

非托管计算环境

在非托管计算环境中,您需要管理自己的计算资源。必须验证您用于计算资源的 AMI 是否符合 Amazon ECS 容器实例 AMI 规范。有关更多信息,请参阅 计算资源 AMI 规范创建计算资源 AMI

注意

Amazon非托管计算环境不支持 Fargate 资源。

创建非托管计算环境后,使用 DescribeComputeEnvironmentsAPI 操作查看计算环境的详细信息。找到与环境关联的 Amazon ECS 集群,然后手动将容器实例启动到该 Amazon ECS 集群中。

以下Amazon CLI命令还提供了 Amazon ECS 集群 ARN。

$ aws batch describe-compute-environments \ --compute-environments unmanagedCE \ --query "computeEnvironments[].ecsClusterArn"

有关更多信息,请参阅 Amazon Elastic Container Service 开发人员指南中的启动 Amazon ECS 容器实例。当您启动计算资源时,请指定资源使用以下 Amazon EC2 用户数据注册的 Amazon ECS 集群 ARN。ecsClusterArn替换为您在之前的命令中获得的集群 ARN。

#!/bin/bash echo "ECS_CLUSTER=ecsClusterArn" >> /etc/ecs/ecs.config