

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

# 在 Amazon ECS 托管实例上创建任务定义
<a name="create-job-definition-ecs-managed-instances"></a>

Amazon ECS 托管实例任务定义`ecsProperties`与`MANAGED_INSTANCES`平台功能一起使用。与 Fargate 不同，对 vCPU 和内存大小组合没有限制，并且支持 GPU 资源。有关支持的参数的更多信息，请参阅[亚马逊 ECS 托管实例上的任务定义](ecs-managed-instances-job-definitions.md)。

## 在 Amazon ECS 托管实例（控制台）上创建任务定义
<a name="create-jd-ecs-managed-instances-console"></a>

**要在 Amazon ECS 托管实例上创建新的任务定义，请执行以下操作：**

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

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

1. 在左侧导航窗格中，选择**作业定义**。

1. 选择**创建**。

1. 对于**编排类型**，选择 ** ECS 托管实例**。

1. 对于**名称**，为您的作业定义输入唯一名称。名称长度不超过 128 个字符。可以包含大小写字母、数字、连字符（-）和下划线（\_）。

1. （可选）对于**执行超时**，输入超时值（以秒为单位）。执行超时是指未完成的作业终止之前的时间长度。如果某次尝试超过了超时时间，该尝试将停止，状态将转为 `FAILED`。有关更多信息，请参阅 [作业超时](job_timeouts.md)。最小值为 60 秒。

1. 对于**执行角色**，选择一个 IAM 角色，该角色向 Amazon ECS 容器代理授予代表您进行 AWS API 调用的权限。此角色是 Amazon ECS 托管实例任务所必需的。例如，该角色用于从 Amazon ECR 提取容器镜像。

1. 在**容器配置**部分：

   1. 对于**映像**，输入用于任务的容器镜像。可以使用`{{repository-url}}/{{image}}:{{tag}}`命名约定来指定 Amazon ECR 注册表中的图像。公共注册表中的图像使用完整的 URI（例如，`public.ecr.aws/amazonlinux/amazonlinux:2023`）。

   1. 对于**命令**，输入要传递到容器的命令。

   1. 对于 **vCPUs**，指定要为容器预留的 vCPU 数量。

   1. 对于**内存**，指定容器可用的内存限制（以 MiB 为单位）。

   1. （可选）对于 ** GPU**，指定可供容器使用的 GPU 设备的数量。计算环境必须有可用的 GPU 实例。

1. （可选）展开 **标签**，然后选择**添加标签**以向资源添加标签。启用**传播标签**以传播作业和作业定义中的标签。

1. 选择 **Create job definition**。

## 在 Amazon ECS 托管实例上创建任务定义 (AWS CLI)
<a name="create-jd-ecs-managed-instances-cli"></a>

使用该`register-job-definition`命令为 Amazon ECS 托管实例创建任务定义。

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

以下示例创建了一个运行简单命令的最小任务定义。

```
$ aws batch register-job-definition \
    --job-definition-name {{my-managed-instances-job-def}} \
    --type container \
    --platform-capabilities MANAGED_INSTANCES \
    --ecs-properties '{
      "taskProperties": [{
        "containers": [{
          "image": "public.ecr.aws/amazonlinux/amazonlinux:2023",
          "name": "main",
          "command": ["echo", "hello managed instances"],
          "resourceRequirements": [
            {"type": "VCPU", "value": "1"},
            {"type": "MEMORY", "value": "1024"}
          ]
        }],
        "executionRoleArn": "arn:aws:iam::{{123456789012}}:role/{{ecsTaskExecutionRole}}"
      }]
    }'
```

### GPU 任务定义
<a name="create-jd-ecs-managed-instances-cli-gpu"></a>

以下示例创建了一个请求 GPU 资源的任务定义。

```
$ aws batch register-job-definition \
    --job-definition-name {{my-gpu-managed-instances-job-def}} \
    --type container \
    --platform-capabilities MANAGED_INSTANCES \
    --ecs-properties '{
      "taskProperties": [{
        "containers": [{
          "image": "{{123456789012}}.dkr.ecr.{{us-east-1}}.amazonaws.com/{{my-gpu-image}}:latest",
          "name": "main",
          "command": ["nvidia-smi"],
          "resourceRequirements": [
            {"type": "VCPU", "value": "4"},
            {"type": "MEMORY", "value": "16384"},
            {"type": "GPU", "value": "1"}
          ]
        }],
        "executionRoleArn": "arn:aws:iam::{{123456789012}}:role/{{ecsTaskExecutionRole}}"
      }]
    }'
```

### Multi-container （边车）任务定义
<a name="create-jd-ecs-managed-instances-cli-sidecar"></a>

以下示例使用主容器和 sidecar 日志容器创建任务定义。

```
$ aws batch register-job-definition \
    --job-definition-name {{my-sidecar-managed-instances-job-def}} \
    --type container \
    --platform-capabilities MANAGED_INSTANCES \
    --ecs-properties '{
      "taskProperties": [{
        "containers": [{
          "image": "public.ecr.aws/amazonlinux/amazonlinux:2023",
          "name": "main",
          "command": ["echo", "processing data"],
          "essential": true,
          "resourceRequirements": [
            {"type": "VCPU", "value": "2"},
            {"type": "MEMORY", "value": "4096"}
          ]
        },
        {
          "image": "public.ecr.aws/amazonlinux/amazonlinux:2023",
          "name": "sidecar",
          "command": ["echo", "logging sidecar"],
          "essential": false,
          "resourceRequirements": [
            {"type": "VCPU", "value": "1"},
            {"type": "MEMORY", "value": "512"}
          ]
        }],
        "executionRoleArn": "arn:aws:iam::{{123456789012}}:role/{{ecsTaskExecutionRole}}"
      }]
    }'
```