创建作业定义 - Amazon Batch
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

创建作业定义

您可在 Amazon Batch 中运行作业之前,必须先创建一个作业定义。对于单节点并行作业和多节点并行作业,此过程略有不同。本主题介绍如何为Amazon Batch作业,而不是多节点并行作业。

要创建多节点并行作业定义,请参阅创建多节点并行作业定义。有关多节点并行作业的更多信息,请参阅多节点并行作业

创建新的作业定义

  1. 打开Amazon Batch控制台https://console.aws.amazon.com/batch/

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

  3. 在导航窗格中,选择 Job definitionsCreate

  4. 适用于名称中,为您的作业定义输入唯一名称。名称最长可为 128 个字符。它可包含大写和小写字母、数字、连字符 (-) 和下划线 (_)。

  5. 适用于平台中,选择EC2如果作业在 EC2 实例上运行,或者Fargate如果作业运行在AmazonFargate 容量。有关更多信息,请参阅 Amazon Batch上的AmazonFargate

  6. 重试策略部分中,可以指定重试作业的次数。您还可以创建条件来决定是否应重试失败的作业。这些条件基于错误代码的字符串匹配以及作业尝试列出的原因。有关更多信息,请参阅 自动作业重试

    1. 适用于尝试 Job中,指定在作业失败时尝试作业的次数。此数字必须介于一 (1) 和十 (10) 之间,包括在内。

    2. (可选)选择退出时添加评估最多添加五 (5) 个条件,以匹配字符串模式与退出代码、状态原因和作业尝试中返回的原因。对于每一组条件,操作必须设置为重试(重试直到达到作业尝试次数),或Exit停止重试作业。

  7. (可选)Execution timeout (执行超时)中,指定您希望允许任务尝试运行的最大秒数。如果某次尝试超过了超过了超时时间,该尝试将停止,状态将转为FAILED。有关更多信息,请参阅 作业超时

  8. 适用于多节点并行,将此复选框保持未选中状态。要改为创建多节点并行作业定义,请参阅创建多节点并行作业定义

  9. In容器属性,您可以指定在置放作业时将这些属性传递给 Docker 守护程序。

    1. 适用于Image下,选择要用于您的作业的 Docker 映像。默认情况下,Docker Hub 注册表中的映像可用。您也可以使用 repository-url/image:tag 指定其他存储库。允许最多 255 个字母(大写和小写字母)、数字、连字符、下划线、冒号、句点、正斜杠和井号。此参数可将Image中的创建容器的 部分Docker 远程 APIIMAGE的参数docker run

      注意

      Docker 映像架构必须与为它们安排的计算资源的处理器架构相匹配。例如,基于 ARM 的 Docker 映像只能在基于 ARM 的计算资源上运行。

      • Amazon ECR 存储库中的映像使用完整的registry/repository:tag命名约定。例如:aws_account_id.dkr.ecr.region.amazonaws.com/my-web-app:latest

      • Docker Hub 上的官方存储库中的映像使用一个名称 (例如,ubuntumongo)。

      • Docker Hub 上其他存储库中的映像通过组织名称 (例如,amazon/amazon-ecs-agent) 进行限定。

      • 其他在线存储库中的映像由域名 (例如,quay.io/assemblyline/ubuntu) 进行进一步限定。

    2. 对于 Command,指定要传递到容器的命令。对于简单的命令,您可以在 Space delimited 选项卡上键入命令,就像在命令提示符中键入命令一样。然后,确保 JSON 结果 (该结果将传递到 Docker 守护程序) 正确无误。对于较复杂的命令 (例如,带有特殊字符),您可以切换到 JSON 选项卡,然后在该选项卡中输入等效字符串数组。

      此参数可将Cmd中的创建容器的 部分Docker 远程 APICOMMAND参数docker run。有关 Docker CMD 参数的更多信息,请转到 https://docs.docker.com/engine/reference/builder/#cmd

      注意

      可以为您命令中的参数替代以及占位符使用默认值。有关更多信息,请参阅 Parameters

    3. 对于 vCPUs,指定要为容器预留的 vCPU 数量。此参数可将CpuShares中的创建容器的 部分Docker 远程 API--cpu-shares选项docker run。每个 vCPU 相当于 1024 个 CPU 份额。您必须指定至少一个 vCPU。

    4. 对于 Memory,指定要提供给作业容器的内存硬限制 (以 MiB 为单位)。如果您的容器尝试使用超出此处指定的内存,该容器将被终止。此参数可将Memory中的创建容器的 部分Docker 远程 API--memory选项docker run。您必须为任务指定至少 4 MiB 内存。

      注意

      您可以通过为特定实例类型的作业确定内存优先级,最大限度地提高资源利用率。有关说明,请参阅计算资源内存管理

    5. (可选)GPU 的数量中,指定您的作业使用的 GPU 的数量。

      作业在固定有指定数量的 GPU 的容器上运行。

    6. 其他配置部分中,可以指定要与容器配合使用的额外参数。

      1. (可选)Job 角色,您可以指定一个 IAM 角色,该角色为作业中的容器提供使用AmazonAPI。此功能使用 Amazon ECS IAM 角色来执行任务功能。有关更多信息(包括配置先决条件),请参阅任务的 IAM 角色中的Amazon Elastic Container Service 开发者指南

        注意

        Fargate 资源上运行的作业需要有作业角色。

        注意

        只有具有Amazon Elastic Container Service Task Role (Amazon Elastic Container Service 任务角色)信任关系如此处显示。有关创建 IAM 角色的更多信息,Amazon Batch作业,请参阅为任务创建 IAM 角色和策略中的Amazon Elastic Container Service 开发者指南

      2. 适用于执行角色,您可以指定 IAM 角色,该角色授予 Amazon ECS 容器和 Fargate 代理使Amazon代表您调用 API。此功能使用 Amazon ECS IAM 角色来执行任务功能。有关更多信息(包括配置先决条件),请参阅Amazon ECS 任务执行 IAM 角色中的Amazon Elastic Container Service 开发者指南

        注意

        Fargate 资源上运行的作业需要具有执行角色。

      3. (可选,仅适用于在 Fargate 资源上运行的作业)在分配公有 IP部分中,选择Enable (启用 Gem)为作业提供公有 IP 地址。对于在私有子网中运行的作业将出站流量发送到互联网,私有子网需要挂载 NAT 网关才能将请求路由到互联网。您可能需要执行该操作,以便拉取容器映像。有关更多信息,请参阅 。Amazon ECS 任务网络中的Amazon Elastic Container Service 开发者指南

      4. (可选)在挂载点部分中,您可以配置作业容器要访问的挂载点。

        1. 对于 Container path,输入容器上挂载主机卷的路径。

        2. 对于 Source volume,输入要挂载的卷的名称。

        3. 要使该卷对容器呈现只读状态,请选择 Read-only

      5. (可选,仅适用于在 EC2 资源上运行的作业)在Ulimits部分中,您可以配置任何ulimit值用于您的作业容器。

        1. 选择 Add limit (添加限制)

        2. 对于 Limit name,选择要应用的 ulimit。

        3. 对于 Soft limit,选择要为 ulimit 类型应用的软限制。

        4. 对于 Hard limit,选择要为 ulimit 类型应用的硬限制。

      6. (可选)在环境变量部分中,您可以指定要传递到您的作业容器的环境变量。此参数可将Env中的创建容器的 部分Docker 远程 API--env选项docker run

        重要

        建议不要对敏感信息(如凭证数据)使用纯文本环境变量。

        1. 选择 Add environment variable (添加环境变量)

        2. 对于 Key,指定环境变量的键。

          注意

          环境变量不能以AWS_BATCH。此命名约定是为了保留的,由Amazon Batch服务。

        3. 对于 Value,指定环境变量的值。

      7. (可选)在部分中,您可以为您的作业指定数据卷,以便传递到您的作业容器。要添加卷,请选择添加卷

        1. 适用于名称中,输入卷的名称。名称最长可达 255 个字符。它可包含大写和小写字母、数字、连字符 (-) 和下划线 (_)。

        2. (可选)要使用 Amazon EFS 文件系统,请选择启用 EFS

          1. 适用于FileSystem ID中,输入文件系统 ID。

          2. (可选)根目录中,输入 Amazon EFS 文件系统中要作为主机内的根目录挂载的目录。如果忽略此参数,将使用 Amazon EFS 卷的根目录。指定/与忽略此参数效果相同。

        3. (可选,仅适用于在 EC2 资源上运行的作业)对于源路径中,输入要提供给容器的主机实例的路径。如果您将此字段保留为空,则 Docker 守护程序将为您分配一个主机路径。如果您指定源路径,则数据卷将在主机容器实例上的指定位置保留,除非您将其删除。如果主机容器实例上不存在源路径,则 Docker 守护程序会创建它。如果该位置不存在,则源路径文件夹的内容将导出至容器。

        4. (可选)要使用传输加密,请选择启用传输加密。传输加密支持对 Amazon EFS 数据在Amazon Batch主机和亚马逊 EFS 服务器。如果使用 Amazon EFS IAM 授权,则必须启用传输加密。有关更多信息,请参阅 。对传输中的数据加密中的Amazon Elastic File System 用户指南

          1. (可选)传输加密端口中,输入要在Amazon Batch主机和亚马逊 EFS 服务器。如果未指定传输加密端口,将使用 Amazon EFS 挂载帮助程序使用的端口选择策略。值必须介于 0 到 65,535 之间。有关更多信息,请参阅 。EFS 挂载帮助程序中的Amazon Elastic File System 用户指南

          2. (可选)访问点 ID中,输入要使用的访问点 ID。如果指定了访问点,则必须省略根目录值或将其设置为/。有关更多信息,请参阅 。使用 Amazon EFS 访问点中的Amazon Elastic File System 用户指南

          3. (可选)要在装载 Amazon EFS 文件系统时使用执行角色,请选择使用选定的作业角色。有关更多信息,请参阅 Amazon Batch执行 IAM 角色

      8. (可选) 在 Security 部分,可以为您的作业容器配置安全选项。

        1. 要为您的作业容器授予对主机实例的提升权限(类似于root用户),选择启用特权模式。此参数可将Privileged中的创建容器的 部分Docker 远程 API--privileged选项docker run

        2. 对于 User,输入要在容器内使用的用户名。此参数可将User中的创建容器的 部分Docker 远程 API--user选项docker run

      9. (可选)在Linux 参数部分中,您可以配置要用于作业容器的任何设备映射。这使容器能够访问主机实例上的设备。

        1. (可选)在Devices部分,选择。添加设备

          1. (可选)在Devices部分,添加设备选择添加设备

          2. 对于主机路径,指定主机实例中设备的路径。

          3. 对于容器路径,指定容器实例中的路径以公开映射到主机实例的设备。如果将其留空(未指定),则在容器中使用主机路径。

          4. 对于权限,选择要应用于容器中的设备的一个或多个权限。可用的权限有 READWRITEMKNOD

        2. (可选)在共享内存大小部分中 MiB 输入/dev/shm卷。

        3. (可选)在最大交换大小部分中,输入容器可以使用的总交换内存量(以 MiB 为单位)。

        4. (可选)在Swappiness部分中,输入介于 0 和 100 之间的值以指示容器的交换行为。如果未指定,并启用交换,则默认值为 60。有关更多信息,请参阅 。互换Job 定义参数

        5. (可选)在Tmpfs部分中,要添加 tmpfs 装载,请选择添加 Tmpfs

          1. 容器路径字段中,输入容器中的绝对文件路径,其中tmpfs卷已装入。

          2. Size字段中,输入 tmpfs 卷的大小(以 MiB 为单位)。

          3. (可选)在挂载选项字段中,输入装载选项。有关更多信息(包括可用挂载选项列表),请参阅mountOptionsJob 定义参数

      10. (可选)在日志配置部分中,可以配置要用于作业容器的日志驱动程序。默认情况下,awslogs使用日志驱动程序。

        1. 日志驱动程序部分中,选择要使用的日志驱动程序。有关可用日志驱动程序的更多信息,请参阅日志驱动程序Job 定义参数

        2. (可选)在选项部分中,选择添加选项以添加一个选项。

          1. 名称字段中,输入选项的名称。可用的选项因日志驱动程序而异;有关详细信息,请参阅日志驱动程序的文档。

          2. 字段中,输入选项的值。

        3. (可选)在Secrets部分中,选择添加密钥添加密钥。

          1. 名称字段中,输入密钥的名称。有关更多信息,请参阅 。分泌物Job 定义参数

          2. 字段中,输入密钥的 ARN。

  10. (可选)在 Parameters (参数) 部分中,您可以指定参数替代默认值和占位符,以便在您的作业容器启动时所运行的命令中使用。有关更多信息,请参阅 Parameters

    1. 选择 Add parameter (添加参数)

    2. 对于 Key,指定参数的键。

    3. 对于 Value,指定参数的值。

  11. (可选)在标签部分中,可以为要与作业定义关联的每个标签指定键和值。有关更多信息,请参阅 给您的 Amazon Batch 资源加标签

  12. 选择 Create job definition