Job 定義參數 ContainerProperties - AWS Batch

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Job 定義參數 ContainerProperties

使用的 Job 定ContainerProperties義分為數個部分:

  • 工作定義名稱

  • 工作定義的類型

  • 參數替換佔位符默認值

  • 工作的容器屬性

  • 在 Amazon EKS 資源上執行任務所需的任務定義的 Amazon EKS 屬性

  • 多節點 parallel 工作所需的節點屬性

  • 在 Fargate 資源上執行作業所需的平台功能

  • 工作定義的預設標記傳輸詳細資訊

  • 工作定義的預設重試策略

  • 工作定義的預設排程優先順序

  • 工作定義的預設標籤

  • 工作定義的預設逾時

Job 定義名稱

jobDefinitionName

您必須在註冊任務定義時指定名稱。名稱最多可包含 128 個字元。可以包含大小寫字母、數字、連字號 (-) 和底線 (_)。第一個以該名稱註冊的工作定義會被賦予 1 的修訂版本。後續使用該名稱註冊的任何任務定義,將取得遞增的修訂版號碼。

類型:字串

必要:是

Type

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。此命名慣例會保留給 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 資源上執行的任務不得指定此參數。

類型:FargatePlatform配置對象

必要:否

platformVersion

AWS Fargate 平台版本用於作業,或使LATEST用最新的,批准的 AWS Fargate 平台版本。

類型:字串

預設:LATEST

必要:否

image

用於開始工作的影像。此字串會直接傳遞至 Docker 常駐程式。根據預設,Docker Hub 登錄檔中的映像為可用。您也可以用 repository-url/image:tag 指定其他儲存庫。允許最多 255 個字元 (大小寫)、數字、連字號、底線、等號、句號、正斜線、井號。此參數會映射至 Docker Remote API建立容器區段中的 Image 以及 docker 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 Create a container (建立容器) 一節中的 Devices,以及 Docker run--device 選項。

注意

此參數不適用於在 Fargate 資源上執行的任務。

類型:Device 物件的陣列

必要:否

hostPath

主機容器執行個體中可用裝置所在的路徑。

類型:字串

必要:是

containerPath

裝置暴露在容器中的路徑。如果未指定,則裝置會在與主機路徑相同的路徑上公開。

類型:字串

必要:否

permissions

容器中的裝置的許可。如果未指定權限,則會將權限設定為READWRITE、和MKNOD

類型:字串陣列

必要:否

有效值:READ | WRITE | MKNOD

initProcessEnabled

若為 true,請在容器內執行 init 處理程序,該處理程序可轉寄訊號及獲得處理程序。此參數會映射到 docker run--init 選項。在您的容器執行個體上,此參數需要 1.25 版或更新版本的 Docker Remote API。若要檢查容器執行個體的 Docker Remote API 版本,請登入容器執行個體,並執行下列命令:sudo docker version | grep "Server API version"

類型:布林值

必要:否

maxSwap

工作可以使用的交換記憶體總量 (以 MiB 為單位)。此參數將會轉換為 docker run--memory-swap 選項,其中值是容器記憶體與 maxSwap 值的總和。如需詳細資訊,請參閱 Docker 文件中的 --memory-swap 詳細資訊

如果將 maxSwap 值指定為 0,容器不會使用交換。接受的值為 0 或任何正整數。如果省略maxSwap參數,則容器會針對其執行的容器執行個體使用 swap 組態。必須設定 maxSwap 值,才能使用 swappiness 參數。

注意

此參數不適用於在 Fargate 資源上執行的任務。

類型:整數

必要:否

sharedMemorySize

/dev/shm 磁碟區的大小值 (以 MiB 為單位)。此參數會映射到 docker run--shm-size 選項。

注意

此參數不適用於在 Fargate 資源上執行的任務。

類型:整數

必要:否

swappiness

您可藉此調整容器的記憶體交換行為。的swappiness值會0導致交換不會發生,除非絕對必要。為 100swappiness 值導致積極地交換頁面。接受的值為介於 0100 之間的整數。如果未指定 swappiness 參數,則會使用預設值 60。如果未對 maxSwap 指定值,則會忽略此參數。如果 maxSwap 設定為 0,則容器不會使用交換。此參數會映射到 docker run--memory-swappiness 選項。

