View a markdown version of this page

Amazon ECS 托管实例上的计算环境 - AWS Batch

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

Amazon ECS 托管实例上的计算环境

AWS Batch 亚马逊 ECS 托管实例上的计算环境在内部使用managedInstancesProvider配置块computeResources。这种结构符合 Amazon ECS 容量提供商模式,并且是独立的。所有网络、实例配置文件和实例选择配置都位于此区块中。

以下列表描述了 Amazon ECS 托管实例计算环境的计算环境参数。

type(顶级)

必须是 MANAGED

"type": "MANAGED"
computeResources.type

必须是 ECS_MANAGED_INSTANCES。与 Fargate 和 Amazon EC2 计算环境不同,竞价容量不以单独的类型表示(没有ECS_MANAGED_INSTANCES_SPOT类型)。取而代之的是,使用capacityOptionType内部managedInstancesProvider.instanceLaunchTemplate来指定 On-Demand 或竞价容量。

"type": "ECS_MANAGED_INSTANCES"
computeResources.maxvCpus

计算环境可以扩展到的最大 vCPU 数量。与 Fargate 计算环境的工作原理相同 maxvCpus ——它限制了所有正在运行的任务消耗的总 vCPU。

重要

目前, AWS Batch 评估的maxvCpus依据是运行任务请求的 vCPU 总数,而不是底层 Amazon EC2 实例的 vCPU 总数。Amazon ECS 托管实例使用多租户实例分配。因此,预置的实际实例 vCPU 容量可能会超过任务 vCPU 的总容量。计算环境预置的实例容量可能会超过该maxvCpus值所暗示的容量。这种行为可能会在未来的更新中得到完善。

computeResources.managedInstancesProvider

Amazon ECS 托管实例计算环境是必需的。包含所有 Amazon ECS 托管 Instances-specific配置。有关更多信息,请参阅ManagedInstancesProvider亚马逊弹性容器服务 API 参考》。以下字段可用:

infrastructureRoleArn

必需。亚马逊 ECS 代您管理亚马逊 EC2 实例的 IAM 角色的 ARN。此角色必须具有的信任政策ecs.amazonaws.com。您的 IAM 委托人必须具有此角色的iam:PassRole权限,条件为iam:PassedToService: ecs.amazonaws.com

propagateTags

可选。控制容量提供商上的标签是否传播到其启动的 Amazon EC2 实例。有效值为 CAPACITY_PROVIDERNONE

instanceLaunchTemplate

必需。包含实例启动配置:

ec2InstanceProfileArn

必需。托管实例的 Amazon EC2 实例配置文件的 ARN。此实例配置文件必须使用AmazonECSInstanceRolePolicyForManagedInstances托管策略和的信任策略ec2.amazonaws.com

networkConfiguration

必需。为托管实例指定 VPC 配置。

  • subnets:必需。启动实例的 VPC 子网。实例需要外部网络访问权限才能与 Amazon ECS 服务终端节点通信。如果您的子网不提供公有 IP 地址,则它们必须具有用于出站互联网访问的 NAT 网关。

  • securityGroups:必需。与实例关联的 VPC 安全组。

instanceRequirements

可选。指定亚马逊 ECS 可以启动的 Amazon EC2 实例类型的限制。如果未提供,则所有可用实例类型均符合条件。

  • allowedInstanceTypes— 特定实例类型或实例系列的列表(例如,m5.largeg5)。指定后,仅使用这些实例类型。

capacityOptionType

可选。容量定价模型。有效值为 ON_DEMAND(默认值)和 SPOT。随后SPOT,Amazon ECS 推出了竞价型实例,可以为容错工作负载节省大量成本。

storageConfiguration

可选。为实例配置根 EBS 卷。

  • storageSizeGiB— 根卷的大小,以 GiB 为单位。

monitoring

可选。对实例的 CloudWatch 监控级别。有效值为 BASICDETAILED

fipsEnabled

可选。如果设置为true,则在托管实例上启用 FIPS 140-2 合规性。并非全部可用 AWS 区域。

capacityReservations

可选。 On-Demand 以容量预留 (ODCR) 为目标,以实现可预测的容量可用性。

  • reservationGroupArn— 目标容量预留组的 ARN。

  • reservationPreference— 控制容量预留的使用方式。有效值为RESERVATIONS_ONLY(仅适用于预订)、RESERVATIONS_FIRST(首选预订,退回按需预订)和RESERVATIONS_EXCLUDED(请勿使用预订)。

instanceMetadataTagsPropagation

可选。控制是否可以从托管实例上的实例元数据服务 (IMDS) 访问标签。

localStorageConfiguration

可选。为托管实例配置本地实例存储卷(本地 NVMe 固态硬盘)。

  • useLocalStorage— 实例存储卷是否可供在托管实例上运行的容器使用。

infrastructureOptimization

