

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

# 教程：使用 Amazon ECS 托管实例创建托管计算环境
<a name="create-compute-environment-ecs-managed-instances"></a>

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

## 先决条件
<a name="create-ce-ecs-managed-instances-prerequisites"></a>

在创建 Amazon ECS 托管实例计算环境之前，必须具备以下条件：
+ **亚马逊 ECS 基础设施角色 ** ——亚马逊 ECS 代为管理亚马逊 EC2 实例而承担的 IAM 角色。该角色必须具有的信任政策`ecs.amazonaws.com`。有关更多信息，请参阅《[亚马逊弹性容器服务开发人员指南》](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/infrastructure-iam-roles.html)中的 A * mazon ECS 基础设施 IAM 角色*。
+ A ** mazon EC2 实例配置文件 ** — 使用`AmazonECSInstanceRolePolicyForManagedInstances`托管策略的实例配置文件。信任政策必须`ec2.amazonaws.com`允许代入该角色。
+ 您的 IAM 委托人必须具有基础设施角色的`iam:PassRole`权限，条件为`iam:PassedToService: ecs.amazonaws.com`。
+ 一个 VPC，其子网具有出站互联网访问权限（公有 IP 分配或 NAT 网关）。

## 创建 Amazon ECS 托管实例计算环境（控制台）
<a name="create-ce-ecs-managed-instances-console"></a>

1. 在处打开 AWS Batch 控制台[https://console.aws.amazon.com/batch/](https://console.aws.amazon.com/batch/)。

1. 在导航栏中，选择 AWS 区域 要使用的。

1. 在左侧导航窗格中，选择**环境**。

1. 选择**创建环境**，然后选择**创建计算环境**。

1. 对于**计算环境类型**，选择 ** ECS 托管实例**。

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

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

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

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

1. 在 “**网络**” 部分：

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

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

   1. 对于**安全组**，选择一个或多个与实例关联的安全组。

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

1. （可选）对于**允许的实例类型**，指定 Amazon ECS 可以启动的实例类型。如果您未指定，则所有可用实例类型均符合条件。

1. 选择**创建计算环境**。

## 创建 Amazon ECS 托管实例计算环境 (AWS CLI)
<a name="create-ce-ecs-managed-instances-cli"></a>

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

### 基本示例
<a name="create-ce-ecs-managed-instances-cli-basic"></a>

以下示例使用最低要求的配置创建计算环境。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
<a name="create-ce-ecs-managed-instances-cli-spot"></a>

以下示例创建了受特定实例类型限制的 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"
}
```

### 可预留容量
<a name="create-ce-ecs-managed-instances-cli-reservations"></a>

以下示例创建了一个以 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"
          }
        }
      }
    }'
```

## 后续步骤
<a name="create-ce-ecs-managed-instances-next-steps"></a>

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

1. 创建任务队列并将您的 Amazon ECS 托管实例计算环境与其关联起来。有关更多信息，请参阅 [创建作业队列](create-job-queue.md)。

1. 使用`platformCapabilities`设置为`MANAGED_INSTANCES`和使用创建作业定义`ecsProperties`。有关更多信息，请参阅 [亚马逊 ECS 托管实例上的任务定义](ecs-managed-instances-job-definitions.md)。

1. 向任务队列提交任务。有关更多信息，请参阅 [教程：提交作业](submit_job.md)。