本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
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_PROVIDER和NONE。 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.large或g5)。指定后,仅使用这些实例类型。
-
capacityOptionType-
可选。容量定价模型。有效值为
ON_DEMAND(默认值)和SPOT。随后SPOT,Amazon ECS 推出了竞价型实例,可以为容错工作负载节省大量成本。 storageConfiguration-
可选。为实例配置根 EBS 卷。
-
storageSizeGiB— 根卷的大小,以 GiB 为单位。
-
monitoring-
可选。对实例的 CloudWatch 监控级别。有效值为
BASIC和DETAILED。 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(禁用缩容)或0—3600(终止前的空闲时间秒数)。
-
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 -
subnets(managedInstancesProvider.instanceLaunchTemplate.networkConfiguration.subnets改用) -
securityGroupIds(managedInstancesProvider.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 } } } } }