Job 定义参数 - Amazon Batch
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

Job 定义参数

Job 定义分为几个部分:

  • 作业定义名称

  • 作业定义的类型

  • 参数替换占位符的默认值

  • 作业的容器属性

  • 任务定义的 Amazon EKS 属性,这些属性是在 Amazon EKS 资源上运行的任务所必需的

  • 多节点parallel 作业所需的节点属性

  • 在 Fargate 资源上运行任务所必需的平台功能

  • 作业定义的默认标签传播细节

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

  • 作业定义的默认调度优先级

  • 作业定义的默认标签

  • 作业定义的默认超时

Job 定义名称

jobDefinitionName

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

类型:字符串

必需:是

类型

type

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

类型:字符串

有效值: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。此命名约定是为Amazon Batch服务所设置的变量保留的。

类型:键/值对的数组

必需:否

name

环境变量的名称。

类型:字符串

必需:当使用 environment 时为必需。

value

环境变量的值。

类型:字符串

必需:当使用 environment 时为必需。

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

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

类型:字符串

必需:否

fargatePlatformConfiguration

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

类型:FargatePlatformConfiguration 对象

必需:否

platformVersion

AmazonFargate 平台版本用于作业LATEST,或者使用Amazon 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 APICreate a container(创建容器)部分中的 Devices 以及 docker run--device 选项。

注意

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

类型:设备对象数组

必需:否

hostPath

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

类型:字符串

必需:是

containerPath

设备在容器中暴露的路径是。如果未指定,则设备将显示在与主机路径相同的路径上。

类型:字符串

必需:否

permissions

容器中设备的权限。如果未指定,则权限将设置为READWRITE、和MKNOD

类型:字符串数组

必需:否

有效值:READ |WRITE |MKNOD

initProcessEnabled

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

类型:布尔值

必需:否

maxSwap

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

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

注意

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

类型:整数

必需:否

sharedMemorySize

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

注意

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

类型:整数

必需:否

swappiness

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

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

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

    注意

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

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

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

注意

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

类型:整数

必需:否

tmpfs

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

类型:Tmpfs 对象数组

注意

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

必需:否

containerPath

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

类型:字符串

必需:是

mountOptions

tmpfs卷挂载选项列表。

有效值:defaultsro” | “|rw” |suid “|nosuid” | “|devnodev” | “|exec” |noexec “|sync” | “|asyncdirsync” | “|remount” | “|mandnomand” | “|atimenoatime” | “|diratime” | “|nodiratimebind” | “|rbindunbindable” | “|runbindable” | “|privaterprivate” | “|sharedrshared” | “|slave” | “rslave” |relatime “|norelatime” | “strictatime” |nostrictatime “|”mode“|"uid "|" "|gid" "|nr_inodes" "|nr_blocks" "|"mpol

类型:字符串数组

必需:否

size

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

类型:整数

必需:是

logConfiguration

作业的日志配置规范。

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

注意

Amazon 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

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

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

注意

Amazon 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 日志记录驱动程序。有关更多信息,请参阅使用 awslogs 日志驱动程序 Docker 文档中的 Amazon CloudWatch 日志记录驱动程序

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 文档中的 Syslo g 日志记录驱动程序

类型:字符串

必需:是

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

注意

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

options

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

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

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

必需:否

secretOptions

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

类型:对象数组

必需:否

name

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

类型:字符串

必需:是

valueFrom

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

注意

如果 SSM Parameter Store 参数存在于要启动的任务中,则可以使用参数的完整 ARN 或名称。Amazon Web Services 区域如果参数存在于不同的区域,则必须指定完整的 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 资源上运行的作业。不要提供或将其指定为假。

"privileged": true|false

类型:布尔值

必需:否

readonlyRootFilesystem

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

"readonlyRootFilesystem": true|false

类型:布尔值

必需:否

resourceRequirements

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

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

类型:对象数组

必需:否

