参考:ContainerProperties 的作业定义参数 - AWS Batch

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

参考:ContainerProperties 的作业定义参数

使用 ContainerProperties 的作业定义分为几个部分:

  • 作业定义名称

  • 作业定义的类型

  • 参数替换占位符默认值

  • 作业的容器属性

  • 在 Amazon EKS 资源上运行的作业所需的作业定义的 Amazon EKS 属性

  • 多节点并行作业所需的节点属性

  • 在 Fargate 资源上运行的作业所需的平台功能

  • 作业定义的默认标签传播详细信息

  • 作业定义的默认重试策略

  • 作业定义的默认计划优先级

  • 作业定义的默认标签

  • 作业定义的默认超时

作业定义名称

jobDefinitionName

注册作业定义时,需要指定一个名称。名称长度不超过 128 个字符。可以包含大小写字母、数字、连字符(-)和下划线(_)。使用该名称注册的第一个作业定义的修订版本为 1。任何使用该名称注册的后续作业定义都会有一个增量修订号。

类型:字符串

必需:是

类型

type

当您注册作业定义时,需要指定作业类型。如果作业在 Fargate 资源上运行,则不支持multinode。有关多节点并行作业的更多信息,请参阅创建多节点并行作业定义

类型:字符串

有效值:container | multinode

必需:是

参数

parameters

提交作业时,可以指定应替换占位符或覆盖默认作业定义参数的参数。作业提交请求中的参数优先于作业定义中的默认值。这意味着可以对使用相同格式的多个作业使用相同的作业定义。还可以在提交时以编程方式更改命令中的值。

类型:字符串到字符串映射

必需:否

注册作业定义时,可以在作业容器属性的command字段中使用参数替代占位符。语法如下所示。

"command": [ "ffmpeg", "-i", "Ref::inputfile", "-c", "Ref::codec", "-o", "Ref::outputfile" ]

在上面的示例中,命令中包含参数替代占位符Ref::inputfileRef::codecRef::outputfile。您可以使用作业定义中的parameters对象为这些占位符设置默认值。例如,要为Ref::codec占位符设置默认值,可以在作业定义中指定以下内容:

"parameters" : {"codec" : "mp4"}

在提交此作业定义以运行时,容器命令中的Ref::codec参数将被替换为默认值。mp4

容器属性

注册作业定义时,指定容器属性列表,在置放作业时,需要将这些容器属性传递给容器实例上的 Docker 进程守护程序。作业定义中允许使用以下容器属性。对于单节点作业,这些容器属性是在作业定义级别设置的。对于多节点并行作业,每个节点组的容器属性是在节点属性级别设置的。

command

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

"command": ["string", ...]

类型:字符串数组

必需:否

environment

要传递给容器的环境变量。此参数将映射到 Docker Remote API创建容器部分中的Env以及docker run--env选项。

重要

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

注意

环境变量不得以AWS_BATCH开头。这种命名惯例是为AWS Batch服务所设置的变量保留的。

类型:键/值对的数组

必需:否

name

环境变量的名称。

类型:字符串

必需:是,当使用environment时。

value

环境变量的值。

类型:字符串

必需:是,当使用environment时。

"environment" : [ { "name" : "envName1", "value" : "envValue1" }, { "name" : "envName2", "value" : "envValue2" } ]
executionRoleArn

注册作业定义时,可以指定 IAM 角色。该角色为 Amazon ECS 容器代理提供了代表您调用其关联策略中指定的 API 操作的权限。对于在 Fargate 资源上运行的作业,必须提供执行角色。有关更多信息,请参阅 AWS Batch IAM 执行角色

类型:字符串

必需:否

fargatePlatformConfiguration

适用于在 Fargate 资源上运行的作业的平台配置。在 EC2 资源上运行的作业不得指定此参数。

类型:FargatePlatformConfiguration 对象

必需:否

platformVersion

作业所使用的AWS Fargate 平台版本,或LATEST使用最近批准的AWS Fargate 平台版本。

类型:字符串

默认:LATEST

必需:否

image

用于启动作业的映像。此字符串将直接传递给 Docker 进程守护程序。默认情况下,Docker Hub 注册表中的映像可用。也可以使用repository-url/image:tag指定其他存储库。允许最多 255 个字母(大写和小写字母)、数字、连字符、下划线、冒号、句点、正斜杠和井号。此参数可映射到 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) 进行进一步限定。

类型:字符串

必需:是

instanceType

要用于多节点并行作业的实例类型。多节点并行作业中的所有节点组必须使用相同的实例类型。此参数不适用于单节点容器作业或在 Fargate 资源上运行的作业。

类型:字符串

必需:否

jobRoleArn

注册作业定义时,可以指定 IAM 角色。该角色为作业容器提供了代表您调用其关联的策略中指定的 API 操作的权限。有关更多信息,请参阅 Amazon Elastic Container Service 开发人员指南中的任务的 IAM 角色

类型:字符串

必需:否

linuxParameters

特定于 Linux 的修改应用于容器的详细信息,如设备映射的详细信息。

"linuxParameters": { "devices": [ { "hostPath": "string", "containerPath": "string", "permissions": [ "READ", "WRITE", "MKNOD" ] } ], "initProcessEnabled": true|false, "sharedMemorySize": 0, "tmpfs": [ { "containerPath": "string", "size": integer, "mountOptions": [ "string" ] } ], "maxSwap": integer, "swappiness": integer }

类型:LinuxParameters 对象