當您使用每個容器交換組態時,請考量下列事項。

  • 必須在容器執行個體上啟用和配置交換空間,供容器使用。

    注意

    根據預設,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 Create a container (建立容器) 一節中的 LogConfig,以及 Docker run--log-driver 選項。根據預設,容器會和 Docker 常駐程式使用一樣的日誌記錄驅動程式。不過,容器可以使用與 Docker 精靈不同的記錄驅動程式,方法是在容器定義中使用此參數指定記錄驅動程式。若要針對容器使用不同的記錄驅動程式,必須在容器執行個體或其他記錄伺服器上設定記錄系統,才能提供遠端記錄選項。如需支援的不同日誌驅動程式選項的詳細資訊,請參閱 Docker 文件中的 Configure logging drivers (設定日誌驅動程式)。

注意

AWS Batch 目前支援 Docker 守護程式可用的記錄驅動程式子集 (以LogConfiguration資料類型顯示)。

在您的容器執行個體上,此參數需要 1.18 版或更新版本的 Docker Remote API。若要檢查容器執行個體的 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 Create a container (建立容器) 一節中的 LogConfig,以及 Docker run--log-driver 選項。依預設,工作會使用 Docker 精靈所使用的相同記錄驅動程式。不過,工作可以使用與 Docker 精靈不同的記錄驅動程式,方法是在工作定義中使用此參數指定記錄驅動程式。如果您想要為工作指定其他記錄驅動程式,則必須在計算環境中的容器執行個體上設定記錄系統。或者,您也可以在另一部記錄伺服器上進行設定,以提供遠端記錄選項。如需支援的不同日誌驅動程式選項的詳細資訊,請參閱 Docker 文件中的 Configure logging drivers (設定日誌驅動程式)。

注意

AWS Batch 目前支援 Docker 精靈可用的記錄驅動程式子集。未來的 Amazon ECS 容器代理程式版本可能會提供更多可用的其他日誌驅動程式。

支援的記錄驅動程式為 awslogsfluentdgelfjson-filejournaldlogentriessyslogsplunk

注意

在 Fargate 資源上執行的工作僅限於awslogssplunk記錄驅動程式。

在您的容器執行個體上,此參數需要 1.18 版或更新版本的 Docker Remote API。若要檢查容器執行個體的 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 日誌記錄驅動程式。如需詳細資訊,請參閱 Docker 文件中的使用 awslogs 日誌驅動程式Amazon CloudWatch 日誌記錄驅動程式

fluentd

指定 Fluentd 記錄驅動程式。如需包括使用方式和選項在內的詳細資訊,請參閱 Docker 文件中的 Fluentd 記錄驅動程式

gelf

指定 Graylog 延伸格式 (GELF) 記錄驅動程式。如需包括使用方式和選項在內的詳細資訊,請參閱 Docker 文件中的 Graylog 延伸格式記錄驅動程式。

journald

指定 journald 記錄驅動程式。如需包括使用方式和選項在內的詳細資訊,請參閱 Docker 文件中的日誌記錄驅動程式

json-file

指定 JSON 檔案記錄驅動程式。如需包括使用方式和選項在內的詳細資訊,請參閱 Docker 文件中的 JSON 檔案記錄驅動程式

splunk

指定 Splunk 記錄驅動程式。如需包括使用方式和選項在內的詳細資訊,請參閱 Docker 文件中的 Splunk 記錄驅動程式

syslog

指定 syslog 記錄驅動程式。如需包括使用方式和選項在內的詳細資訊,請參閱 Docker 文件中的 Syslog 記錄驅動程式

類型:字串

必要:是

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

注意

如果您有先前未列出的自訂驅動程式,而您想要使用 Amazon ECS 容器代理程式,則可以分叉提供的 Amazon ECS 容器代理程式專案,然後自訂它以 GitHub與該驅動程式搭配使用。我們鼓勵您為想要進行的變更提交提取請求。不過,Amazon Web Services 目前不支援執行此軟體修改副本的請求。

