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

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

计算环境

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

注意

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

托管计算环境

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

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

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

注意

Amazon Batch创建计算环境后,不会自动升级该计算环境中的 AMI。例如,当有更新版本的 Amazon ECS 优化的 AMI 可用时,它也不会更新您计算环境中的 AMI。你负责管理客户机操作系统。这包括任何更新和安全补丁。您还负责在计算资源上安装的任何其他应用程序软件或实用程序。有两种方式可执行此操作要为您的使用新的 AMIAmazon Batch工作. 最初的方法是完成这些步骤:

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

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

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

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

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

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

  • 设置分配策略 (allocationStrategy) 参数BEST_FIT_PROGRESSIVE要么SPOT_CAPACITY_OPTIMIZED.

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

  • 请勿在中指定 AMI IDimageIdimageIdOverride(在ec2Configuration) 或者在启动模板中 (launchTemplate)。在这种情况下Amazon Batch将选择最新的 Amazon ECS 优化的 AMI,Amazon Batch在启动基础架构更新时。或者,您可以在imageId要么imageIdOverride参数或由LaunchTemplate属性。更改其中任何属性都将触发基础架构更新。如果在启动模板中指定了 AMI ID,则无法通过在imageId要么imageIdOverride参数。只能通过指定不同的启动模板或启动模板版本设置为来替换它$Default要么$Latest,可通过设置启动模板的新默认版本(如果$Default) 或者通过向启动模板添加新版本(如果$Latest)。

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

非托管计算环境

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

注意

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

在创建非托管计算环境后,请使用DescribeComputeEnvironments查看计算环境详细信息的 API 操作。找到与环境关联的 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