必需:否

devices

映射到容器的设备列表。此参数将映射到 Docker Remote API创建容器部分中的Devices以及 Docker 运行--device选项。

注意

此参数不适用于在 Fargate 资源上运行的作业。

类型:设备对象数组

必需:否

hostPath

主机容器实例中可用设备的路径。

类型:字符串

必需:是

containerPath

在容器中公开设备的路径。如果未指定,则设备将在与主机路径相同的路径上公开。

类型:字符串

必需:否

permissions

容器中设备的权限。如果未指定,则将权限设置为READWRITEMKNOD

类型:字符串数组

必需:否

有效值:READ |WRITE |MKNOD

initProcessEnabled

如果为 true,则在容器内运行init进程,以转发信号和获得进程。此参数会将--init选项映射到 Docker 运行。此参数要求容器实例上的 Docker Remote API 版本为 1.25 或更高版本。要检查容器实例上的 Docker Remote API 版本,请登录到容器实例并运行以下命令:sudo docker version | grep "Server API version"

类型:布尔值

必需:否

maxSwap

作业可以使用的交换内存总量(以 MiB 为单位)。该参数会转换为 Docker 运行--memory-swap选项,其中,该值为容器内存和maxSwap值之和。有关更多信息,请参阅 Docker 文档中的--memory-swap详细信息

如果指定maxSwap值为0,则该容器不使用交换。接受的值为0或任何正整数。如果省略maxSwap参数,该容器将为其运行所在的容器实例使用交换配置。必须为要使用的swappiness参数设置maxSwap值。

注意

此参数不适用于在 Fargate 资源上运行的作业。

类型:整数

必需:否

sharedMemorySize

/dev/shm卷的大小值 (以 MiB 为单位)。此参数会将--shm-size选项映射到 Docker 运行

注意

此参数不适用于在 Fargate 资源上运行的作业。

类型:整数

必需:否

swappiness

可以使用此功能调整容器的内存交换行为。除非绝对必要,否则0的一个swappiness值将导致交换不会发生。swappiness值为100将导致页面被积极地交换。接受的值为0100之间的整数。如果未指定swappiness参数,则使用默认值60。如果未指定maxSwap的值,则此参数将被忽略。如果maxSwap设置为 0,则容器不使用交换。此参数会将--memory-swappiness选项映射到 Docker 运行

在使用每个容器交换配置时,请考虑以下事项。

  • 必须在容器实例上启用并分配交换空间才能供容器使用。

    注意

    默认情况下,Amazon ECS 优化 AMI 没有启用交换功能。必须在实例上启用交换才能使用此功能。有关更多信息,请参阅《Amazon EC2 用户指南》的中的实例存储交换卷如何使用交换文件分配内存以便在 Amazon EC2 实例中用作交换空间?

  • 只有使用 EC2 资源的作业定义才支持交换空间参数。

  • 如果作业定义中忽略了maxSwapswappiness参数,每个容器都有默认的swappiness值:60。总的交换使用量限制为容器的内存预留量的两倍。

注意

此参数不适用于在 Fargate 资源上运行的作业。

类型:整数

必需:否

tmpfs

tmpfs挂载的容器路径、挂载选项和大小。

类型:Tmpfs 对象数组

注意

此参数不适用于在 Fargate 资源上运行的作业。

必需:否

containerPath

挂载tmpfs卷的容器中的绝对文件路径。

类型:字符串

必需:是

mountOptions

tmpfs卷挂载选项列表。

有效值:"defaults" | "ro" | "rw" | "suid" | "nosuid" | "dev" | "nodev" | "exec" | "noexec" | "sync" | "async" | "dirsync" | "remount" | "mand" | "nomand" | "atime" | "noatime" | "diratime" | "nodiratime" | "bind" | "rbind" | "unbindable" | "runbindable" | "private" | "rprivate" | "shared" | "rshared" | "slave" | "rslave" | "relatime" | "norelatime" | "strictatime" | "nostrictatime" | "mode" | "uid" | "gid" | "nr_inodes" | "nr_blocks" | "mpol"

类型:字符串数组

必需:否

size

tmpfs卷的大小 (以 MiB 为单位)。

类型:整数

必需:是

logConfiguration

作业的日志配置规范。

此参数将映射到 Docker Remote API创建容器部分中的LogConfig以及 Docker 运行--log-driver选项。默认情况下,容器使用与 Docker 进程守护程序相同的日志记录驱动程序。但容器可能通过在容器定义中使用此参数指定日志驱动程序,以此来使用不同于 Docker 进程守护程序的日志记录驱动程序。要对容器使用另一个日志记录驱动程序,必须在容器实例或另一个日志服务器上配置日志系统,以提供远程日志记录选项。有关其他支持的日志驱动程序选项的更多信息,请参阅 Docker 文档中的配置日志记录驱动程序

注意

AWS Batch目前支持提供给 Docker 进程守护程序的一小部分日志记录驱动程序(在 LogConfiguration 数据类型中显示)。

此参数要求容器实例上的 Docker Remote API 版本为 1.18 或更高版本。要检查容器实例上的 Docker Remote API 版本,请登录到容器实例并运行以下命令:sudo docker version | grep "Server API version"

"logConfiguration": { "devices": [ { "logDriver": "string", "options": { "optionName1" : "optionValue1", "optionName2" : "optionValue2" } "secretOptions": [ { "name" : "secretOptionName1", "valueFrom" : "secretOptionArn1" }, { "name" : "secretOptionName2", "valueFrom" : "secretOptionArn2" } ] } ] }