type

要分配给资源的容器的类型。支持的资源包括 GPUMEMORY、和 VCPU

类型:字符串

必需:当使用 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 和 20MiB 8

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、1、2、8 和 16。

Fargate 按需型 vCPU 资源计数配额的默认值为 6 个 vCPUs。有关 Fargate 配额的更多信息,请参阅 Amazon Web Services 云科技一般引用中的 AmazonFargate 配额

类型:字符串

必需:当使用 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 参数存在于要启动的作业中使用,则可以使用参数的完整 ARN 或名称。Amazon Web Services 区域如果参数存在于不同的区域,则必须指定完整的 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 文件系统时是否使用在作业定义中定义的作业 IAM 角色。Amazon Batch如果启用,则必须在 EFSVolumeConfiguration 中启用传输加密。如果忽略此参数,将使用默认值 DISABLED。有关更多信息,请参阅使用 Amazon EFS 访问点

类型:字符串

有效值:ENABLED | DISABLED

必需:否

fileSystemId

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

类型:字符串

必需:否

rootDirectory

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

重要

如果在中指定了 EFS 访问点authorizationConfig,则必须省略根目录值,或者将其设置为/。这将强制执行在 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 EK 属性

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

podProperties

任务的Kubernetes pod 资源的属性。

类型:EksPodProperties 对象

必需:否

containers

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

类型:EksContainer 对象

必需:否

args

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

如果引用的环境变量不存在,则命令中的引用不会更改。例如,如果引用的是 “$(NAME1)” 且NAME1环境变量不存在,则命令字符串将保留 “”$(NAME1)$$替换为$,并且生成的字符串未扩展。例如,$$(VAR_NAME)VAR_NAME环境变量$(VAR_NAME)是否存在的形式传递。有关更多信息,请参阅 Doc kerfile 参考中的 CMD Kubernetes文档中的 pod 定义命令和参数

类型:字符串数组

必需:否

command

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

如果引用的环境变量不存在,则命令中的引用不会更改。例如,如果引用的是 “$(NAME1)” 且NAME1环境变量不存在,则命令字符串将保留 “”$(NAME1)$$被替换为$,生成的字符串不会扩展。例如,$$(VAR_NAME)将以VAR_NAME环境变量$(VAR_NAME)是否存在的形式传递。无法更新入口点。有关更多信息,请参阅 Dockerfile 参考文献中的 ENTRYPOIN T 和Kubernetes文档中的为容器和 En trypoint 定义命令和参数

类型:字符串数组

必需:否

env

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

注意

环境变量不能以 “AWS_BATCH” 开头。这种命名约定是为Amazon Batch集合的变量保留的。

类型:EksContainerEnvironmentVariable 对象数组

必需:否

name

环境变量的名称。

类型:字符串

必需:是

value

环境变量的值。

类型:字符串

必需:否

image

用于启动容器的 Docker 映像。

类型:字符串

必需:是

imagePullPolicy

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

类型:字符串

必需:否

name

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

类型:字符串

必需:否

resources

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

类型:EksContainerResourceRequirements 对象

必需:否

limits

要为容器预留的资源的类型和数量。这些值根据指定的不同而有所不同。name可以使用limitsrequests对象请求资源。

memory

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

注意

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

cpu

为容器预留的 CPU 的数量。值必须为的偶数0.25cpu可以在limitsrequests、或两者中指定。cpu如果在这两个位置都指定了,则中指定的值limits必须至少等于中指定的值requests

nvidia.com/gpu

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

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

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

必需:否

requests

为容器请求的资源的类型和数量。这些值根据指定的不同而有所不同。name可以使用limitsrequests对象请求资源。

memory

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

注意

如果您尝试通过为作业提供尽可能多的用于特定实例类型的内存来最大程度地利用资源,请参阅计算资源内存管理

cpu

