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

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

计算环境参数

计算环境分为几个基本组成部分:计算环境的名称、类型和状态、计算资源定义(如果是托管计算环境)、Amazon EKS配置(如果使用 Amazon EKS 资源)、用于向 Amazon Batch 提供 IAM 权限的服务角色以及计算环境的标记。

计算环境名称

computeEnvironmentName

您的计算环境的名称。名称长度不超过 128 个字符。可以包含大小写字母、数字、连字符(-)和下划线(_)。

类型:字符串

必需:是

类型

type

计算环境的类型。选择 MANAGED 可让 Amazon Batch 管理您定义的 EC2 或 Fargate 计算资源。有关更多信息,请参见 计算资源。选择 UNMANAGED 可管理您自己的 EC2 计算资源。

类型:字符串

有效值:MANAGED | UNMANAGED

必需:是

状态

state

计算环境的状态。

如果状态为 ENABLED,则 Amazon Batch 计划程序会尝试将任务放在环境中。这些作业来自计算资源上的关联作业队列。如果计算环境是托管计横向扩展算环境,则实例会根据作业队列需求自动横向扩展或向内扩展。

如果状态为 DISABLED,则 Amazon Batch 计划程序不会尝试将作业放在环境中。处于 STARTINGRUNNING 状态的作业将继续正常运行。处于 DISABLED 状态的托管计算环境无法横向扩展。

注意

处于 DISABLED 状态的计算环境可能会继续产生账单费用。为防止额外收费,请关闭计算环境,然后将其删除。有关更多信息,请参阅Amazon Billing 用户指南内的 Amazon Batch API 参考中的 DeleteComputeEnvironment 以及避免意外费用

当实例处于空闲状态时,该实例会缩小到 minvCpus 值。但是,实例大小不会变化。例如,假设一个 minvCpus 值为 4desiredvCpus 值为 36c5.8xlarge 实例。此实例不会缩减为 c5.large 实例。

类型:字符串

有效值:ENABLED | DISABLED

必需:否

计算资源

computeResources

由计算环境托管的计算资源的详细信息。有关更多信息,请参见 计算环境

类型:ComputeResource 对象

必需:此参数是托管计算环境所必需的

type

计算环境的类型。您可以选择使用 EC2 按需实例 (EC2) 和 EC2 Spot 实例 (SPOT),或者在托管计算环境中使用 Fargate 容量 (FARGATE) 和 Fargate Spot 容量 (FARGATE_SPOT)。如果选择 SPOT,则还必须使用 spotIamFleetRole 参数指定 Amazon EC2 Spot 队列角色。有关更多信息,请参见 Amazon EC2 竞价型实例集角色

有效值:EC2 | SPOT | FARGATE | FARGATE_SPOT

必需:是

allocationStrategy

如果无法分配最佳匹配 EC2 实例类型的足够实例时,要用于计算资源的分配策略。这可能是由于 Amazon Web Services 区域 中的实例类型可用性或 Amazon EC2 服务限制所致。有关更多信息,请参见 分配策略

注意

此参数不适用于在 Fargate 资源上运行的作业。

BEST_FIT(默认值)

Amazon Batch 会选择最适合作业要求的实例类型,并优先考虑成本最低的实例类型。如果选定实例类型没有额外实例可用,Amazon Batch将等待额外实例可用。如果没有足够可用的实例,或如果您达到 Amazon EC2 服务限制,则其他作业将在当前运行的作业完成以后不会运行。此分配策略可降低成本,但会限制扩展。如果将 Spot 队列与 BEST_FIT 一起使用,则必须指定 Spot 队列 IAM 角色。使用 BEST_FIT 分配策略的计算资源不支持基础架构更新,也无法更新某些参数。有关更多信息,请参见 更新计算环境

注意

使用 Amazon EKS 资源的计算环境不支持 BEST_FIT

BEST_FIT_PROGRESSIVE

使用足够大的、能够满足队列中作业要求的额外实例类型。首选每单位 vCPU 成本较低的实例类型。如果以前选择的实例类型没有可用的额外实例,Amazon Batch 将选择新的实例类型。

SPOT_CAPACITY_OPTIMIZED

(仅适用于 Spot 实例计算资源)使用足够大的其他实例类型,以满足队列中作业的要求。首选不太可能被中断的实例类型。