类型:LogConfiguration 对象

必需:否

logDriver

要用于作业的日志驱动程序。默认情况下,AWS Batch会启用awslogs日志驱动程序。为此参数列出的有效值是默认情况下 Amazon ECS 容器代理可与之通信的日志驱动程序。

此参数将映射到 Docker Remote API创建容器部分中的LogConfig以及 Docker 运行--log-driver选项。默认情况下,作业使用与 Docker 进程守护程序相同的日志记录驱动程序。但作业可能通过在作业定义中使用此参数指定日志驱动程序,以此来使用不同于 Docker 进程守护程序的日志记录驱动程序。如果要为作业指定另一个日志记录驱动程序,则必须在计算环境中的容器实例上配置日志系统。或者,也可以在另一台日志服务器上对其进行配置,以提供远程日志记录选项。有关其他支持的日志驱动程序选项的更多信息,请参阅 Docker 文档中的配置日志记录驱动程序

注意

AWS Batch目前支持提供给 Docker 进程守护程序的一小部分日志记录驱动程序。可能会在 Amazon ECS 容器代理的未来版本中提供其他日志驱动程序。

支持的日志驱动程序为awslogsfluentdgelfjson-filejournaldlogentriessyslogsplunk

注意

在 Fargate 资源上运行的作业仅限于awslogssplunk日志驱动程序。

此参数要求容器实例上的 Docker Remote API 版本为 1.18 或更高版本。要检查容器实例上的 Docker Remote API 版本,请登录到容器实例并运行以下命令:sudo docker version | grep "Server API version"

注意

在容器实例上运行的 Amazon ECS 容器代理必须将该实例上的可用日志记录驱动程序注册到ECS_AVAILABLE_LOGGING_DRIVERS环境变量。否则,放置在该实例上的容器将无法使用这些日志配置选项。有关更多信息,请参阅《Amazon Elastic Container Service 开发人员指南》中的 Amazon ECS 容器代理配置

awslogs

指定 Amazon CloudWatch Logs 日志记录驱动程序。有关更多信息,请参阅使用 awslogs 日志驱动程序和 Docker 文档中的 Amazon CloudWatch Logs 日志记录驱动程序

fluentd

指定 Fluentd 日志记录驱动程序。有关更多信息(包括用法和选项),请参阅 Docker 文档中的 Fluentd 日志记录驱动程序

gelf

指定 Graylog Extended Format (GELF) 日志记录驱动程序。有关更多信息(包括用法和选项),请参阅 Docker 文档中的 Graylog Extended Format 日志记录驱动程序

journald

指定 journald 日志记录驱动程序。有关更多信息(包括用法和选项),请参阅 Docker 文档中的 Journald 日志记录驱动程序

json-file

指定 JSON 文件日志记录驱动程序。有关更多信息(包括用法和选项),请参阅 Docker 文档中的 JSON 文件日志记录驱动程序

splunk

指定 Splunk 日志记录驱动程序。有关更多信息(包括用法和选项),请参阅 Docker 文档中的 Splunk 日志记录驱动程序

syslog

指定 syslog 日志记录驱动程序。有关更多信息(包括用法和选项),请参阅 Docker 文档中的 Syslog 日志记录驱动程序

类型:字符串

必需:是

有效值:awslogs | fluentd | gelf | journald | json-file | splunk | syslog

注意

如果有之前未列出但您希望与 Amazon ECS 容器代理一起使用的自定义驱动程序,则可使 GitHub 上提供的 Amazon ECS 容器代理项目分支,并对其进行自定义以便与该驱动程序结合使用。我们鼓励您针对要包含的更改提交拉取请求。但是,Amazon Web Services 当前不支持运行此软件修改后副本的请求。

options

要发送到作业的日志驱动程序中的日志配置选项。

此参数要求容器实例上的 Docker Remote API 版本为 1.19 或更高版本。

类型:字符串到字符串映射

必需:否

secretOptions

表示要传递到日志配置的密文的对象。有关更多信息,请参阅 指定敏感数据

类型:对象数组

必需:否

name

要在作业中设置的日志驱动程序选项的名称。

类型:字符串

必需:是

valueFrom

要向容器的日志配置公开的秘钥的 Amazon 资源名称(ARN)。支持的值为 Secrets Manager 秘钥的完整 ARN 或 SSM Parameter Store 中参数的完整 ARN。

注意

如果 SSM Parameter Store 参数存在于要启动的任务所在的同一AWS 区域中,则可以使用参数的完整 ARN 或名称。如果参数存在于不同的区域,则必须指定完整的 ARN。

类型:字符串

必需:是

memory

已弃用此参数,请改用resourceRequirements

为作业预留的 MiB 内存的数量。

例如,如果您的作业定义包含类似于以下内容的语法,则说明如何使用resourceRequirements

"containerProperties": { "memory": 512 }

使用resourceRequirements的等效语法如下。

"containerProperties": { "resourceRequirements": [ { "type": "MEMORY", "value": "512" } ] }

类型:整数

必需:是

mountPoints

容器中数据卷的挂载点。此参数将映射到 Docker Remote API创建容器部分中的 Volumes 以及 docker run--volume 选项。

"mountPoints": [ { "sourceVolume": "string", "containerPath": "string", "readOnly": true|false } ]

类型:对象数组

必需:否

sourceVolume

要挂载的卷的名称。

类型:字符串