为容器预留的 CPU 的数量。值必须为的偶数0.25cpu可以在limitsrequests、或两者中指定。cpu如果两者都指定,则中指定的值limits必须至少等于中指定的值requests

nvidia.com/gpu

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

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

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

必需:否

securityContext

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

类型:EksContainerSecurityContext 对象

必需:否

privileged

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

类型:布尔值

必需:否

readOnlyRootFilesystem

当此参数为true,将对此容器提供对其根文件系统的只读访问权。默认值为 false。此参数映射到ReadOnlyRootFilesystemKubernetes文档中 V olumes 中的策略和文件系统容器安全策略

类型:布尔值

必需:否

runAsGroup

指定此参数后,容器将以指定的组 ID (gid) 运行。如果未指定此参数,则默认值为在图像元数据中指定的组。此参数映射到RunAsGroupKubernetes文档用户和群组容器安全策略中的和策略。MustRunAs

类型:长整型

必需:否

runAsNonRoot

指定此参数后,容器将uid以非 0 的用户身份运行。如果未指定此参数,则强制执行此参数。此参数映射到RunAsUserKubernetes文档用户和群组容器安全策略中的和策略。MustRunAsNonRoot

类型:长整型

必需:否

runAsUser

指定此参数后,容器将以指定的用户 ID (uid) 运行。如果未指定此参数,则默认值为在图像元数据中指定的用户。此参数映射到RunAsUserKubernetes文档用户和群组容器安全策略中的和策略。MustRanAs

类型:长整型

必需:否

volumeMounts

Amazon EKS 任务容器的容器将挂载容器。有关中的卷和卷装载的更多信息Kubernetes,请参阅Kubernetes文档中的

类型:EksContainerVolumeMount 对象数组

必需:否

mountPath

挂载卷的路径。

类型:字符串

必需:否

name

卷装架的名称。此项必须与 Pod 中其中一个卷的名称匹配。

类型:字符串

必需:否

readOnly

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

类型:布尔值

必需:否

dnsPolicy

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

有效值:Default |ClusterFirst |ClusterFirstWithHostNet

类型:字符串

必需:否

hostNetwork

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

类型:布尔值

必需:否

serviceAccountName

用于运行 Pod 的服务账户的名称。有关更多信息,请参阅 A mazon EKS 用户指南中的KubernetesKubernetes服务账户和配置服务账户以担任 IAM 角色,以及Kubernetes文档中的 pod 配置服务账户

类型:字符串

必需:否

volumes

为使用 Amazon EKS 资源的任务定义指定容量。

类型:EksVolume 对象数组

必需:否

emptyDi

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

类型:EksEmptyDir 对象

必需:否

medium

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

""

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

“记忆”

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

类型:字符串

必需:否

大小限制

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

类型:字符串

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

必需:否

主机路径

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

类型:EksHostPath 对象

必需:否

path

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

类型:字符串

必需:否

name

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

类型:字符串

必需:是

密钥

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

类型:EksSecret 对象

必需:否

可选

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

类型:布尔值

必需:否

秘密名称

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

类型:字符串

必需:是

平台功能

platformCapabilities

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

注意

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

类型:字符串

有效值:EC2 | FARGATE

必需:否

传播标签

propagateTags

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

注意

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

类型:布尔值

必需:否

节点属性

nodeProperties

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

注意

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

类型:NodeProperties 对象

必需:否

mainNode

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

类型:整数

必需:是

numNodes

与多节点并parallel 作业关联的节点数。

类型:整数

必需:是

nodeRangeProperties

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

类型: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

与作业定义关联的键值对标签。有关更多信息,请参阅给您的 Amazon Batch 资源加标签

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

必需:否

Timeout

timeout

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

类型:JobTimeout 对象

必需:否

attemptDurationSeconds

Amazon Batch终止未完成作业后的持续时间(根据作业尝试startedAt的时间戳测得)。超时时间的最小值为 60 秒。

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

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

类型:整数

必需:否