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

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

计算环境参数

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

计算环境名称

computeEnvironmentName

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

类型:字符串

必需:是

类型

type

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

类型:字符串

有效值:MANAGED | UNMANAGED

必需:是

状态

state

计算环境的状态。

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

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

注意

一个DISABLED州的计算环境可能会继续产生账单费用。为防止产生额外费用,请关闭计算环境,然后删除计算环境。有关更多信息,请参阅Amazon Batch API 参考和《Amazon Billing用户指南》DeleteComputeEnvironment中的 “避免意外收费”。

当一个实例处于空闲状态时,该实例会向下扩展到该minvCpus值。但是,实例大小并未更改实例大小。例如,假设一个值为4minvCpus值为desiredvCpusc5.8xlarge实例36。此实例无法向下扩展为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 Spot 实例集

有效值:EC2 | SPOT | FARGATE | FARGATE_SPOT

必需:是

allocationStrategy

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

注意

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

BEST_FIT (默认值)

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

注意

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

BEST_FIT_PROGRESSIVE

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

SPOT_CAPACITY_OPTIMIZED

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

借助采用按需型或竞价型实例和采用竞价型实例的BEST_FIT策略,Amazon Batch以及采用竞价型实例的策略,以及采用竞价型实例的策略。BEST_FIT_PROGRESSIVESPOT_CAPACITY_OPTIMIZEDmaxvCpus在这种情况下,Amazon Batch 永远不会超过一个实例 maxvCpus

有效值:BEST_FIT |BEST_FIT_PROGRESSIVE |SPOT_CAPACITY_OPTIMIZED

必需:否

minvCpus

即使计算环境处于状态,环境仍保留的最少 Amazon EC2 vCPUs 数DISABLED

注意

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

类型:整数

必需:否

maxvCpus

环境可达到的最大 Amazon EC2 vCPU 数。

注意

借助采用按需型或竞价型实例和竞价型实例的BEST_FIT策略,以及采用竞价型实例的策略,以及maxvCpus采用竞价型实例的策略。BEST_FIT_PROGRESSIVESPOT_CAPACITY_OPTIMIZEDAmazon Batch在这种情况下,Amazon Batch 永远不会超过一个实例 maxvCpus。例如,在计算环境中指定的实例中,最多Amazon Batch使用一个实例。

类型:整数

必需:否

desiredvCpus

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

注意

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

类型:整数

必需:否

instanceTypes

可启动的实例类型。此参数不适用于在 Fargate 资源上运行的任务。请指定此两者。您可以指定实例系列来启动这些系列中的任何实例类型(例如、c5c5n、或p3)。或者,您可以指定一个系列中的特定尺寸(例如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 同时x86提供经过 Amazon Linux 2 AMI 优化Arm的 Amazon Linux 2 AMI 和 有关更多信息,请参阅 Amazon ElastAMI c Container Serv ice 开发人员指南中的经过 Amazon EC S 优化的 Amazon

类型:字符串

必需:否

subnets

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

注意

Amazon EC2 上的 Amazon Batch 和 Amazon EKS 上的 Amazon Batch 支持 Local Zones。有关更多信息,请参阅《适用于 Linux 实例的 Amazon EC2 用户指南》中的Loca l Zones、Amazon EK S 用户指南中的 Amazon EK S 和Local Zones 以及Local Zones、Wavelength 区域和Amazon Outposts《亚马逊弹性容器服务开发人员指南》中的 Amazon ECS 集群。Amazon

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 key pair。您可以使用此密钥对通过 SSH 登录您的实例。更新计算环境时,如果更改 EC2 key pair,需要更新计算环境的基础设施。有关更多信息,请参阅更新计算环境

注意

此参数不适用于在 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 ListTagsForResourceAPI 操作时,无法看到这些标签。

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

注意

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

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

必需:否

placementGroup

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

注意

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

类型:字符串

必需:否

bidPercentage

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

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

注意

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

必需:否

spotIamFleetRole

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

注意

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

重要

要在创建时标记 Spot 实例,此处指定的 Spot 队列 IAM 角色必须使用较新的 A mazon EC2SpotFleetTaggingRole 托管策略。以前推荐的 Amazon EC2SpotFleetRole 托管策略不具有标记 Spot 实例所需的权限。有关更多信息,请参阅Spot 实例在创建时未加标签

类型:字符串

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

launchTemplate

要与计算资源关联的可选启动模板。此参数不适用于在 Fargate 资源上运行的任务。请指定此两者。在CreateComputeEnvironmentUpdateComputeEnvironmentAPI 操作中指定的任何其他计算资源参数都会覆盖启动模板中的相同参数。要使用启动模板,您必须在请求中指定启动模板 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未指定,则默认为亚马逊 Linux 2 (ECS_AL2)。在 2021 年 3 月 31 日之前,非 GPU、非 GAmazon raviton 实例的默认值为 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。Amazon 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 EK 配置

支持 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服务 IAM 角色:建议您不要指定服务角色。这样,就会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

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

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

必需:否