必需:是,当使用mountPoints时。

containerPath

要将主机卷挂载到的容器上的路径。

类型:字符串

必需:是,当使用mountPoints时。

readOnly

如果此值为true,则容器具有对卷的只读访问权。如果此值为false,则容器可对卷进行写入。

类型:布尔值

必需:否

默认值:False

networkConfiguration

适用于在 Fargate 资源上运行的作业的网络配置。在 EC2 资源上运行的作业不得指定此参数。

"networkConfiguration": { "assignPublicIp": "string" }

类型:对象数组

必需:否

assignPublicIp

指示作业是否具有公有 IP 地址。如果作业需要出站网络访问权限,则必须这样做。

类型:字符串

有效值:ENABLED | DISABLED

必需:否

默认:DISABLED

privileged

当此参数为 true 时,将对此容器提供对主机容器实例的提升的权限(类似于root用户)。此参数将映射到 Docker Remote API创建容器部分中的Privileged以及docker run--privileged选项。此参数不适用于在 Fargate 资源上运行的作业。请勿提供或将其指定为 false。

"privileged": true|false

类型:布尔值

必需:否

readonlyRootFilesystem

当此参数为 true 时,将对此容器提供对其根文件系统的只读访问权。此参数将映射到 Docker Remote API创建容器部分中的 ReadonlyRootfs 以及 docker run--read-only 选项。

"readonlyRootFilesystem": true|false

类型:布尔值

必需:否

resourceRequirements

要分配给容器的资源的类型和数量。支持的资源包括GPUMEMORYVCPU

"resourceRequirements" : [ { "type": "GPU", "value": "number" } ]

类型:对象数组

必需:否

type

要分配给容器的资源类型。支持的资源包括GPUMEMORYVCPU

类型:字符串

必需:是,当使用resourceRequirements时。

value

要为容器预留的指定资源的数量。这些值根据type指定的不同而有所不同。

type="GPU"

为容器预留的物理 GPU 数量。为作业中所有容器预留的 GPU 数量不能超过启动作业的计算资源上可用 GPU 的数量。

type="MEMORY"

要提供给容器的内存的硬限制(以 MiB 为单位)。如果容器尝试使用超出此处指定的内存,该容器将被终止。此参数将映射到 Docker Remote APICreate a container(创建容器)部分中的 Memory 以及 docker run--memory 选项。您必须为作业指定至少 4 MiB 内存。对于多节点并行 (MNP) 作业来说,这是必需的,但可以在多个位置指定。必须至少为每个节点指定一次。此参数将映射到 Docker Remote APICreate a container(创建容器)部分中的 Memory 以及 docker run--memory 选项。

注意

如果要通过为特定实例类型的作业提供尽可能多的内存来最大化资源利用率,请参阅计算资源内存管理

对于在 Fargate 资源上运行的作业,value必须与受支持的值之一匹配。此外,这些VCPU值必须是该内存值支持的值之一。

VCPU MEMORY

0.25 个 vCPU

512、1024 和 2048 MiB

0.5 个 vCPU

1024-4096 MiB 以 1024 MiB 为增量

1 个 vCPU

2048-8192 MiB 以 1024 MiB 为增量

2 个 vCPU

4096-16384 MiB 以 1024 MiB 为增量

4 个 vCPU

8192-30720 MiB 以 1024 MiB 为增量

8 个 vCPU

16384-61440 MiB 以 4096 MiB 为增量

16 个 vCPU

32768-122880 MiB 以 8192 MiB 为增量

type="VCPU"

为作业预留的 vCPU 的数量。此参数将映射到 Docker Remote APICreate a container(创建容器)部分中的 CpuShares 以及 docker run--cpu-shares 选项。每个 vCPU 相当于 1024 个 CPU 份额。对于在 EC2 资源上运行的作业,必须至少指定一个 vCPU。这是必需的,但可以在多个位置指定。必须至少为每个节点指定一次。

对于在 Fargate 资源上运行的作业,value必须与受支持的值之一匹配,且MEMORY值必须是该 VCPU 值支持的值之一。支持的值为 0.25、0.5、1、2、4、8 和 16。

Fargate 按需 vCPU 资源计数配额的默认值为 6 个 vCPU。有关 Fargate 配额的更多信息,请参阅Amazon Web Services 一般参考AWS Fargate 配额

类型:字符串

必需:是,当使用resourceRequirements时。

secrets

作为环境变量公开的作业密文。有关更多信息,请参阅 指定敏感数据

"secrets": [ { "name": "secretName1", "valueFrom": "secretArn1" }, { "name": "secretName2", "valueFrom": "secretArn2" } ... ]

类型:对象数组

必需:否

name

包含密文的环境变量的名称。

类型:字符串

必需:是,当使用secrets时。

valueFrom

要向容器公开的密文。支持的值是 Secrets Manager 密文的完整 Amazon 资源名称(ARN)或 SSM Parameter Store 中参数的完整 ARN。

注意

如果 SSM Parameter Store 参数存在于要启动的作业所在的同一AWS 区域中,则可以使用参数的完整 ARN 或名称。如果参数存在于不同的区域,则必须指定完整的 ARN。

类型:字符串

必需:是,当使用secrets时。

ulimits

要在容器中设置的ulimits值的列表。此参数将映射到 Docker Remote API创建容器部分中的 Ulimits 以及 docker run--ulimit 选项。

"ulimits": [ { "name": string, "softLimit": integer, "hardLimit": integer } ... ]