SPOT_PRICE_CAPACITY_OPTIMIZED

(仅适用于 Spot 实例计算资源)价格和容量优化分配策略同时考虑价格和容量,以选择中断可能性最小、价格尽可能低的竞价型实例池。

注意

建议在大多数情况下使用SPOT_PRICE_CAPACITY_OPTIMIZED而不是SPOT_CAPACITY_OPTIMIZED

借助采用按需型或竞价型实例的 BEST_FIT_PROGRESSIVESPOT_CAPACITY_OPTIMIZEDSPOT_PRICE_CAPACITY_OPTIMIZED 策略,以及采用竞价型实例的 BEST_FIT 策略,Amazon Batch 可能需要超出 maxvCpus 以满足您的容量要求。在这种情况下,Amazon Batch始终不会超过maxvCpus一个以上的实例。

有效值:BEST_FIT | BEST_FIT_PROGRESSIVE | SPOT_CAPACITY_OPTIMIZED | SPOT_PRICE_CAPACITY_OPTIMIZED

必需:否

minvCpus

环境保留的 vCPU 的最小数量(即使计算环境为 DISABLED)。

注意

此参数不适用于在 Fargate 资源上运行的作业。

类型:整数

必需:否

maxvCpus

Amazon Batch 计算环境可以支持的最大 vCPU 数量。

注意

借助采用按需型或竞价型实例的 BEST_FIT_PROGRESSIVESPOT_CAPACITY_OPTIMIZEDSPOT_PRICE_CAPACITY_OPTIMIZED 分配策略,以及采用竞价型实例的 BEST_FIT 策略,Amazon Batch 可能需要超出 maxvCpus 以满足您的容量要求。在这种情况下,Amazon Batch始终不会超过maxvCpus一个以上的实例。例如,在计算环境中指定的实例中,Amazon Batch 最多使用一个实例。

类型:整数

必需:否

desiredvCpus

计算环境中所需的 vCPU 数。Amazon Batch 根据任务队列需求,将此值修改为介于最小值和最大值之间。

注意

此参数不适用于在 Fargate 资源上运行的作业。

类型:整数

必需:否

instanceTypes

可启动的实例类型。此参数不适用于在 Fargate 资源上运行的作业。不要指定此参数。您可以指定实例系列以在这些系列中启动任何实例类型(例如,c5c5np3),或者,您可以指定系列中的特定大小(例如 c5.8xlarge)。请注意,裸机实例类型不包括在实例系列中(例如,c5 不包括 c5.metal)。还可以通过选择 optimal 来选择符合作业队列需求的实例类型(从 C4、M4 和 R4 实例系列中)。

注意

在创建一个计算环境时,为该计算环境选择的实例类型必须共享同一架构。例如,您不能在同一个计算环境中混用 x86 和 ARM 实例。

注意

目前,optimal 使用 C4、M4 和 R4 实例系列中的实例类型。在没有属于这些实例系列的实例类型的 Amazon Web Services 区域 中,使用 C5、M5 和 R5 实例系列的实例类型。

类型:字符串数组

必需:是

imageId

此参数已被弃用。

用于计算环境中启动的实例的 Amazon 系统映像 (AMI) ID。此参数被 Ec2Configuration 结构的 imageIdOverride 成员覆盖。

注意

此参数不适用于在 Fargate 资源上运行的作业。

注意

您为计算环境选择的 AMI 必须与您希望用于该计算环境的实例类型的架构匹配。例如,如果您的计算环境使用 A1 实例类型,则您选择的计算资源 AMI 必须支持 Arm 实例。Amazon ECS 同时提供经过 Amazon ECS 优化的 Amazon Linux 2 AMI 的 x86 和 Arm 版本。有关更多信息,请参阅《Amazon Elastic Container Service 开发人员指南》中的经过 Amazon ECS 优化的 Amazon Linux 2 AMI

类型:字符串

必需:否

subnets

计算资源在其中启动的 VPC 子网。这些子网必须位于同一 VPC 中。Fargate 计算资源最多可以包含 16 个子网。有关更多信息,请参阅 Amazon VPC 用户指南 中的 VPC 和子网

注意

