本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
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::inputfile
和Ref::codec
。您可以使用作业定义中的Ref::outputfile
parameters
对象为这些占位符设置默认值。例如,要为
占位符设置默认值,可以在作业定义中指定以下内容:Ref::codec
"parameters" : {"codec" : "mp4"}
当提交此作业定义以供运行时,容器命令中的
参数将替换为默认值Ref::codec
mp4
。
容器属性
当您注册作业定义时,请指定将传递给容器实例上的 Docker 进程守护程序的容器属性列表。作业定义中允许使用以下容器属性。对于单节点作业,这些容器属性是在作业定义级别设置的。对于多节点并行作业,每个节点组的容器属性是在节点属性级别设置的。
command
-
传递给容器的命令。此参数映射到 Docker Remote API
创建容器 部分中的 Cmd
,以及 docker run的 COMMAND
参数。有关 DockerCMD
参数的更多信息,请参阅 https://docs.docker.com/engine/reference/builder/#cmd。 "command": ["
string
", ...]类型:字符串数组
必需:否
environment
-
要传递给容器的环境变量。此参数将映射到 Docker Remote API
的创建容器 部分中的 Env
以及 docker run的 --env
选项。重要
建议不要对敏感信息(如凭证数据)使用纯文本环境变量。
注意
环境变量不得以开头
AWS_BATCH
。此命名约定是为Amazon Batch服务所设置的变量保留的。类型:键/值对的数组
必需:否
"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 注册表中的映像可用。您也可以使用
指定其他存储库。允许最多 255 个字母(大写和小写字母)、数字、连字符、下划线、冒号、句点、正斜杠和井号。此参数可映射到 Docker Remote APIrepository-url
/image
:tag
的创建容器 部分中的 Image
和 docker run的 IMAGE
参数。注意
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 上的官方存储库中的映像使用一个名称 (例如,
ubuntu
或mongo
)。 -
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
的Create a container (创建容器)部分中的 Devices
以及 docker run的 --device
选项。注意
此参数不适用于在 Fargate 资源上运行的作业。
类型:设备对象数组
必需:否
hostPath
-
主机容器实例中可用设备的路径。
类型:字符串
必需:是
containerPath
-
设备在容器中暴露的路径是。如果未指定,则设备将显示在与主机路径相同的路径上。
类型:字符串
必需:否
permissions
-
容器中设备的权限。如果未指定,则权限将设置为
READ
WRITE
、和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
将导致页面被积极地交换。接受的值为0
到100
之间的整数。如果未指定swappiness
参数,则使用默认值60
。如果未指定maxSwap
的值,则此参数将被忽略。如果maxSwap
设置为 0,则容器不使用交换。此参数会将--memory-swappiness
选项映射到 docker run。 使用每容器交换配置时,请考虑以下事项。
-
必须在容器实例上启用并分配交换空间才能供容器使用。
注意
默认情况下,Amazon ECS 优化的 AMI 没有启用交换功能。您必须在实例上启用交换才能使用此功能。有关更多信息,请参阅适用于 Linux 实例的 Amazon EC2 用户指南中的实例存储交换卷或如何使用交换文件分配内存充当 Amazon EC2 实例中的虚拟内存空间?
。 -
只有使用 EC2 资源的作业定义才支持交换空间参数。
-
如果作业定义中忽略
maxSwap
和swappiness
参数,每个容器都有默认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
的Create 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 API
的Create a container (创建容器)部分中的 LogConfig
以及 docker run的 --log-driver
选项。默认情况下,作业使用与 Docker 守护程序相同的日志记录驱动程序。但作业可以使用此参数指定日志驱动程序,以此来使用Docker 守护程序的日志记录驱动程序。如果要为作业指定其他日志记录驱动程序,则必须在计算环境中的容器实例上配置日志系统。或者,也可以将其配置在另一台日志服务器上以提供远程日志记录选项。有关其他支持的日志驱动程序选项的更多信息,请参阅 Docker 文档中的配置日志记录驱动程序。 注意
Amazon Batch目前支持提供给 Docker 守护程序的一小部分日志记录驱动程序。可能会在 Amazon ECS 容器代理的未来版本中提供其他日志驱动程序。
支持的日志驱动程序为
awslogs
、fluentd
、gelf
、json-file
、journald
、logentries
、syslog
和splunk
。注意
在 Fargate 资源上运行的作业仅限于
awslogs
和splunk
日志驱动程序。此参数要求您容器实例上的 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
} ]类型:对象数组
必需:否
networkConfiguration
-
适用于在 Fargate 资源上运行的作业的网络配置。在 EC2 资源上运行的作业不得指定此参数。
"networkConfiguration": { "assignPublicIp": "string" }
类型:对象数组
必需:否
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
-
要分配给容器的资源的类型和数量。支持的资源包括
GPU
、MEMORY
、和VCPU
。"resourceRequirements" : [ { "type": "GPU", "value": "
number
" } ]类型:对象数组
必需:否
type
-
要分配给资源的容器的类型。支持的资源包括
GPU
、MEMORY
、和VCPU
。类型:字符串
必需:当使用
resourceRequirements
时为必需。 value
-
要为容器预留的指定资源的数量。这些值根据
type
指定的不同而有所不同。- type="GPU"
-
要为容器预留的物理 GPU 数。为作业中的所有容器预留的 GPU 数不能超过启动作业的计算资源上的可用 GPU 数。
- type="MEMORY"
-
要提供给容器的内存的硬限制(以 MiB 为单位)。如果您的容器尝试使用超出此处指定的内存,该容器将被终止。此参数将映射到 Docker Remote API
的Create a container (创建容器)部分中的 Memory
以及 docker run的 --memory
选项。您必须为作业指定至少 4 MiB 内存。这是必需的,但可以在多个位置为多节点并行 (MNP) 作业指定。必须至少为每个节点指定一次。此参数将映射到 Docker Remote API的Create 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 API
的Create 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
" } ... ]类型:对象数组
必需:否
ulimits
-
要在容器中设置的
ulimits
值的列表。此参数将映射到 Docker Remote API的创建容器 部分中的 Ulimits
以及 docker run的 --ulimit
选项。"ulimits": [ { "name":
string
, "softLimit":integer
, "hardLimit":integer
} ... ]类型:对象数组
必需:否
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 个字母 (大写和小写字母)、数字、连字符和下划线。此名称已在容器定义
sourceVolume
的mountPoints
参数中引用。类型:字符串
必需:否
host
-
host
参数的内容确定您的卷是否一直保存在主机容器实例上以及存储它的位置上。如果host
参数为空,则 Docker 守护程序将为您的数据卷分配一个主机路径。但是,在与该卷关联的容器停止运行后,不保证保存数据。注意
此参数不适用于在 Fargate 资源上运行的作业。
类型:对象
必需:否
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)
是否存在的形式传递。有关更多信息,请参阅 Dockerfile 参考中的 CMD 和Kubernetes文档中的 pod 定义命令和参数 。 类型:字符串数组
必需:否
command
-
容器的入口点。这不是在 shell 中运行的。如果未指定,则
ENTRYPOINT
使用容器映像的。使用容器的环境扩展环境变量引用。如果引用的环境变量不存在,则命令中的引用不会更改。例如,如果引用的是 “
$(NAME1)
” 且NAME1
环境变量不存在,则命令字符串将保留 “”$(NAME1)
。$$
被替换为$
,生成的字符串不会扩展。例如,$$(VAR_NAME)
将以VAR_NAME
环境变量$(VAR_NAME)
是否存在的形式传递。无法更新入口点。有关更多信息,请参阅 Dockerfile 参考文献中的 ENTRYPOINT 和Kubernetes文档中的为容器和 En trypoint 定义命令和参数 。 类型:字符串数组
必需:否
env
-
要传递给容器的环境变量。
注意
环境变量不能以 “
AWS_BATCH
” 开头。这种命名约定是为Amazon Batch集合的变量保留的。类型:EksContainerEnvironmentVariable 对象数组
必需:否
name
-
环境变量的名称。
类型:字符串
必需:是
value
-
环境变量的值。
类型:字符串
必需:否
image
-
用于启动容器的 Docker 映像。
类型:字符串
必需:是
imagePullPolicy
-
容器的图像提取策略。支持的值有
Always
、IfNotPresent
和Never
。此参数默认为IfNotPresent
。但是,如果指定了:latest
标签,则默认为Always
。有关更多信息,请参阅Kubernetes文档中的更新图像。 类型:字符串
必需:否
name
-
容器的名称。如果未指定名称,则使用默认名称
Default
“”。pod 中的每个容器必须具有唯一的名称。类型:字符串
必需:否
resources
-
要分配给容器的资源的类型和数量。支持的资源包括
memory
、cpu
、和nvidia.com/gpu
。有关更多信息,请参阅Kubernetes文档中的 Pod 和容器的资源管理。 类型:EksContainerResourceRequirements 对象
必需:否
limits
-
要为容器预留的资源的类型和数量。这些值根据指定的不同而有所不同。
name
可以使用limits
或requests
对象请求资源。- memory
-
容器的内存硬限值(以 MiB 为单位),使用整数,后缀为 “Mi”。如果容器试图超出指定的内存,则容器将终止。您必须为作业指定至少 4 MiB 内存。
memory
可以在limits
requests
、或两者中指定。memory
如果在两个位置都指定了,则中指定的值limits
必须等于中指定的值requests
。注意
要最大程度地利用资源,请为作业提供尽可能多的用于特定实例类型的内存来最大程度地利用资源。要了解如何操作,请参阅计算资源内存管理。
- cpu
-
为容器预留的 CPU 的数量。值必须为的偶数
0.25
。cpu
可以在limits
requests
、或两者中指定。cpu
如果在这两个位置都指定了,则中指定的值limits
必须至少等于中指定的值requests
。 - nvidia.com/gpu
-
为容器预留的 GPU 的数量。值必须为整数。
memory
可以在limits
requests
、或两者中指定。memory
如果在两个位置都指定了,则中指定的值limits
必须等于中指定的值requests
。
类型:字符串到字符串映射
值长度限制:最小长度为 1。长度上限为 256。
必需:否
requests
-
为容器请求的资源的类型和数量。这些值根据指定的不同而有所不同。
name
可以使用limits
或requests
对象请求资源。- memory
-
容器的内存硬限值(以 MiB 为单位),使用整数,后缀为 “Mi”。如果容器试图超出指定的内存,则容器将终止。您必须为作业指定至少 4 MiB 内存。
memory
可以在limits
requests
、或两者中指定。memory
如果两者都指定,则中指定的值limits
必须等于中指定的值requests
。注意
如果您尝试通过为作业提供尽可能多的用于特定实例类型的内存来最大程度地利用资源,请参阅计算资源内存管理。
- cpu
-
为容器预留的 CPU 的数量。值必须为的偶数
0.25
。cpu
可以在limits
requests
、或两者中指定。cpu
如果两者都指定,则中指定的值limits
必须至少等于中指定的值requests
。 - nvidia.com/gpu
-
为容器预留的 GPU 的数量。值必须为整数。
nvidia.com/gpu
可以在limits
requests
、或两者中指定。nvidia.com/gpu
如果两者都指定,则中指定的值limits
必须等于中指定的值requests
。
类型:字符串到字符串映射
值长度限制:最小长度为 1。长度上限为 256。
必需:否
securityContext
-
工作的安全上下文。有关更多信息,请参阅Kubernetes文档中的 pod 或容器配置安全上下文
。 类型:EksContainerSecurityContext 对象
必需:否
privileged
-
当此参数为
true
,将对此容器提供对主机容器实例的提升的权限。权限级别类似于root
用户权限。默认值为false
。此参数映射到privileged
Kubernetes文档中特权容器安全策略中的策略。 类型:布尔值
必需:否
readOnlyRootFilesystem
-
当此参数为
true
,将对此容器提供对其根文件系统的只读访问权。默认值为false
。此参数映射到ReadOnlyRootFilesystem
Kubernetes文档中 V olumes 中的策略和文件系统容器安全策略。 类型:布尔值
必需:否
runAsGroup
-
指定此参数后,容器将以指定的组 ID (
gid
) 运行。如果未指定此参数,则默认值为在图像元数据中指定的组。此参数映射到RunAsGroup
Kubernetes文档中用户和群组容器安全策略中的和策略。 MustRunAs
类型:长整型
必需:否
runAsNonRoot
-
指定此参数后,容器将
uid
以非 0 的用户身份运行。如果未指定此参数,则强制执行此参数。此参数映射到RunAsUser
Kubernetes文档中用户和群组容器安全策略中的和策略。 MustRunAsNonRoot
类型:长整型
必需:否
runAsUser
-
指定此参数后,容器将以指定的用户 ID (
uid
) 运行。如果未指定此参数,则默认值为在图像元数据中指定的用户。此参数映射到RunAsUser
Kubernetes文档中用户和群组容器安全策略中的和策略。 MustRanAs
类型:长整型
必需:否
volumeMounts
-
Amazon EKS 任务容器的容器将挂载容器。有关中的卷和卷装载的更多信息Kubernetes,请参阅Kubernetes文档中的卷
。 类型:EksContainerVolumeMount 对象数组
必需:否
mountPath
-
挂载卷的路径。
类型:字符串
必需:否
name
-
卷装架的名称。此项必须与 Pod 中其中一个卷的名称匹配。
类型:字符串
必需:否
readOnly
-
如果此值为
true
,则容器具有对卷的只读访问权。否则,容器可以写入卷。默认值为false
。类型:布尔值
必需:否
dnsPolicy
-
pod 的 DNS 策略。默认值为
ClusterFirst
。如果未指定hostNetwork
参数,则默认值为ClusterFirstWithHostNet
。ClusterFirst
表示任何与配置的集群域后缀不匹配的 DNS 查询都将转发到从该节点继承的上游域名服务器。如果在 RegisterJobDefinitionAPI 操作dnsPolicy
中未指定任何值,则DescribeJobDefinitions或 DescribeJobsAPI 操作都不会dnsPolicy
为其返回任何值。pod 规格设置将包含ClusterFirst
或ClusterFirstWithHostNet
,具体取决于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
-
指定Kubernetes
emptyDir
卷的配置。将 Pod 分配给节点时,首先会创建emptyDir
卷。只要该 pod 在该节点上运行,它就会存在。该emptyDir
卷最初是空的。Pod 中的所有容器都可以读取和写入emptyDir
卷中的文件。但是,该emptyDir
卷可以安装在每个容器中的相同或不同的路径上。当出于任何原因将 Pod 从节点中移除时,中的数据emptyDir
将被永久删除。有关更多信息,请参阅Kubernetes文档中的 emptyDir。 类型:EksEmptyDir 对象
必需:否
- medium
-
存储音量的介质。默认值为空字符串,使用节点的存储。
- ""
-
(默认)使用节点的磁盘存储。
- “记忆”
-
使用由节点 RAM 支持的
tmpfs
音量。当节点重新启动时,该卷的内容将丢失,并且该卷上的任何存储都将计入容器的内存限制。
类型:字符串
必需:否
- 大小限制
-
卷的最大大小。默认情况下,没有定义最大大小。
类型:字符串
长度限制:最小长度为 1。长度上限为 256。
必需:否
- 主机路径
-
指定Kubernetes
hostPath
卷的配置。hostPath
卷将主机节点的文件系统中的现有文件或目录装载到你的 Pod 中。有关更多信息,请参阅Kubernetes文档中的 HostPath。 类型:EksHostPath 对象
必需:否
- path
-
主机上要装载到 pod 容器中的文件或目录的路径。
类型:字符串
必需:否
- name
-
卷的名称。必须允许该名称作为 DNS 子域名。有关更多信息,请参阅Kubernetes文档中的 DNS 子域名
。 类型:字符串
必需:是
- 密钥
-
指定Kubernetes
secret
卷的配置。有关更多信息,请参阅Kubernetes文档中的 secret。 类型: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
表示索引值为0
到3
的节点。如果省略起始范围值 (:n
),则使用 0 开始范围。如果省略结束范围值 (n:
),则使用可能的最高节点索引结束范围。您的累积节点范围必须考虑所有节点 (0:n
)。您可以嵌套节点范围,例如0:10
和4: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
-
指定在满足所有指定条件(
onStatusReason
、onReason
和onExitCode
)时要执行的操作。这些值不区分大小写。类型:字符串
必需:是
有效值:
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 对象
必需:否