类型:对象数组

必需:否

name

ulimittype

类型:字符串

必需:是,当使用ulimits时。

hardLimit

ulimit类型的硬限制。

类型:整数

必需:是,当使用ulimits时。

softLimit

ulimit类型的软限制。

类型:整数

必需:是,当使用ulimits时。

user

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

"user": "string"

类型:字符串

必需:否

vcpus

已弃用此参数,请改用resourceRequirements

为容器预留的 vCPU 的数量。

作为resourceRequirements使用方法的示例,如果作业定义包含类似于以下的行:

"containerProperties": { "vcpus": 2 }

使用resourceRequirements的等效行如下所示。

"containerProperties": { "resourceRequirements": [ { "type": "VCPU", "value": "2" } ] }

类型:整数

必需:是

volumes

注册作业定义时,可以指定需传递给容器实例上的 Docker 进程守护程序的卷的列表。容器属性中允许以下参数:

"volumes": [ { "name": "string", "host": { "sourcePath": "string" }, "efsVolumeConfiguration": { "authorizationConfig": { "accessPointId": "string", "iam": "string" }, "fileSystemId": "string", "rootDirectory": "string", "transitEncryption": "string", "transitEncryptionPort": number } } ]
name

卷的名称。最多能包含 255 个字母 (大写和小写字母)、数字、连字符和下划线。此名称已在容器定义sourceVolumemountPoints参数中引用。

类型:字符串

必需:否

host

host参数的内容确定数据卷是否一直保存在主机容器实例上以及存储它的位置上。如果host参数为空,则 Docker 进程守护程序将为数据卷分配一个主机路径。但是,在与该卷关联的容器停止运行后,不保证保存数据。

注意

此参数不适用于在 Fargate 资源上运行的作业。

类型:对象

必需:否

sourcePath

向容器提供的主机容器实例上的路径。如果此参数为空,则 Docker 进程守护程序将分配一个主机路径。

如果host参数包含sourcePath文件位置,则数据卷将在主机容器实例上的指定位置保留,除非手动将其删除。如果主机容器实例上不存在sourcePath值,则 Docker 进程守护程序将创建该值。如果该位置不存在,则将导出源路径文件夹的内容。

类型:字符串

必需:否

efsVolumeConfiguration

使用 Amazon Elastic File System 文件系统进行任务存储时,指定此参数。有关更多信息,请参阅 Amazon EFS 卷

类型:对象

必需:否

authorizationConfig

Amazon EFS 文件系统的授权配置详细信息。

类型:字符串

必需:否

accessPointId

要使用的 Amazon EFS 接入点 ID。如果指定了接入点,则必须省略在EFSVolumeConfiguration中指定的根目录值,或者将其设置为/。这将强制执行 EFS 接入点上设置的路径。如果使用接入点,则必须在EFSVolumeConfiguration中启用传输加密。有关更多信息,请参阅《Amazon Elastic File System 用户指南》中的使用 Amazon EFS 接入点

类型:字符串

必需:否

iam

确定在挂载 Amazon EFS 文件系统时是否使用在作业定义中定义的AWS Batch作业 IAM 角色。如果启用,则必须在EFSVolumeConfiguration中启用传输加密。如果忽略此参数,将使用默认值DISABLED。有关更多信息,请参阅 使用 Amazon EFS 接入点

类型:字符串

有效值:ENABLED | DISABLED

必需:否

fileSystemId

要使用的 Amazon EFS 文件系统 ID。

类型:字符串

必需:否

rootDirectory

Amazon EFS 文件系统中要作为主机内的根目录挂载的目录。如果忽略此参数,将使用 Amazon EFS 卷的根目录。如果指定,/这与忽略此参数效果相同。最大长度为 4096 个字符。

重要

如果在authorizationConfig中指定了 EFS 接入点,则必须省略根目录参数,或者将其设置为/。这将在 Amazon EFS 接入点上强制执行设置的路径。

类型:字符串

必需:否

transitEncryption

确定是否对 Amazon ECS 主机和 Amazon EFS 服务器之间传输的 Amazon EFS 数据启用加密。如果使用 Amazon EFS IAM 授权,则必须启用传输加密。如果忽略此参数,将使用默认值DISABLED。有关更多信息,请参阅《Amazon Elastic File System 用户指南》中的加密传输中数据

类型:字符串

有效值:ENABLED | DISABLED

必需:否

transitEncryptionPort

在 Amazon ECS 主机和 Amazon EFS 服务器之间发送加密数据时要使用的端口。如果未指定传输加密端口,将使用 Amazon EFS 挂载帮助程序使用的端口选择策略。该值必须在 0 到 65535 之间。有关更多信息,请参阅《Amazon Elastic File System 用户指南》中的 EFS 挂载帮助程序

类型:整数

必需:否

Amazon EKS 属性

具有各种属性的对象,这些属性特定于基于 Amazon EKS 的作业。不得为基于 Amazon ECS 的作业定义指定此项。

podProperties

作业的Kubernetes容器组(pod)资源的属性。

类型:EksPodProperties 对象

必需:否

containers

在 Amazon EKS 容器组上使用的容器属性。

类型:EksContainer 对象

必需:否

args

入口点的参数数组。如果未指定,则使用容器映像的CMD。这对应Kubernetes中容器组(pod) 入口点 部分的args成员。使用容器的环境扩展环境变量引用。