options

記錄組態選項以傳送至工作的記錄驅動程式。

在您的容器執行個體上,此參數需要 1.19 版或更新版本的 Docker Remote API。

類型:字串到字串映射

必要:否

secretOptions

此物件代表要傳送至日誌組態的秘密。如需詳細資訊,請參閱 指定敏感資料

類型:物件陣列

必要:否

name

要在工作中設定的記錄驅動程式選項名稱。

類型:字串

必要:是

valueFrom

要公開給容器日誌組態的秘密的 Amazon 資源名稱 (ARN)。支援的值是秘 Secrets Manager 碼的完整 ARN,或 SSM 參數存放區中參數的完整 ARN。

注意

如果 SSM 參數存放區參數與您啟動的工作位於相同 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 資源上執行的任務。不要提供它或將其指定為假。

"privileged": true|false

類型:布林值

必要:否

readonlyRootFilesystem

此參數為 true 時,容器會取得根檔案系統的唯讀存取權。此參數會映射到 Docker Remote API建立容器區段中的 ReadonlyRootfs 以及 docker run--read-only 選項。

"readonlyRootFilesystem": true|false

類型:布林值

必要:否

resourceRequirements

指派給容器的資源類型和數量。支援的資源包括 GPU MEMORYVCPU

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

類型:物件陣列

必要:否

type

要指派給容器的資源類型。支援的資源包括 GPU MEMORYVCPU

類型:字串

必要:是,使用 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 及 2048 千 MiB 位

0.5 vCPU

