View a markdown version of this page

教程:使用 Amazon ECS 托管实例创建托管计算环境 - Amazon Batch
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

教程:使用 Amazon ECS 托管实例创建托管计算环境

本教程引导您创建使用 Amazon ECS 托管实例的 Amazon Batch 计算环境。Amazon ECS 代表您管理 Amazon EC2 实例——您指定最大容量和可选实例限制,Amazon ECS 负责配置、扩展和终止。

先决条件

在创建 Amazon ECS 托管实例计算环境之前,必须具备以下条件:

  • 亚马逊 ECS 基础设施角色 ——亚马逊 ECS 代为管理亚马逊 EC2 实例而承担的 IAM 角色。该角色必须具有的信任政策ecs.amazonaws.com。有关更多信息,请参阅《亚马逊弹性容器服务开发人员指南》中的 A mazon ECS 基础设施 IAM 角色

  • A mazon EC2 实例配置文件 — 使用AmazonECSInstanceRolePolicyForManagedInstances托管策略的实例配置文件。信任政策必须ec2.amazonaws.com允许代入该角色。

  • 您的 IAM 委托人必须具有基础设施角色的iam:PassRole权限,条件为iam:PassedToService: ecs.amazonaws.com

  • 一个 VPC,其子网具有出站互联网访问权限(公有 IP 分配或 NAT 网关)。

创建 Amazon ECS 托管实例计算环境(控制台)

  1. 在处打开 Amazon Batch 控制台https://console.aws.amazon.com/batch/

  2. 在导航栏中,选择 Amazon Web Services 区域 要使用的。

  3. 在左侧导航窗格中,选择环境

  4. 选择创建环境,然后选择创建计算环境

  5. 对于计算环境类型,选择 ECS 托管实例

  6. 计算环境名称中,输入一个唯一的名称。名称最长可为 128 个字符,可以包含大写和小写字母、数字、连字符 (-) 和下划线 (_)。

  7. 对于最大 vCPU,输入计算环境可以扩展到的最大 vCPU 数量。

  8. 对于基础设施角色,选择您创建的 Amazon ECS 基础设施角色作为先决条件。

  9. 对于实例配置文件,选择您创建的 Amazon EC2 实例配置文件作为先决条件。

  10. 在 “网络” 部分:

    1. 对于 VPC,选择将在其中启动实例的 VPC。

    2. 对于子网,选择一个或多个子网。子网必须具有出站互联网访问权限。

    3. 对于安全组,选择一个或多个与实例关联的安全组。

  11. (可选)对于容量类型,选择竞价型以使用竞价型实例来节省容错工作负载的成本。默认值为 On-Demand

  12. (可选)对于允许的实例类型,指定 Amazon ECS 可以启动的实例类型。如果您未指定,则所有可用实例类型均符合条件。

  13. 选择创建计算环境

创建 Amazon ECS 托管实例计算环境 (Amazon CLI)

使用create-compute-environment命令创建 Amazon ECS 托管实例计算环境。

基本示例

以下示例使用最低要求的配置创建计算环境。Amazon ECS 可以使用任何可用的实例类型。

$ aws batch create-compute-environment \ --compute-environment-name my-managed-instances-ce \ --type MANAGED \ --state ENABLED \ --compute-resources '{ "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"] } } } }'

具有特定实例类型的 Spot

以下示例创建了受特定实例类型限制的 Spot-backed 计算环境。

$ aws batch create-compute-environment \ --compute-environment-name my-spot-managed-instances-ce \ --type MANAGED \ --state ENABLED \ --compute-resources '{ "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": ["m5.large", "m5.xlarge", "m6i.large", "m6i.xlarge"] }, "capacityOptionType": "SPOT" } } }'

输出:

{ "computeEnvironmentName": "my-spot-managed-instances-ce", "computeEnvironmentArn": "arn:aws:batch:us-east-1:123456789012:compute-environment/my-spot-managed-instances-ce" }

可预留容量

以下示例创建了一个以 On-Demand 容量预留为目标的计算环境,以实现可预测的容量。

$ aws batch create-compute-environment \ --compute-environment-name my-reserved-managed-instances-ce \ --type MANAGED \ --state ENABLED \ --compute-resources '{ "type": "ECS_MANAGED_INSTANCES", "maxvCpus": 512, "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": ["m5.xlarge", "m5.2xlarge"] }, "capacityReservations": { "reservationGroupArn": "arn:aws:ec2:us-east-1:123456789012:capacity-reservation-group/my-reservation-group", "reservationPreference": "RESERVATIONS_FIRST" } } } }'

后续步骤

创建计算环境后,完成以下步骤以运行作业:

  1. 创建任务队列并将您的 Amazon ECS 托管实例计算环境与其关联起来。有关更多信息,请参阅 创建作业队列

  2. 使用platformCapabilities设置为MANAGED_INSTANCES和使用创建作业定义ecsProperties。有关更多信息,请参阅 亚马逊 ECS 托管实例上的任务定义

  3. 向任务队列提交任务。有关更多信息,请参阅 教程:提交作业