View a markdown version of this page

在 Amazon ECS 托管实例上创建任务定义 - AWS Batch

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

在 Amazon ECS 托管实例上创建任务定义

Amazon ECS 托管实例任务定义ecsPropertiesMANAGED_INSTANCES平台功能一起使用。与 Fargate 不同,对 vCPU 和内存大小组合没有限制,并且支持 GPU 资源。有关支持的参数的更多信息,请参阅亚马逊 ECS 托管实例上的任务定义

在 Amazon ECS 托管实例(控制台)上创建任务定义

要在 Amazon ECS 托管实例上创建新的任务定义,请执行以下操作:
  1. 在处打开 AWS Batch 控制台https://console.aws.amazon.com/batch/

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

  3. 在左侧导航窗格中,选择作业定义

  4. 选择创建

  5. 对于编排类型,选择 ECS 托管实例

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

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

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

  9. 容器配置部分:

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

    2. 对于命令,输入要传递到容器的命令。

    3. 对于 vCPUs,指定要为容器预留的 vCPU 数量。

    4. 对于内存,指定容器可用的内存限制(以 MiB 为单位)。

    5. (可选)对于 GPU,指定可供容器使用的 GPU 设备的数量。计算环境必须有可用的 GPU 实例。

  10. (可选)展开 标签,然后选择添加标签以向资源添加标签。启用传播标签以传播作业和作业定义中的标签。

  11. 选择 Create job definition

在 Amazon ECS 托管实例上创建任务定义 (AWS CLI)

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

基本示例

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

$ 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 任务定义

以下示例创建了一个请求 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 (边车)任务定义

以下示例使用主容器和 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" }] }'