如果引用的环境变量不存在,则命令中的引用不会更改。例如,如果引用是“$(NAME1)”且NAME1环境变量不存在,则命令字符串将保留“$(NAME1)”。$$替换为$,并且生成的字符串未扩展。例如,无论VAR_NAME环境变量是否存在,$$(VAR_NAME)都会作为$(VAR_NAME)传递。有关更多信息,请参阅《Dockerfile 参考》中的 CMDKubernetes文档中的为容器组(pod)定义命令和参数

类型:字符串数组

必需:否

command

容器的入口点。这不是在 Shell 中运行。如果未指定,则使用容器映像的ENTRYPOINT。使用容器的环境扩展环境变量引用。

如果引用的环境变量不存在,则命令中的引用不会更改。例如,如果引用是“$(NAME1)”且NAME1环境变量不存在,则命令字符串将保留“$(NAME1)”。$$替换为$,并且生成的字符串未扩展。例如,无论VAR_NAME环境变量是否存在,$$(VAR_NAME)都会作为$(VAR_NAME)传递。无法更新入口点。有关更多信息,请参阅 《Dockerfile 参考》中的入口点Kubernetes文档中的为容器设置启动时要执行的命令和参数入口点

类型:字符串数组

必需:否

env

要传递给容器的环境变量。

注意

环境变量不得以 AWS_BATCH 开头。这种命名惯例是为AWS Batch所设置的变量保留的。

类型:EksContainerEnvironmentVariable 对象数组

必需:否

name

环境变量的名称。

类型:字符串

必需:是

value

环境变量的值。

类型:字符串

必需:否

image

用于启动容器的 Docker 映像。

类型:字符串

必需:是

imagePullPolicy

容器的图像提取策略。支持的值有AlwaysIfNotPresentNever。此参数默认为IfNotPresent。但是,如果指定了:latest标签,则默认为Always。有关更多信息,请参阅Kubernetes文档中的更新映像

类型:字符串

必需:否

name

容器的名称。如果未指定名称,则使用默认名称“Default”。容器组中的每个容器必须具有唯一的名称。

类型:字符串

必需:否

resources

要分配给容器的资源的类型和数量。支持的资源包括memorycpunvidia.com/gpu。有关更多信息,请参阅Kubernetes文档中的容器组(pod)和容器的资源管理

类型:EksContainerResourceRequirements 对象

必需:否

limits

为容器预留的资源类型和数量。这些值因指定的name而异。可以使用limitsrequests对象请求资源。

memory

容器的内存硬限值(以 MiB 为单位)用整数表示,带“Mi”后缀。如果容器试图超出指定的内存,则容器将终止。必须为作业指定至少 4MiB 的内存。可以在limitsrequests或两者中指定memory。如果在这两个位置中指定了memory,则limits中指定的值必须等于requests中指定的值。

注意

为了最大程度地利用资源,请为作业提供尽可能多的内存,以用于正在使用的具体实例类型。要了解如何操作,请参阅 计算资源内存管理

cpu

为容器预留的 CPU 的数量。值必须是0.25的偶数倍。可以在limitsrequests或两者中指定cpu。如果在这两个位置中指定了cpu,则limits中指定的值必须至少与requests中指定的值一样大。

nvidia.com/gpu

为容器预留的 GPU 的数量。值必须是整数。可以在limitsrequests或两者中指定memory。如果在这两个位置中指定了 memory,则 limits 中指定的值必须等于 requests 中指定的值。

类型:字符串到字符串映射

值长度限制:最小长度为 1。最大长度为 256。

必需:否

requests

为容器请求的资源类型和数量。这些值因指定的name而异。可以使用limitsrequests对象请求资源。

memory

容器的内存硬限值(以 MiB 为单位)用整数表示,带“Mi”后缀。如果容器试图超出指定的内存,则容器将终止。必须为作业指定至少 4MiB 的内存。可以在limitsrequests或两者中指定memory。如果在两者中均指定了memory,则limits中指定的值必须等于requests中指定的值。

注意

如果要通过为特定实例类型的作业提供尽可能多的内存来最大化资源利用率,请参阅计算资源内存管理

cpu

为容器预留的 CPU 的数量。值必须是0.25的偶数倍。可以在limitsrequests或两者中指定cpu。如果在两者中均指定了cpu,则limits中指定的值必须至少与requests中指定的值一样大。

nvidia.com/gpu

为容器预留的 GPU 的数量。值必须是整数。可以在limitsrequests或两者中指定nvidia.com/gpu。如果在两者中均指定了 nvidia.com/gpu,则 limits 中指定的值必须等于 requests 中指定的值。

类型:字符串到字符串映射

值长度限制:最小长度为 1。最大长度为 256。

必需:否

securityContext

作业的安全上下文。有关更多信息,请参阅Kubernetes文档中的为容器组(pod)或容器配置安全上下文

类型:EksContainerSecurityContext 对象

必需:否

privileged

当此参数为true时,将对此容器提供对主机容器实例的提升权限。权限级别与root用户权限类似。默认值为 false。该参数映射到Kubernetes文档特权容器组(pod)安全策略中的privileged策略。

类型:布尔值

必需:否

readOnlyRootFilesystem

当此参数为true时,将对此容器提供对其根文件系统的只读访问权。默认值为 false。该参数映射到Kubernetes文档卷和文件系统容器组(pod)安全策略中的ReadOnlyRootFilesystem策略。

类型:布尔值

必需:否

runAsGroup

