AWS Batch
用户指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

创建多节点并行作业定义

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

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

创建多节点并行作业定义

  1. https://console.amazonaws.cn/batch/ 打开 AWS Batch 控制台。

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

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

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

  5. 对于 Job attempts,指定尝试作业的最大次数 (在尝试失败的情况下)。有关更多信息,请参阅自动作业重试

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

  7. 选择 Job requires multiple node configurations (作业需要多节点配置),然后完成以下子步骤。要改为创建单节点并行作业定义,请参阅创建作业定义

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

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

    3. (可选)要将节点限制为特定实例类型,请从下拉菜单中选择一个。如果未指定实例类型,则 AWS Batch 从计算环境中的可用实例类型中选择满足最大节点(vCPU 和内存)要求的最小实例类型。

      重要

      请务必选择可在计算环境中启动的实例类型。否则,您的作业将卡在 RUNNABLE 状态并阻止后续作业。

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

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

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

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

  9. Node properties (节点属性) 部分中,配置您的节点组。默认情况下,使用默认数量的节点为您创建单个节点组。

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

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

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

    注意

    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)进行进一步限定。

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

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

    注意

    如果您尝试通过为任务提供尽可能多的用于特定实例类型的内存来最大程度地利用资源,请参阅 Memory Management

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

    此参数将映射到 Docker Remote API创建容器部分中的 Cmd 以及 docker runCOMMAND 参数。有关 Docker CMD 参数的更多信息,请转到 https://docs.docker.com/engine/reference/builder/#cmd

    注意

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

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

  16. (可选)对于任务角色,您可以指定一个 IAM 角色,该角色为任务中的容器提供使用 AWS API 的权限。此功能使用 Amazon ECS IAM 角色来执行任务功能。有关更多信息(包括配置先决条件),请参阅 Amazon Elastic Container Service Developer Guide 中的适用于任务的 IAM 角色

    注意

    此处仅显示具有 Amazon Elastic Container Service 任务角色信任关系的角色。有关为 AWS Batch 任务创建 IAM 角色的更多信息,请参阅 Amazon Elastic Container Service Developer Guide 中的为任务创建 IAM 角色和策略

  17. 对于 User,输入要在容器内使用的用户名。此参数将映射到 Docker Remote API创建容器部分中的 User 以及 docker run--user 选项。

  18. (可选) 指定挂载点以供您的作业容器访问。

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

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

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

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

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

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

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

    重要

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

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

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

      注意

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

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

  21. 对于 Ulimits,配置用于您的作业容器的任何 ulimit 值。

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

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

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

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

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

  23. 选择 Create job definition