

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 教學課程：使用 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 受管執行個體運算環境之前，您必須具有下列項目：
+ **Amazon ECS 基礎設施角色** — Amazon ECS 擔任以代表您管理 Amazon EC2 執行個體的 IAM 角色。角色必須具有 的信任政策`ecs.amazonaws.com`。如需詳細資訊，請參閱《[Amazon Elastic Container Service 開發人員指南》中的 Amazon ECS 基礎設施 IAM 角色](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/infrastructure-iam-roles.html)。 **
+ **Amazon 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. 在 https：//[https://console.aws.amazon.com/batch/](https://console.aws.amazon.com/batch/) 開啟 AWS Batch 主控台。

1. 從導覽列中，選擇要 AWS 區域 使用的 。

1. 在左側導覽窗格中，選擇**環境**。

1. 選擇**建立環境**，然後選擇**建立運算環境**。

1. 針對**運算環境類型**，選擇 **ECS 受管執行個體**。

1. 針對**運算環境名稱**，輸入唯一的名稱。名稱長度上限為 128 個字元，可包含大小寫字母、數字、連字號 (-) 和底線 (\_)。

1. 針對**最大 vCPUs**，輸入運算環境可擴展的 vCPUs 數量上限。

1. 針對**基礎設施角色**，選擇您建立做為先決條件的 Amazon ECS 基礎設施角色。

1. 針對**執行個體描述檔**，選擇您建立做為先決條件的 Amazon EC2 執行個體描述檔。

1. 在**聯網**區段中：

   1. 對於 **VPC**，請選擇要啟動執行個體的 VPC。

   1. 針對**子網路**，選擇一或多個子網路。子網路必須具有傳出網際網路存取。

   1. 針對**安全群組**，選擇要與執行個體建立關聯的一或多個安全群組。

1. （選用） 針對**容量類型**，選擇 **Spot** 以使用 Spot 執行個體來節省容錯工作負載的成本。預設值為**隨需**。

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 後端運算環境。

```
$ 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>

下列範例會建立運算環境，以可預測容量的隨需容量保留為目標。

```
$ 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`。如需詳細資訊，請參閱[Amazon ECS 受管執行個體上的任務定義](ecs-managed-instances-job-definitions.md)。

1. 將任務提交至任務佇列。如需詳細資訊，請參閱[教學課程：提交任務](submit_job.md)。