Amazon EC2 上的 Amazon Batch 和 Amazon EKS 上的 Amazon Batch 支持 Local Zones。有关更多信息,请参阅适用于 Linux 实例的 Amazon EC2 用户指南中的 Local ZonesAmazon EKS 用户指南中的 Amazon EKS 和 Amazon Local Zones 以及 Amazon ECS 开发人员指南中的 Local Zones、Wavelength 区域和 Amazon Outposts 中的 Amazon ECS 集群

Fargate 上的 Amazon Batch 目前不支持 Local Zones。

更新计算环境时,如果您提供的 VPC 子网列表为空,则 Fargate 和 EC2 计算资源的结果行为会有所不同。对于 Fargate 计算资源,如果提供空列表,则会像未指定此参数一样处理,并且不进行任何更改。对于 EC2 计算资源,提供空列表会将 VPC 子网从计算资源中删除。如果您更改 VPC 子网,则需要更新计算环境的基础设施。这同样适用于 Fargate 和 EC2 计算资源。有关更多信息,请参见 更新计算环境

类型:字符串数组

必需:是

securityGroupIds

与计算环境中启动的实例关联的 Amazon EC2 安全组。必须在 securityGroupIds 中或使用 launchTemplate 中引用的启动模板指定一个或多个安全组。对于在 Fargate 资源上运行的作业,此参数是必需的,且必须至少包含一个安全组。(Fargate 不支持启动模板。) 如果同时使用 securityGroupIdslaunchTemplate 指定安全组,将使用 securityGroupIds 中的值。

在更新计算环境时,如果提供一个空的安全组列表,则 Fargate 和 EC2 计算资源之间的行为会有所不同。对于 Fargate 计算资源,如果提供空列表,则会像未指定此参数一样处理,并且不进行任何更改。对于 EC2 计算资源,提供空列表会将安全组从计算资源中删除。如果您更改安全组,则需要更新计算环境的基础设施。这同样适用于 Fargate 和 EC2 计算资源。有关更多信息,请参见 更新计算环境

类型:字符串数组

必需:是

ec2KeyPair

用于计算环境中启动的实例的 EC2 密钥对。您可以使用此密钥对通过 SSH 登录您的实例。更新计算环境时,更改 EC2 密钥对需要更新计算环境的基础设施。有关更多信息,请参见 更新计算环境

注意

此参数不适用于在 Fargate 资源上运行的作业。

类型:字符串

必需:否

instanceRole

要附加到计算环境中的 Amazon EC2 实例的 Amazon ECS 实例配置文件。此参数不适用于在 Fargate 资源上运行的作业。不要指定此参数。您可以为实例配置文件指定短名称或完整的 Amazon 资源名称 (ARN)。例如,ecsInstanceRolearn:aws:iam::aws_account_id:instance-profile/ecsInstanceRole。有关更多信息,请参见 Amazon ECS 实例角色

更新计算环境时,更改此设置需要更新计算环境的基础设施。有关更多信息,请参见 更新计算环境

类型:字符串

必需:否

tags

要应用于计算环境中启动的 EC2 实例的键/值对标签。例如,您可以指定 "Name": "Amazon Batch Instance - C4OnDemand" 作为标签,以便计算环境中的每个实例均具有此名称。这对于在 Amazon EC2 控制台中识别您的 Amazon Batch 实例很有用。使用 Amazon Batch ListTagsForResource API 操作时,无法看到这些标签。

更新计算环境时,更改 EC2 标签需要更新计算环境的基础设施。有关更多信息,请参见 更新计算环境

注意

此参数不适用于在 Fargate 资源上运行的作业。

类型:字符串到字符串映射

必需:否

placementGroup

要与计算资源关联的 Amazon EC2 置放群组。此参数不适用于在 Fargate 资源上运行的作业。不要指定此参数。如果打算将多节点并行作业提交到计算环境,请考虑创建一个集群置放群组,并将其与计算资源相关联。这会保证实例逻辑分组上的多节点并行作业位于单个可用区中,同时提供较高的网络流量潜力。有关更多信息,请参阅适用于 Linux 实例的 Amazon EC2 用户指南中的放置组

注意

此参数不适用于在 Fargate 资源上运行的作业。

类型:字符串

必需:否

bidPercentage

