

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

# Amazon ECS 托管实例上的计算环境
<a name="ecs-managed-instances-compute-environments"></a>

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

`computeResources.managedInstancesProvider`  
Amazon ECS 托管实例计算环境是必需的。包含所有 Amazon ECS 托管 Instances-specific配置。有关更多信息，请参阅[ManagedInstancesProvider](https://docs.amazonaws.cn/AmazonECS/latest/APIReference/API_ManagedInstancesProvider.html)《*亚马逊弹性容器服务 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 合规性。并非全部可用 Amazon Web Services 区域。  
`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`](capacity-tags-access-policy.md)。  
这些标签与计算环境资源本身`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 托管实例计算环境
<a name="ecs-managed-instances-compute-environment-updates"></a>

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

创建后无法更改以下内容：
+ 计算环境类型（`ECS_MANAGED_INSTANCES`不能更改为`FARGATE``EC2`、或其他类型）
+ `capacityOptionType`— 创建后无法在 Spot On-Demand 和 Spot 之间切换
+ `fipsEnabled`— 创建后无法更改 FIPS 模式

## 示例
<a name="ecs-managed-instances-compute-environment-examples"></a>

### 最低配置
<a name="ecs-managed-instances-ce-example-minimal"></a>

以下示例显示了创建 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 工作负载
<a name="ecs-managed-instances-ce-example-gpu"></a>

以下示例为机器学习工作负载创建了一个受到 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"
      }
    }
  }
}
```

### 为成本敏感型工作负载确定容量
<a name="ecs-managed-instances-ce-example-spot"></a>

以下示例为容错批处理工作负载创建 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
        }
      }
    }
  }
}
```