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

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

创建作业定义

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

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

创建新的作业定义

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

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

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

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

  5. 对于 Platform (平台),如果作业在 EC2 实例上运行,则选择 EC2如果作业在容量上运行,则选择 AWS Fargate Fargate。有关更多信息,请参阅AWS Batch,发布时间:AWS Fargate

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

    1. 对于 Job attempts (作业尝试),指定在失败时尝试作业的次数。此数字必须介于一 (1) 到十 (10) 之间(含一 (1) 和十 (10))。

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

  7. (可选)对于 Execution timeout (执行超时),指定您希望作业尝试运行的最大秒数。如果尝试超过超时持续时间,则会停止,状态会变为 FAILED。有关更多信息,请参阅作业超时

  8. 对于 Multi-node parallel (多节点并行),请将此框保持未选中状态。要改为创建多节点并行作业定义,请参阅创建多节点并行作业定义

  9. Container properties (容器属性) 中,您可以指定放置作业时传递给 Docker 守护程序的属性。

    1. 对于 Image (映像),选择要用于作业的 Docker 映像。默认情况下,Docker Hub 注册表中的映像可用。您还可以使用 指定其他存储库repository-url/image:tag。 允许最多 255 个字母 (大写和小写字母)、数字、连字符、下划线、冒号、句点、正斜杠和井号。此参数将映射到 的 Image 部分创建容器中的 Docker Remote 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 Remote APICOMMAND 参数。 docker run有关 Docker CMD 参数的更多信息,请转到 https://docs.docker.com/engine/reference/builder/#cmd

      注意

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

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

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

      注意

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

    5. (可选)对于 Number of GPUs 数),指定您的作业使用的 GPUs数。

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

    6. Additional configuration (其他配置) 部分中,您可以指定要用于容器的其他参数。

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

        注意

        作业角色是资源上运行的作业所必需的Fargate。

        注意

        此处仅显示具有 Amazon Elastic Container Service 任务角色信任关系的角色。有关为 IAM 作业创建 AWS Batch 角色的更多信息,请参阅 https://docs.amazonaws.cn/AmazonECS/latest/developerguide/task-iam-roles.html#create_task_iam_policy_and_role 中的Amazon Elastic Container Service Developer Guide为任务创建 IAM 角色和策略

      2. 对于 Execution role (执行角色),您可以指定一个 IAM 角色,该角色向Amazon ECS容器和Fargate代理授予代表您进行 AWS API 调用的权限。此功能使用 Amazon ECS IAM 角色来执行任务功能。有关更多信息(包括配置先决条件),请参阅 中的Amazon ECS任务执行 IAM Amazon Elastic Container Service Developer Guide角色

        注意

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

      3. (可选,仅适用于在 Fargate 资源上运行的作业)在 Assign public IP (分配公有 IP) 部分中,选择 Enable (启用) 为作业提供公有 IP 地址。对于在私有子网中运行以向 Internet 发送出站流量的作业,私有子网需要连接 NAT 网关以将请求路由到 Internet。您可能需要执行此操作,以便提取容器映像。有关更多信息,请参阅 Amazon ECS 中的Amazon Elastic Container Service Developer Guide任务联网

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

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

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

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

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

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

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

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

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

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

        重要

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

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

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

          注意

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

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

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

        1. 对于 Name (名称),输入卷的名称。名称的长度最多为 255 个字符。它可以包含大小写字母、数字、连字符 (-) 和下划线 (_)。

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

          1. 对于 Filesystem ID (文件系统 ID),输入文件系统 ID。

          2. (可选)对于 Root directory (根目录),输入Amazon EFS文件系统内的目录以作为主机中的根目录进行挂载。如果省略此参数,则使用Amazon EFS卷的根目录。指定 / 与忽略此参数具有相同的效果。

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

        4. (可选) 要使用传输加密,请选择 Enable transit encryption (启用传输加密)。传输加密可对Amazon EFS主机和AWS Batch服务器之间传输Amazon EFS的数据启用加密。如果使用 Amazon EFS IAM 授权,则必须启用传输加密。有关更多信息,请参阅 中的https://docs.amazonaws.cn/efs/latest/ug/encryption-in-transit.html加密传输中的数据Amazon Elastic File System 用户指南

          1. (可选)对于 Transit encryption port (中转加密端口),输入在AWS Batch主机和Amazon EFS服务器之间发送加密数据时使用的端口。如果您未指定中转加密端口,它将使用Amazon EFS挂载帮助程序使用的端口选择策略。该值必须介于 0 到 65535 之间。有关更多信息,请参阅 中的 EFS Amazon Elastic File System 用户指南挂载帮助程序

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

          3. (可选)要在挂载Amazon EFS文件系统时使用 执行角色,请选择 Use selected job role (使用所选作业角色)。有关更多信息,请参阅AWS Batch 执行 IAM 角色

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

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

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

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

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

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

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

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

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

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

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

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

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

  12. 选择 Create job definition