在 Amazon EC2 资源上创建使用多个容器的单节点作业定义 - AWS Batch

在 Amazon EC2 资源上创建使用多个容器的单节点作业定义

完成以下步骤,在 Amazon Elastic Compute Cloud(Amazon EC2)资源上创建具有多个容器的单节点作业定义。

要在 Amazon EC2 资源上创建新的作业定义,请执行以下操作:
  1. 打开AWS Batch控制台,地址:https://console.aws.amazon.com/batch/

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

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

  4. 选择创建

  5. 对于编排类型,选择 Amazon Elastic Compute Cloud (Amazon EC2)

  6. 对于作业定义结构,请禁使用传统的 containerProperties 结构处理。

  7. 对于 EC2 平台配置,请关闭启用多节点并行处理。

  8. 选择下一步

  9. 常规配置部分中,输入以下内容:

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

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

    3. 开启调度优先级 – 可选。输入介于 0 到 100 之间的计划优先级值。值越高,优先级越高。

    4. 展开标签 – 可选,然后选择添加标签以向该资源添加标签。输入键和可选的值,然后选择添加标签

    5. 开启传播标签,以将标签从作业和作业定义传播到 Amazon ECS 任务。

  10. 重试策略 – 可选部分中,输入以下内容:

    1. 对于作业尝试,请输入 AWS Batch 尝试将作业移至 RUNNABLE 状态的次数。请输入 1 到 10 之间的数字。

    2. 对于重试策略条件,选择添加退出时评估。至少输入一个参数值,然后选择一个操作。对于每组条件,必须将操作设置为重试退出。这些操作意味着以下几点:

      • 重试 — AWS Batch 重试,直到达到您指定的作业尝试次数。

      • 退出 – AWS Batch 停止重试作业。

      重要

      如果选择退出时添加评估,则必须至少配置一个参数并选择一个操作或选择退出时移除评估

  11. 任务属性部分中,输入以下内容:

    1. 对于执行角色 – 条件,选择一个允许 Amazon ECS 代理代表您执行 AWS API 调用的角色。有关创建执行角色的更多信息,请参阅教程:创建 IAM 执行角色

    2. 选择启用 ECS execute 命令,以实现直接访问 Amazon ECS 容器 Shell 并绕过主机操作系统。必须选择一个任务角色

      重要

      ECS execute 命令要求文件系统是可写的。

    3. 对于任务角色,选择一个允许容器代表您执行 AWS API 调用的 Amazon ECS Identity and Access Management(IAM)角色。有关更多信息,请参阅《Amazon Elastic Container Service 开发人员指南》中的 Amazon ECS 任务 IAM 角色

    4. 对于 IPC 模式,选择 hosttasknone。如果指定了 host,则在同一容器实例上指定了主机 IPC 模式的任务中的所有容器将与主机 Amazon EC2 实例共享相同的 IPC 资源。如果指定了任务,则指定任务中的所有容器将共享相同的 IPC 资源。如果指定了任何选项,则任务的容器中的 IPC 资源是私有的,不与任务中或容器实例上的其他容器共享。如果未指定任何值,则 IPC 资源命名空间共享取决于容器实例上的 Docker 守护程序设置。

    5. 对于 PID 模式,选择 hosttask。例如,监控 sidecar 可能需要 pidMode 访问有关在同一任务中运行的其他容器的信息。如果指定了 host,则在同一容器实例上指定了主机 PID 模式的任务中的所有容器将与主机 Amazon EC2 实例共享相同的进程命名空间。如果指定了 task,则指定任务中的所有容器将共享相同的过程命名空间。如果未指定任何值,则默认值为每个容器的私有命名空间。

  12. 消耗性资源部分中,输入以下内容:

    1. 输入唯一的名称已请求的值

    2. 您可以通过选择添加消耗性资源来添加更多消耗性资源。

  13. 存储部分中,输入以下设置:

    1. 输入卷的名称源路径,然后选择添加卷。您也可以选择开启启用 EFS。

    2. 您可以通过选择添加卷来添加更多卷。

  14. 对于参数,选择添加参数以添加参数替换占位符,作为(可选的)对。

  15. 选择下一页

  16. 容器配置部分:

    1. 对于 Name(名称),输入容器的名称。

    2. 对于基本容器,如果该容器为必需,则启用该容器。

    3. 对于映像,选择要用于您的作业的 Docker 映像。默认情况下,Docker Hub 注册表中的映像可用。也可以使用repository-url/image:tag指定其他存储库。名称长度不超过 225 个字符。可以包含大小写字母、数字、连字符(-)、下划线(_)、冒号(:)、正斜杠(/)和数字符号(#)。此参数可映射到 Docker Remote API创建容器部分中的Imagedocker runIMAGE参数。

      注意

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

      • Amazon ECR 公有存储库中的映像使用完整的registry/repository[:tag]registry/repository[@digest]命名惯例(例如,public.ecr.aws/registry_alias/my-web-app:latest)。

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

    4. 对于资源要求,配置以下各项参数:

      1. 对于 vCPU 数,选择容器的 CPU 数量。

      2. 对于内存,选择容器的内存量。

      3. 对于 GPU – 可选,选择该容器 GPU 数量。

    5. 对于 User,输入要在容器内使用的用户名。

    6. 开启启用只读文件系统以移除对卷的写入权限。

    7. 开启特权,以在主机实例上授予作业容器升级权限,类似于根用户。

    8. 对于命令,将命令的等效 JSON 字符串数组输入到该字段中。

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

      注意

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

    9. 对于存储库凭证 – 可选,输入包含您的凭证的密钥的 ARN。

    10. 对于环境变量 可选,选择添加环境变量以添加要传递到容器的环境变量。

    11. Linux 参数 – 可选部分中:

      1. 开启启用初始化进程以在容器内运行初始化进程。

      2. 对于共享内存大小,输入 /dev/shm 卷的大小(以 MiB 为单位)。

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

      4. Swappiness 中输入一个介于 0 和 100 之间的值,以指示容器的 swappiness 行为。如果不指定值且启用了交换,则值默认值为 60。

      5. 对于设备,选择添加设备以添加设备:

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

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

        3. 对于权限,选择要应用于设备的一个或多个权限。可用权限包括读取写入MKNOD

      6. 对于 Tmpfs,请选择添加 tmpfs 以添加 tmpfs 挂载。

    12. 注意

      Firelens 日志记录必须在专用容器中进行。配置 Firelens 日志记录:

      • 在除专用 firelens 容器之外的每个容器中,将日志记录驱动程序设置为 awsfirelens

      • 在您的 Firelens 容器中,将 Firelens 配置 – 可选日志记录配置 – 可选设置为日志记录的目标

      Linux 配置 – 可选部分中:

      重要

      AWS Batch 会在非 MNP、非 Fargate 的 Amazon ECS 作业上强制执行 host 网络模式。Amazon ECS Firelen 必须使用根用户。运行使用 host 网络模式的作业时,Amazon ECS 建议不要使用根用户(UID 0)运行容器,以提供安全性。因此,所有使用 Firelens 日志记录的非 MNP、非 Fargate ECS 作业都不符合安全最佳实践。

      1. 对于类型,选择 fluentdfluentbit

      2. 对于选项,输入该选项的名称/值对。您可以使用已添加的选项来添加其他选项

    13. 日志记录配置 – 可选部分中:

      1. 对于日志驱动程序,请选择要使用的日志驱动程序。有关可用日志驱动程序的更多信息,请参阅 LogConfiguration:logDriver

        注意

        默认情况下,使用 awslogs 日志驱动程序。

      2. 选项中,选择添加选项以添加选项。输入名称-值对,然后选择添加选项

      3. 对于密钥,选择添加密钥。输入名称-值对,然后选择添加密钥以添加密钥。

        提示

        有关更多信息,请参阅 LogConfiguration:secretOptions

    14. 对于挂载点 – 可选,选择添加挂载点以添加数据卷的挂载点。您必须指定源卷和容器路径。

    15. 对于密钥 – 可选,选择添加密钥以添加密钥。然后,输入名称-值对,并选择添加密钥

      提示

      有关更多信息,请参阅 LogConfiguration:secretOptions

    16. 对于 Ulimits – 可选,选择添加 ulimit 为容器添加一个 ulimits 值。输入名称软限制硬限制值,然后选择添加 ulimit

    17. 对于依赖项 – 可选,选择添加容器依赖项。选择容器名称,其状态决定了此容器何时会启动。

  17. 如果只配置了一个容器,则必须选择添加容器并完成新容器的配置。否则,请选择下一步进行检查。