可选。控制 Amazon ECS 管理空闲实例的方式。

  • scaleInAfter— 在 Amazon ECS 终止实例之前,该实例必须处于空闲状态的秒数。有效值为-1(禁用缩容)或 03600(终止前的空闲时间秒数)。

computeResources.capacityTags

可选。适用于计算环境管理的亚马逊 ECS 容量提供商和亚马逊 EC2 实例的标签。仅对ECS_MANAGED_INSTANCES计算环境有效。您的 IAM 委托人必须拥有计算环境资源的batch:SetCapacityTags权限才能指定此字段。有关更多信息,请参阅 使用批量控制对容量标签的访问权限:SetCapacityTags

这些标签与计算环境资源本身tags的顶级标签是分开的。capacityTags用于底层基础设施资源的成本分配和组织。

参数不适用于 Amazon ECS 托管实例

以下computeResources参数对于 Amazon ECS 托管实例计算环境无效,不得指定:

  • allocationStrategy

  • bidPercentage

  • desiredvCpus

  • minvCpus

  • imageId

  • instanceTypes

  • instanceRole

  • ec2Configuration

  • ec2KeyPair

  • launchTemplate

  • placementGroup

  • spotIamFleetRole

  • subnetsmanagedInstancesProvider.instanceLaunchTemplate.networkConfiguration.subnets改用)

  • securityGroupIdsmanagedInstancesProvider.instanceLaunchTemplate.networkConfiguration.securityGroups改用)

更新 Amazon ECS 托管实例计算环境

所有 Amazon ECS 托管实例计算环境属性都可以更新,计算环境类型capacityOptionType、和除外fipsEnabled。更新会流向底层 Amazon ECS 容量提供商。新实例使用更新后的配置。现有实例继续运行直到任务完成,然后自然耗尽。

创建后无法更改以下内容:

  • 计算环境类型(ECS_MANAGED_INSTANCES不能更改为FARGATEEC2、或其他类型)

  • capacityOptionType— 创建后无法在 Spot On-Demand 和 Spot 之间切换

  • fipsEnabled— 创建后无法更改 FIPS 模式

示例

最低配置

以下示例显示了创建 Amazon ECS 托管实例计算环境所需的最低配置。Amazon ECS 会自动从所有可用类型中选择实例类型。

{ "computeEnvironmentName": "my-managed-instances-ce", "type": "MANAGED", "state": "ENABLED", "computeResources": { "type": "ECS_MANAGED_INSTANCES", "maxvCpus": 256, "managedInstancesProvider": { "infrastructureRoleArn": "arn:aws:iam::123456789012:role/ecsInfrastructureRole", "instanceLaunchTemplate": { "ec2InstanceProfileArn": "arn:aws:iam::123456789012:instance-profile/ecsInstanceProfile", "networkConfiguration": { "subnets": ["subnet-abcde012", "subnet-bcde012a"], "securityGroups": ["sg-abcde012"] } } } } }

具有特定实例类型的 GPU 工作负载

以下示例为机器学习工作负载创建了一个受到 NVIDIA GPU 实例类型限制的计算环境。

{ "computeEnvironmentName": "my-gpu-managed-instances-ce", "type": "MANAGED", "state": "ENABLED", "computeResources": { "type": "ECS_MANAGED_INSTANCES", "maxvCpus": 1000, "managedInstancesProvider": { "infrastructureRoleArn": "arn:aws:iam::123456789012:role/ecsInfrastructureRole", "instanceLaunchTemplate": { "ec2InstanceProfileArn": "arn:aws:iam::123456789012:instance-profile/ecsInstanceProfile", "networkConfiguration": { "subnets": ["subnet-abcde012", "subnet-bcde012a"], "securityGroups": ["sg-abcde012"] }, "instanceRequirements": { "allowedInstanceTypes": ["g5.xlarge", "g5.2xlarge", "g5.4xlarge"] }, "capacityOptionType": "ON_DEMAND" } } } }

为成本敏感型工作负载确定容量

以下示例为容错批处理工作负载创建 Spot-backed 计算环境。

{ "computeEnvironmentName": "my-spot-managed-instances-ce", "type": "MANAGED", "state": "ENABLED", "computeResources": { "type": "ECS_MANAGED_INSTANCES", "maxvCpus": 5000, "managedInstancesProvider": { "infrastructureRoleArn": "arn:aws:iam::123456789012:role/ecsInfrastructureRole", "instanceLaunchTemplate": { "ec2InstanceProfileArn": "arn:aws:iam::123456789012:instance-profile/ecsInstanceProfile", "networkConfiguration": { "subnets": ["subnet-abcde012", "subnet-bcde012a", "subnet-cde012ab"], "securityGroups": ["sg-abcde012"] }, "instanceRequirements": { "allowedInstanceTypes": ["m5.large", "m5.xlarge", "m6i.large", "m6i.xlarge"] }, "capacityOptionType": "SPOT", "storageConfiguration": { "storageSizeGiB": 100 } } } } }