在启动实例之前,与该实例类型的按需价格进行比较时 EC2 Spot 实例价格可以达到的最大百分比。例如,如果最大百分比为 20%,则竞价型价格必须低于该 EC2 实例的当前按需价格的 20%。您始终支付最低 (市场) 价格,并且绝不会高于您的最大百分比。如果将此字段留空,则默认值为按需价格的 100%。对于大多数使用案例,我们建议将此字段留空。

更新计算环境时,更改竞价百分比需要更新计算环境的基础设施。有关更多信息,请参见 更新计算环境

注意

此参数不适用于在 Fargate 资源上运行的作业。

必需:否

spotIamFleetRole

应用于 SPOT 计算环境的 Amazon EC2 Spot 队列 IAM 角色的 Amazon 资源名称 (ARN)。如果将分配策略设置为 BEST_FIT,或者未指定分配策略,则需要使用该角色。有关更多信息,请参见 Amazon EC2 竞价型实例集角色

注意

此参数不适用于在 Fargate 资源上运行的作业。

重要

要在创建时标记您的竞价型实例,此处指定的竞价型队列 IAM 角色必须使用更新的 AmazonEC2 SpotFleetTaggingRole 托管策略。之前推荐的 AmazonEC2 SpotFleetRole 托管策略没有标记竞价型实例所需的权限。有关更多信息,请参见 创建时未标记的竞价型实例

类型:字符串

必需:此参数对于 SPOT 计算环境是必需的。

launchTemplate

要与计算资源关联的可选启动模板。此参数不适用于在 Fargate 资源上运行的作业。不要指定此参数。在 CreateComputeEnvironmentUpdateComputeEnvironment API 操作中指定的任何其他计算资源参数将覆盖启动模板中的相同参数。要使用启动模板,您必须在请求中指定启动模板 ID 或启动模板名称,但不能同时指定两者。有关更多信息,请参见 启动模板支持

更新计算环境时,要移除自定义启动模板并使用默认启动模板,请将启动模板规范的 launchTemplateIdlaunchTemplateName 成员设置为空字符串。从计算环境中移除启动模板时,不会删除启动模板中指定的 AMI(如果它是所使用的 AMI 的时候)。要更新从启动模板中选择的 AMI,必须将 updateToLatestImageVersion 参数设置为 true。更新计算环境时,更改启动模板需要更新计算环境的基础设施。有关更多信息,请参见 更新计算环境

类型:LaunchTemplateSpecification

object

必需:否

launchTemplateId

启动模板的 ID。

类型:字符串

必需:否

launchTemplateName

启动模板的名称。

类型:字符串

必需:否

version

启动模板的版本号,$Latest$Default

如果值为 $Latest,则使用启动模板的最新版本。如果值为 $Default,则使用启动模板的默认版本。在基础设施更新期间,如果为计算环境指定了 $Latest$Default,则 Amazon Batch 会重新评估启动模板版本,并且可能会使用不同版本的启动模板。即使更新中未指定启动模板,也会出现这种情况。

默认值:$Default

类型:字符串

必需:否

ec2Configuration

提供用于在 EC2 计算环境中为实例选择 Amazon 系统映像 (AMI) 的信息。如果未指定 Ec2Configuration,则默认值为 Amazon Linux 2 (ECS_AL2)。在 2021 年 3 月 31 日之前,非 GPU、非 Amazon Graviton 实例默认为 Amazon Linux (ECS_AL1)。

更新计算环境时,更改此参数需要更新计算环境的基础设施。有关更多信息,请参见 更新计算环境

注意

此参数不适用于在 Fargate 资源上运行的作业。

类型:Ec2Configuration 对象数组

必需:否

imageIdOverride

用于在计算环境中启动的与映像类型匹配的实例的 AMI ID。此设置会覆盖 computeResource 对象中的 imageId 集。

类型:字符串

必需:否

imageKubernetesVersion

计算环境的 Kubernetes 版本。如果您未指定值,则将使用 Amazon Batch 支持的最新版本。

类型:字符串

长度限制:最小长度为 1。最大长度为 256。

必需:否

imageType

要与实例类型匹配以选择 AMI 的映像类型。ECSEKS 资源的受支持值不同。

ECS