指定此参数时,容器将作为指定的组 ID (gid) 运行。如果未指定此参数,则默认为映像元数据中指定的群组。该参数映射到Kubernetes文档用户和群组容器组(pod)安全策略中的RunAsGroupMustRunAs策略。

类型:长整型

必需:否

runAsNonRoot

指定此参数时,容器是以uid用户(非 0)身份运行的。如果未指定此参数,则会强制执行此规则。该参数映射到Kubernetes文档用户和群组容器组(pod)安全策略中的RunAsUserMustRunAsNonRoot策略。

类型:长整型

必需:否

runAsUser

指定此参数时,容器将作为指定的用户 ID (uid) 运行。如果未指定此参数,则默认为映像元数据中指定的用户。该参数映射到Kubernetes文档用户和群组容器组(pod)安全策略中的RunAsUserMustRanAs策略。

类型:长整型

必需:否

volumeMounts

用于 Amazon EKS 作业容器的卷挂载。有关Kubernetes中卷和卷挂载的更多信息,请参阅Kubernetes文档中的

类型:EksContainerVolumeMount 对象数组

必需:否

mountPath

挂载卷的容器上的路径。

类型:字符串

必需:否

name

卷挂载的名称。这必须与容器组中其中一个卷的名称相匹配。

类型:字符串

必需:否

readOnly

如果此值为true,则容器具有对卷的只读访问权。否则,容器可以写入卷。默认值为 false

类型:布尔值

必需:否

dnsPolicy

容器组的 DNS 策略。默认值为 ClusterFirst。如果未指定hostNetwork参数,则默认值为ClusterFirstWithHostNetClusterFirst指示任何与配置的集群域后缀不匹配的 DNS 查询都将转发到继承自节点的上游名称服务器。如果在 RegisterJobDefinition API 操作中没有为dnsPolicy指定任何值,那么 DescribeJobDefinitionsDescribeJobs API 操作都不会为dnsPolicy返回任何值。容器组规格设置将包含ClusterFirstClusterFirstWithHostNet,具体取决于hostNetwork参数的值。有关更多信息,请参阅Kubernetes文档中的容器组(pod)的 DNS 策略

有效值:Default |ClusterFirst |ClusterFirstWithHostNet

类型:字符串

必需:否

hostNetwork

指示容器组是否使用主机的网络 IP 地址。默认值为 true。将其设置为false将启用Kubernetes容器组(pod)联网模型。大多数AWS Batch工作负载为仅出口,不需要为传入连接的每个容器组分配 IP 的开销。有关更多信息,请参阅Kubernetes文档中的主机命名空间容器组(pod)网络

类型:布尔值

必需:否

serviceAccountName

用于运行容器组的服务账户的名称。有关更多信息,请参阅《Amazon EKS 用户指南》中的Kubernetes服务账户配置Kubernetes服务账户以代入 IAM 角色,以及Kubernetes文档中的为容器组(pod)配置服务账号

类型:字符串

必需:否

volumes

为使用 Amazon EKS 资源的作业定义指定卷。

类型:EksVolume 对象数组

必需:否

emptyDir

指定Kubernetes emptyDir卷的配置。将容器组分配给节点时,会先创建emptyDir卷。只要容器组(pod)在该节点上运行,该卷就会存在。emptyDir 卷最初是空的。容器组中的所有容器都可以读取和写入emptyDir卷中的文件。但是,emptyDir卷可以挂载在每个容器中的相同或不同的路径上。出于任何原因将容器组从节点中移除时,将永久删除emptyDir中的数据。有关更多信息,请参阅Kubernetes文档中的 emptyDir

类型:EksEmptyDir 对象

必需:否

medium

存储卷的介质。默认值为空字符串,该字符串使用节点的存储。

""

(默认)使用节点的磁盘存储。

“Memory”

使用由节点 RAM 支持的tmpfs卷。节点重新启动时,卷的内容会丢失,并且该卷上的任何存储都将计入容器的内存限制。

类型:字符串

必需:否

sizeLimit

卷的最大大小。默认情况下,未定义最大大小。

类型:字符串

长度限制:最小长度为 1。最大长度为 256。

必需:否

hostPath

指定Kubernetes hostPath卷的配置。hostPath卷将主机节点文件系统中的现有文件或目录挂载到容器组中。有关更多信息,请参阅Kubernetes文档中的 hostPath

类型:EksHostPath 对象

必需:否

path

主机上要挂载到容器组中的文件或目录的路径。

类型:字符串

必需:否

name

卷的名称。必须允许该名称作为 DNS 子域名。有关更多信息,请参阅Kubernetes文档中的 DNS 子域名

类型:字符串

必需:是

secret

指定Kubernetes secret卷的配置。有关更多信息,请参阅Kubernetes文档中的密文

类型:EksSecret 对象

必需:否

可选

指定是否必须定义密文或密文的密钥。

类型:布尔值

必需:否

secretName

密文的名称。必须允许该名称作为 DNS 子域名。有关更多信息,请参阅Kubernetes文档中的 DNS 子域名

类型:字符串

必需:是

平台功能

platformCapabilities

作业定义所需的平台功能。如果未指定任何值,则默认为EC2。对于在 Fargate 资源上运行的作业,指定了FARGATE

注意

如果作业在 Amazon EKS 资源上运行,则不得指定platformCapabilities

类型:字符串

有效值:EC2 | FARGATE

必需:否

传播标签

propagateTags