1024-4096 千兆位單位 (以 1024 千兆位元為單位遞增 MiB

1 vCPU

以 1024 千兆位為單位遞增的 2048 至 8192 千 MiB 位

2 vCPU

4096-16384 千兆位單位 (以 1024 千兆 B 為單位遞增 MiB

4 vCPU

以 1024 MiB 為單位遞增的 8192-30720 MiB 兆位

8 vCPU

16384-61440 MIB (以 4096 千兆 B 為單位遞增 MiB

16 vCPU

32768-122880 千兆位單位 (以 8192 千兆位單位為單位遞增 MiB

type="VCPU"

為任務保留的 vCPU 數量。此參數對應到 Docker Remote API Create a container (建立容器) 一節中的 CpuShares,以及 Docker run--cpu-shares 選項。每個 vCPU 相當於 1,024 個 CPU 共用。對於在 EC2 資源上執行的工作,您必須至少指定一個 vCPU。這是必要的,但可以在多個地方指定。必須至少為每個節點指定一次。

對於在 Fargate 資源上執行的工作,value必須符合其中一個支援的MEMORY值,而且值必須是該 VCPU 值支援的其中一個值。支援的值為 0.25、0.5、1、2、4、8 和 16。

Fargate 隨需 vCPU 資源計數配額的預設值為 6 個 vCPU。如需有關 Fargate 配額的詳細資訊,請參閱AWS . Amazon Web Services 一般參考

類型:字串

必要:是,使用 resourceRequirements 時。

secrets

公開為環境變數之工作的密碼。如需詳細資訊,請參閱 指定敏感資料

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

類型:物件陣列

必要:否

name

包含密碼的環境變數名稱。

類型:字串

必要:是,使用 secrets 時。

valueFrom

公開給容器的秘密。支援的值是秘 Secrets Manager 碼的完整 Amazon 資源名稱 (ARN),或 SSM 參數存放區中參數的完整 ARN。

注意

如果 SSM 參數存放區參數與您要啟動的工作位於相同 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 個字元 (大小寫)、數字、連字號和底線。此名稱是參考容器定義 sourceVolume 中的 mountPoints 參數。

類型:字串

必要:否

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 檔案系統識別碼。

類型:字串

必要:否

rootDirectory

在 Amazon EFS 檔案系統中的目錄,其將掛載作為主機內的根目錄。如果省略此參數,使用 Amazon EFS 磁碟區的根目錄。如果您指定/,它與省略此參數具有相同的效果。長度上限為 4,096 個字元。

重要

如果在中指定 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 到 65,535 之間。如需詳細資訊,請參閱《Amazon Elastic File System 使用者指南》中的 EFS 掛載協助程式

類型:整數

必要:否

Amazon EKS 屬性

有各種 Amazon ECS 型任務特定屬性的物件。對於以 Amazon ECS 為基礎的任務定義,則不得指定此選項。

podProperties

工作之Kubernetes網繭資源的內容。

類型:EksPod屬性物件

必要:否

containers

Amazon EKS Pod 上所使用容器的屬性。

類型:EksContainer 物件

必要:否

args

進入點的引數陣列。如果未指定,系統會使用容器映像的 CMD。這對應於中網繭入口點部分中的args成員。Kubernetes環境變數參考使用容器的環境擴展。

如果沒有參考的環境變數,不會變更命令中的參考。例如,如果參考為 "$(NAME1)",且沒有 NAME1 環境變數,命令字串會保持 "$(NAME1)"。$$ 會替換為 $,且產生的字串不會擴展。例如,$$(VAR_NAME) 會以 $(VAR_NAME) 傳遞,無論是否有 VAR_NAME 環境變數。如需詳細資訊,請參閱 Dockerfile 參考中的 CMD 和文件中的網繭定義命令和引數。Kubernetes

類型:字串陣列

必要:否

command

容器的進入點。這不是在 Shell 中執行。如果未指定,系統會使用容器映像的 ENTRYPOINT。環境變數參考使用容器的環境擴展。

如果沒有參考的環境變數,不會變更命令中的參考。例如,如果參考為 "$(NAME1)",且沒有 NAME1 環境變數,命令字串會保持 "$(NAME1)"。$$ 會替換為 $,且產生的字串不會擴展。例如,$$(VAR_NAME) 會以 $(VAR_NAME) 傳遞,無論是否有 VAR_NAME 環境變數。無法更新進入點。如需詳細資訊,請參閱 Docker 檔案參考資料中的 ENTRYPOINT 和文件中的為容器和入口點定義命令和引數。Kubernetes

類型:字串陣列

必要:否

env

傳遞至容器的環境變數。

注意

環境變數不得以 "AWS_BATCH" 開頭。此命名慣例保留給 AWS Batch 設定的變數。

類型:EksContainerEnvironmentVariable 物件陣列

必要:否

name

環境變數的名稱。

類型:字串

必要:是

value

環境變數的值。

類型:字串

必要:否

image

用來啟動容器的 Docker 映像檔。

類型:字串

必要:是

imagePullPolicy

容器的映像提取政策。支援的值為 AlwaysIfNotPresentNever。此參數預設為 IfNotPresent。但如果指定 :latest 標籤,預設為 Always。如需詳細資訊,請參閱Kubernetes文件中的更新影像

類型:字串

必要:否

name

容器的名稱。如果未指定名稱,系統會使用預設名稱 "Default"。Pod 中的每個容器都必須有唯一名稱。

類型:字串

必要:否

resources

指派給容器的資源類型和數量。支援的資源包括 memory cpunvidia.com/gpu。如需詳細資訊,請參閱文件中的網繭和容器的Kubernetes資源管理

類型:EksContainerResourceRequirements 物件

必要:否

limits

為容器預留的資源類型和數量。這些值根據指定的 name 而有所差異。可以使用 limitsrequests 物件請求資源。

memory

容器的記憶體硬性限制 (以 MiB 為單位),使用整數,具有 "Mi" 字尾。如果您的容器嘗試使用超過指定的記憶體,容器便會終止。您必須為任務指定至少 4 MiB 的記憶體。可以在 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" 字尾。如果您的容器嘗試使用超過指定的記憶體,容器便會終止。您必須為任務指定至少 4 MiB 的記憶體。可以在 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文件的設定網繭或容器的安全性內容。

類型:EksContainerSecurityContext 物件

必要:否

privileged

此參數為 true 時,容器便會取得主機容器執行個體的更高許可。權限層級與root使用者權限類似。預設值為 false。此參數對應至Kubernetes說明文件中「授權」網繭安全性privileged原則中的原則。

類型:布林值

必要:否

readOnlyRootFilesystem

此參數為 true 時,容器會取得根檔案系統的唯讀存取權。預設值為 false。此參數對應至Kubernetes說明文件中的磁碟區和檔案系統網繭安全性ReadOnlyRootFilesystem原則中的原則。

類型:布林值

必要:否

runAsGroup

指定此參數時,容器會以指定的群組 ID (gid) 執行。如果未指定此參數,預設值為映像中繼資料中指定的群組。此參數對應至RunAsGroupKubernetes說明文件中的使用者和群組網繭安全性MustRunAs原則中的原則。

類型:Long

必要:否

runAsNonRoot

指定此參數時,容器會以 uid 非 0 的使用者身分執行。如果未指定此參數,系統會強制執行此規則。此參數對應至RunAsUserKubernetes說明文件中的使用者和群組網繭安全性MustRunAsNonRoot原則中的原則。

類型:Long

必要:否

runAsUser

指定此參數時,容器會以指定的使用者 ID (uid) 執行。如果未指定此參數,預設值為映像中繼資料中指定的使用者。此參數對應至RunAsUserKubernetes說明文件中的使用者和群組網繭安全性MustRanAs原則中的原則。

類型:Long

必要:否

volumeMounts

磁碟區會針對適用於 Amazon EKS 任務的容器掛載。如需有關磁碟區和磁碟區掛接的詳細資訊Kubernetes,請參閱Kubernetes文件中的磁碟區

類型:EksContainerVolumeMount 物件陣列

必要:否

mountPath

掛載磁碟區之容器上的路徑。

類型:字串

必要:否

name

掛載的磁碟區名稱。這必須符合 Pod 中任一磁碟區的名稱。

類型:字串

必要:否

readOnly

如果此數值為 true,容器擁有磁碟區的唯讀存取權。否則,容器可以寫入磁碟區。預設值為 false

類型:布林值

必要:否

dnsPolicy

Pod 的 DNS 政策。預設值為 ClusterFirst。如果未指定 hostNetwork 參數,預設值為 ClusterFirstWithHostNetClusterFirst 指示任何與設定之叢集網域字尾不相符的 DNS 查詢,都會轉寄至繼承自節點的上游名稱伺服器。如果在「定RegisterJob義 API」作業dnsPolicy中未指定任何值,則「定DescribeJob義」或 DescribeJobsAPI dnsPolicy 作業都不會傳回任何值。視 hostNetwork 參數的值而定,Pod 規格設定會包含 ClusterFirstClusterFirstWithHostNet。如需詳細資訊,請參閱Kubernetes文件的 Pod 的 DNS 原則

有效值:Default | ClusterFirst | ClusterFirstWithHostNet

類型:字串

必要:否

hostNetwork

指示 Pod 是否使用主機的網路 IP 地址。預設值為 true。設定此值以false啟用網Kubernetes繭網路模型。大部分的 AWS Batch 工作負載僅限輸出,不需要針對內送連線的每個網繭配置 IP 額外負荷。如需詳細資訊,請參閱Kubernetes說明文件中的主機命名空間網繭網路

類型:布林值

必要:否

serviceAccountName

用來執行 Pod 的服務帳戶名稱。如需詳細資訊,請參閱 KubernetesAmazon EKS 使用者指南中的Kubernetes服務帳戶和設定服務帳戶以擔任 IAM 角色Kubernetes說明文件的網繭設定服務帳戶。

類型:字串

必要:否

volumes

為使用 Amazon EKS 資源的任務定義指定磁碟區。

類型:EksVolume 物件陣列

必要:否

空白目錄

指定KubernetesemptyDir磁碟區的組態。將 Pod 指派給節點時,會先建立 emptyDir 磁碟區。只要該網繭在該節點上執行,它就會存在。emptyDir 磁碟區最初是空的。Pod 中的所有容器都可以讀取和寫入 emptyDir 磁碟區中的檔案。但 emptyDir 磁碟區可以掛載在每個容器中相同或不同路徑上。因任何原因將 Pod 從節點移除時,系統會永久刪除 emptyDir 中的資料。如需詳細資訊,請參閱文件中的 KubernetesemptyDir

類型:EksEmpty目錄對象

必要:否

中型

存放磁碟區的媒體。預設值為空白字串,這會使用節點的儲存空間。

""

(預設) 使用節點的磁碟儲存空間。

"Memory"

使用節點 RAM 支援的 tmpfs 磁碟區。節點重新開機時,磁碟區的內容會遺失,且磁碟區上的任何儲存空間都會計入容器的記憶體限制。

類型:字串

必要:否

尺寸大小

磁碟區的大小上限。預設未定義大小上限。

類型:字串

長度限制:長度下限為 1。長度上限為 256。

必要:否

主機路徑

指定KuberneteshostPath磁碟區的組態。hostPath 磁碟區會將現有檔案或目錄,從主機節點的檔案系統掛載到您的 Pod。如需詳細資訊,請參閱Kubernetes文件中的主機路徑

類型:EksHost路徑物件

必要:否

path

要掛載至 Pod 上容器的主機檔案或目錄的路徑。

類型:字串

必要:否

name

磁碟區名稱。此名稱必須可當作 DNS 子網域名稱。如需詳細資訊,請參閱Kubernetes文件中的 DNS 子網域名稱

類型:字串

必要:是

秘密

指定Kubernetessecret磁碟區的組態。如需詳細資訊,請參閱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

與多節點平行任務關聯的節點數量。

類型:整數

必要:是

nodeRangeProperties

與多節點平行任務關聯的節點範圍和其屬性清單。

注意

節點群組是共用相同容器屬性的相同工作節點群組。您最多可以 AWS Batch 為每個工作指定五個不同的節點群組。

類型:NodeRange屬性物件的陣列

必要:是

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" } ]

類型:EvaluateOn結束物件的陣列

必要:否

action

指定符合所有指定條件 (onStatusReason onReasononExitCode) 時要採取的動作。這些值不區分大小寫。

類型:字串

必要:是

有效值:RETRY | EXIT

onExitCode

包含一個 glob 模式,以與工作返回ExitCode的十進制表示相匹配。模式的長度上限為 512 個字元。它只能包含數字。不能包含字母或特殊字元。可以選擇以星號 (*) 結束,以便只有字串的開頭需要完全相符。

類型:字串

必要:否

onReason

包含一個 glob 模式以與作Reason業返回的匹配。模式的長度上限為 512 個字元。它可以包含字母、數字、句點 (.)、冒號 (:) 和空格 (空格、製表符)。可以選擇以星號 (*) 結束,以便只有字串的開頭需要完全相符。

類型:字串

必要:否

onStatusReason

包含一個 glob 模式以與作StatusReason業返回的匹配。模式的長度上限為 512 個字元。它可以包含字母、數字、句點 (.)、冒號 (:) 和空格 (空格、製表符)。可以選擇以星號 (*) 結束,以便只有字串的開頭需要完全相符。

類型:字串

必要:否

排程優先權

schedulingPriority

使用此工作定義提交之工作的排程優先順序。這只會影響具有公平共用政策的任務佇列中的任務。排程優先順序較高的任務會排在排程優先順序較低的任務之前。

支援的最小值為 0,支援的最大值為 9999。

類型:整數

必要:否

標籤

tags

要與工作定義關聯的索引鍵值配對標籤。如需詳細資訊,請參閱 標記您的 AWS Batch 資源

類型:字串到字串映射

必要:否

逾時

timeout

您可以設定工作的逾時持續時間,以便在工作執行時間超過該時間時 AWS Batch 終止工作。如需詳細資訊,請參閱 Job 逾時。如果工作因為逾時而終止,則不會重試。在SubmitJob作業期間指定的任何逾時設定都會覆寫此處定義的逾時設定。如需詳細資訊,請參閱 Job 逾時

類型:JobTimeout 物件

必要:否

attemptDurationSeconds

AWS Batch 終止未完成工作後的持續時間 (以作業嘗試的時間startedAt戳記計算)。逾時最小值為 60 秒。

若為陣列任務,逾時會套用至子任務,而不是父陣列任務。

若為多節點平行 (MNP) 任務,逾時會套用至整個工作,而非個別節點。

類型:整數

必要:否