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

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

创建多节点并行作业定义

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

注意

AWS Fargate 不支持多节点并行作业。

要创建单节点作业定义,请参阅创建作业定义

创建多节点并行作业定义

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

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

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

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

  5. 适用于平台中,选择EC2

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

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

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

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

  8. 适用于多节点并行中,选择启用多节点并行,然后完成以下子步骤。要改为创建单节点并行作业定义,请参阅创建作业定义

    1. 对于 Number of nodes (节点数),输入要用于作业的节点的总数。

    2. 对于 Main node (主节点),输入要用于主节点的节点索引。默认主节点索引为 0

    3. Select添加节点范围。此操作可创建节点范围部分。

      1. 对于 Target nodes (目标节点),使用 range_start:range_end 表示法为节点组指定范围。

        对于您为作业指定的节点数,您可以创建最多 5 个节点范围。节点范围使用节点的索引值,并且节点索引从 0 开始。最终节点组的范围结束索引值应是您在步骤 1中指定的节点数减 1。例如,如果指定了 10 个节点,并且要使用单个节点组,则结束范围应为 9。

      2. In容器属性,则可以为节点范围内的节点指定需传递给 Docker 守护程序的属性。

        1. 适用于映像下,选择要用于您的作业的 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 角色,该角色为作业中的容器提供使用 AWS API 的权限。此功能使用 Amazon ECS IAM 角色来执行任务功能。有关更多信息(包括配置先决条件),请参阅适用于任务的 IAM 角色中的Amazon Elastic Container Service Container Service

            注意

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

            注意

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

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

            1. 适用于名称中,为您的卷输入名称。最多能包含 255 个字母 (大写和小写字母)、数字、连字符和下划线。

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

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

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

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

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

          4. (可选)在 Ulimit 部分中,您可以配置要用于作业容器的任何 ulimit 值。

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

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

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

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

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

            重要

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

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

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

              注意

              环境变量不能以 AWS_BATCH 开头;此命名约定是为 AWS Batch 服务所设置的变量保留的。

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

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

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

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

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

            1. 设备部分中,选择添加设备

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

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

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

  9. 返回步骤 1并对要为作业配置的每个节点组重复执行该步骤。

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

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

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

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

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

  12. 选择 Create job definition