指定是否将标签从作业或作业定义传播到相应的 Amazon ECS 任务。如果未指定任何值,则不会传播标签。只能在创建任务后将标签传播到任务。对于名称相同的标签,作业标签的优先级高于作业定义标签。如果作业和作业定义的组合标签总数超过 50 个,则作业将转为FAILED状态。

注意

如果作业在 Amazon EKS 资源上运行,则不得指定propagateTags

类型:布尔值

必需:否

节点属性

nodeProperties

注册多节点并行作业定义时,必须指定节点属性的列表。这些节点属性定义了作业中要使用的节点数量、主节点索引以及要使用的不同节点范围。如果作业在 Fargate 资源上运行,则不能指定nodeProperties。请改用containerProperties。作业定义中允许使用以下节点属性。有关更多信息,请参阅 多节点并行作业

注意

如果作业在 Amazon EKS 资源上运行,则不得指定nodeProperties

类型:NodeProperties 对象

必需:否

mainNode

指定多节点并行作业的主节点的节点索引。此节点索引值必须小于节点数。

类型:整数

必需:是

numNodes

与多节点并行任务关联的节点数。

类型:整数

必需:是

nodeRangeProperties

与多节点并行作业关联的节点范围及其属性的列表。

注意

节点组即共享相同容器属性的一组完全相同的作业节点。您可以使用 AWS Batch 为每个作业指定最多五个不同的节点组。

类型:NodeRangeProperty 对象数组

必需:是

targetNodes

节点范围(使用节点索引值)。0:3范围表示索引值为 03 的节点。如果省略起始范围值 (:n),则使用 0 开始范围。如果省略结束范围值 (n:),则使用可能的最高节点索引结束范围。累积节点范围必须考虑所有节点 (0:n)。可以嵌套节点范围,例如0:104:5。在这种情况下,4:5范围属性会覆盖0:10属性。

类型:字符串

必需:否

container

节点范围的容器详细信息。有关更多信息,请参阅 容器属性

类型:ContainerProperties 对象

必需:否

重试策略

retryStrategy

在注册作业定义时,针对使用此作业定义提交的失败作业,可以选择性地指定要用于这些作业的重试策略。在 SubmitJob 操作期间,指定的任何重试策略都将覆盖此处定义的重试策略。默认情况下,每个作业尝试一次。如果指定多次尝试,则在作业失败的情况下,则会重试该作业。失败尝试的示例包括:作业返回非零退出代码或容器实例终止。有关更多信息,请参阅 自动作业重试

类型:RetryStrategy 对象

必需:否

attempts

让作业进入RUNNABLE状态的次数。可以指定 1 到 10 之间的尝试次数。如果attempts大于 1,则当作业失败时将重试多次,直到它进入RUNNABLE状态。

"attempts": integer

类型:整数

必需:否

evaluateOnExit

最多由 5 个对象组成的数组,指定了在哪些条件下重试作业或作业失败。如果指定了此参数,则还必须指定attempts参数。如果指定了evaluateOnExit但没有匹配的条目,则会重试该作业。

"evaluateOnExit": [ { "action": "string", "onExitCode": "string", "onReason": "string", "onStatusReason": "string" } ]

类型:EvaluateOnExit 对象数组

必需:否

action

指定在满足所有指定条件(onStatusReasononReasononExitCode)时要执行的操作。这些值不区分大小写。

类型:字符串

必需:是

有效值:RETRY | EXIT

onExitCode

包含 glob 模式,用于与作业返回的ExitCode十进制表示法进行匹配。模式最多可包含 512 个字符。其中只能包含数字。不能包含字母或特殊字符。可以选择以星号 (*) 结束,这样只有字符串的开头需要完全匹配。

类型:字符串

必需:否

onReason

包含 glob 模式,用于与作业返回的Reason进行匹配。模式最多可包含 512 个字符。可以包含字母、数字、句点 (.)、冒号 (:) 和空格(空格、制表符)。可以选择以星号 (*) 结束,这样只有字符串的开头需要完全匹配。

类型:字符串

必需:否

onStatusReason

包含 glob 模式,用于与作业返回的StatusReason进行匹配。模式最多可包含 512 个字符。可以包含字母、数字、句点 (.)、冒号 (:) 和空格(空格、制表符)。可以选择以星号 (*) 结束,这样只有字符串的开头需要完全匹配。

类型:字符串

必需:否

计划优先级

schedulingPriority

使用此作业定义提交的作业的计划优先级。此项仅影响具有公平份额策略的作业队列中的作业。具有较高计划优先级的作业在具有较低计划优先级的作业之前计划。

支持的最小值为 0,支持的最大值为 9999。

类型:整数

必需:否

Tags

tags

与作业定义关联的键值配对标签。有关更多信息,请参阅 标记 AWS Batch 资源

类型:字符串到字符串映射

必需:否

Timeout

timeout

可以为作业配置超时时间,以便在某个作业运行的时间超过超时时间时让AWS Batch终止该作业。有关更多信息,请参阅 作业超时。如果作业是因超时而终止,则不会重试。在 SubmitJob 操作期间指定的任何超时配置将覆盖此处定义的超时配置。有关更多信息,请参阅 作业超时

类型:JobTimeout 对象

必需:否

attemptDurationSeconds

startedAt终止未完成作业后的持续时间(从作业尝试的AWS Batch时间戳开始计算),以秒为单位。超时时间的最小值为 60 秒。

对于数组作业,超时适用于子作业,不适用于父数组作业。

对于多节点并行(MNP)作业,超时适用于整个作业,不适用于单个节点。

类型:整数

必需:否