如果未指定 imageIdOverride 参数,则使用最近的经过 Amazon ECS 优化的 Amazon Linux 2 AMIECS_AL2)。如果在更新中指定了新映像类型,但未指定 imageIdimageIdOverride 参数,则使用 Amazon Batch 支持的为该映像类型提供的最新的经 Amazon ECS 优化 AMI。

ECS_AL2

Amazon Linux 2:所有非 GPU 实例系列的默认值。

ECS_AL2_NVIDIA

Amazon Linux 2(GPU):所有 GPU 实例系列(例如 P4G4)的默认值,可用于所有非基于 Amazon Graviton 的实例类型。

ECS_AL1

Amazon Linux。亚马逊 Linux 已达到标准支持。 end-of-life 有关更多信息,请参阅 Amazon Linux AMI

EKS

如果未指定 imageIdOverride 参数,则使用最近的 Amazon EKS 优化版 Amazon Linux AMI (EKS_AL2)。如果在更新中指定了新映像类型,但未指定 imageIdimageIdOverride 参数,则使用 Amazon Batch 支持的该映像类型的最新 Amazon EKS 优化版 AMI。

EKS_AL2

Amazon Linux 2:所有非 GPU 实例系列的默认值。

EKS_AL2_NVIDIA

Amazon Linux 2(加速版):所有 GPU 实例系列(例如 P4G4)的默认值,可用于所有非基于 Amazon Graviton 的实例类型。

类型:字符串

长度限制:最小长度为 1。最大长度为 256。

必需:是

Amazon EKS 配置

支持 Amazon Batch 计算环境的 Amazon EKS 集群的配置。集群必须先存在,才能创建计算环境。

eksClusterArn

Amazon EKS 集群的 Amazon 资源名称(ARN)。例如,arn:aws:eks:us-east-1:123456789012:cluster/ClusterForBatch

类型:字符串

必需:是

kubernetesNamespace

Amazon EKS 集群的命名空间,Amazon Batch 管理此命名空间中的容器组(pod)。值不能为空或为 null。长度必须少于 64 个字符,不能设置为 default,不能以“kube-”开头,并且必须匹配此正则表达式:^[a-z0-9]([-a-z0-9]*[a-z0-9])?$。有关更多信息,请参阅 Kubernetes 文档中的命名空间

类型:字符串

必需:是

类型:EksConfiguration对象

必需:否

服务角色

serviceRole

允许 Amazon Batch 代表您调用其他 Amazon 服务的 IAM 角色的完整 Amazon 资源名称(ARN)。有关更多信息,请参见 将服务相关角色用于 Amazon Batch。我们建议您不指定服务角色。这样,Amazon Batch 会使用 AWSServiceRoleForBatch 服务相关角色。

重要

如果您的账户已创建 Amazon Batch 服务相关角色 (AWSServiceRoleForBatch),则默认情况下会为您的计算环境使用该角色,除非您在此处指定一个角色。如果您的账户中不存在 Amazon Batch 服务相关角色,且您未在此处指定角色,则该服务尝试在您的账户中创建 Amazon Batch 服务相关角色。有关 AWSServiceRoleForBatch 服务相关角色的更多信息,请参阅的服务相关角色权限 Amazon Batch

如果使用 AWSServiceRoleForBatch 服务相关角色创建计算环境,则不能将其更改为使用常规 IAM 角色。同样,如果使用常规 IAM 角色创建计算环境,则不能将其更改为使用 AWSServiceRoleForBatch 服务相关角色。要更新需要更新基础架构才能更改的计算环境的参数,必须使用 AWSServiceRoleForBatch 服务相关角色。有关更多信息,请参见 更新计算环境

如果您的指定角色的路径并非 /,请确保指定完整角色 ARN(推荐)或将此路径作为角色名称的前缀。

注意

根据您创建 Amazon Batch 服务角色的方式,其 Amazon 资源名称(ARN)可能包含 service-role 路径前缀。当您仅指定服务角色的名称时,Amazon Batch 假定您的 ARN 不使用 service-role 路径前缀。因此,我们建议您在创建计算环境时指定服务角色的完整 ARN。

类型:字符串

必需:否

Tags

tags

要与计算环境关联的键值对标签。有关更多信息,请参见 对Amazon Batch资源加标签

类型:字符串到字符串映射

必需:否