參考:ContainerProperties 的任務定義參數 - AWS Batch

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

參考:ContainerProperties 的任務定義參數

使用 的任務定義ContainerProperties分為幾個部分:

  • 任務定義名稱

  • 任務定義的類型

  • 參數替換預留位置預設值

  • 任務的容器屬性

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

  • 多節點平行任務所需的節點屬性

  • 在 Fargate 資源上執行任務所需的平台功能

  • 任務定義的預設標籤傳播詳細資訊

  • 任務定義的預設重試策略

  • 任務定義的預設排程優先順序

  • 任務定義的預設標籤

  • 任務定義的預設逾時

任務定義名稱

jobDefinitionName

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

類型:字串

必要:是

Type

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 平台版本用於 任務,或使用 AWS Fargate 平台LATEST的最新核准版本。

類型:字串

預設:LATEST

必要:否

image

用來啟動任務的映像。此字串會直接傳遞至 Docker 常駐程式。根據預設,Docker Hub 登錄檔中的映像為可用。您也可以用 repository-url/image:tag 指定其他儲存庫。允許最多 255 個字元 (大小寫)、數字、連字號、底線、等號、句號、正斜線、井號。此參數會映射至 Docker Remote API建立容器區段中的 Image 以及 docker runIMAGE 參數。

注意

Docker 映像架構必須符合其排程之運算資源的處理器架構。例如, Arm 型Docker映像只能根據 Arm 型運算資源執行。

  • Amazon ECR Public 儲存庫中的映像會使用完整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

容器中的裝置的許可。如果未指定,則許可會設為 READWRITEMKNOD

類型:字串陣列

必要:否

有效值: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 參數,容器會針對其執行所在的容器執行個體使用交換組態。必須設定 maxSwap 值,才能使用 swappiness 參數。

注意

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

類型:整數

必要:否

sharedMemorySize

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

注意

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

類型:整數

必要:否

swappiness

您可藉此調整容器的記憶體交換行為。除非絕對必要,否則 swappiness0會導致交換不會發生。為 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" | "diratimenodiratime"" | "bind"" | "rbind"" | """ unbindablerunbindableprivate| rprivate""" | "shared"" | """ | "rsharedslaverslaverelatimenorelatime"" | "strictatime""" | nostrictatimemode""""" | "uidgidnr_inodes""nr_blocksmpol

類型:字串陣列

必要:否

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 Logs 記錄驅動程式。如需詳細資訊,請參閱 Docker 文件中的 使用 awslogs 日誌驅動程式Amazon CloudWatch Logs 記錄驅動程式

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 容器代理程式,您可以放棄 GitHub 上可用的 Amazon ECS 容器代理程式專案,並自訂它以使用該驅動程式。我們鼓勵您為想要進行的變更提交提取請求。不過,Amazon Web Services 目前不支援執行此軟體修改複本的請求。

options

要傳送至任務日誌驅動程式的日誌組態選項。

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

類型:字串到字串映射

必要:否

secretOptions

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

類型:物件陣列

必要:否

name

任務中要設定的日誌驅動程式選項名稱。

類型:字串

必要:是

valueFrom

要公開至容器日誌組態之秘密的 Amazon Resource Name (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 資源上執行的任務。請勿提供或指定為 false。

"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 數量。為任務中所有容器預留的 GPUs 數量,不能超過啟動任務的運算資源上可用的 GPUs 數量。

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 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 相當於 1,024 個 CPU 共用。對於在 EC2 資源上執行的任務,您必須至少指定一個 vCPU。這是必要項目,但可以在幾個地方指定。必須至少為每個節點指定一次。

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

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

類型:字串

必要:是,使用 resourceRequirements 時。

secrets

公開為環境變數的任務秘密。如需詳細資訊,請參閱指定敏感資料

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

類型:物件陣列

必要:否

name

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

類型:字串

必要:是,使用 secrets 時。

valueFrom

公開給容器的秘密。支援的值為 Secrets Manager 秘密的完整 Amazon Resource Name (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 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 文件中的定義容器和 Entrypoint 的命令和引數。 https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#entrypoint

類型:字串陣列

必要:否

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 文件中的 Pod 和容器的資源管理

類型: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 文件中的設定 Pod 或容器的安全內容

類型:EksContainerSecurityContext 物件

必要:否

privileged

此參數為 true 時,容器便會取得主機容器執行個體的更高許可。許可層級類似於root使用者許可。預設值為 false。此參數會映射至 Kubernetes 文件privileged特權 Pod 安全政策中的政策

類型:布林值

必要:否

readOnlyRootFilesystem

此參數為 true 時,容器會取得根檔案系統的唯讀存取權。預設值為 false。此參數會映射至 Kubernetes 文件ReadOnlyRootFilesystem磁碟區和檔案系統 Pod 安全政策中的政策

類型:布林值

必要:否

runAsGroup

指定此參數時,容器會以指定的群組 ID (gid) 執行。如果未指定此參數,預設值為映像中繼資料中指定的群組。此參數會映射至 Kubernetes 文件中使用者和群組 Pod 安全RunAsGroupMustRunAs政策中的 和 政策。 https://kubernetes.io/docs/concepts/security/pod-security-policy/#users-and-groups

類型:Long

必要:否

runAsNonRoot

指定此參數時,容器會以 uid 非 0 的使用者身分執行。如果未指定此參數,系統會強制執行此規則。此參數會映射至 Kubernetes 文件中使用者和群組 Pod 安全RunAsUserMustRunAsNonRoot政策中的 和 政策。 https://kubernetes.io/docs/concepts/security/pod-security-policy/#users-and-groups

類型:Long

必要:否

runAsUser

指定此參數時,容器會以指定的使用者 ID (uid) 執行。如果未指定此參數,預設值為映像中繼資料中指定的使用者。此參數會映射至 Kubernetes 文件中使用者和群組 Pod 安全RunAsUserMustRanAs政策中的 和 政策。 https://kubernetes.io/docs/concepts/security/pod-security-policy/#users-and-groups

類型:Long

必要:否

volumeMounts

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

類型:EksContainerVolumeMount 物件的陣列

必要:否

mountPath

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

類型:字串

必要:否

name

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

類型:字串

必要:否

readOnly

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

類型:布林值

必要:否

dnsPolicy

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

有效值:Default | ClusterFirst | ClusterFirstWithHostNet

類型:字串

必要:否

hostNetwork

指示 Pod 是否使用主機的網路 IP 地址。預設值為 true。將此設定為false啟用 Kubernetes Pod 網路模型。大多數 AWS Batch 工作負載都是輸出限定的,不需要每個 Pod 的 IP 配置額外負荷,即可用於傳入連線。如需詳細資訊,請參閱 Kubernetes 文件中的主機命名空間Pod 網路

類型:布林值

必要:否

serviceAccountName

用來執行 Pod 的服務帳戶名稱。如需詳細資訊,請參閱《Amazon EKS 使用者指南》中的Kubernetes服務帳戶設定Kubernetes服務帳戶以擔任 IAM 角色,並在Kubernetes文件中設定 Pod 的服務帳戶

類型:字串

必要:否

volumes

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

類型:EksVolume 物件的陣列

必要:否

emptyDir

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

類型:EksEmptyDir 物件

必要:否

中型

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

""

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

"Memory"

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

類型:字串

必要:否

sizeLimit

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

類型:字串

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

必要:否

hostPath

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

類型:EksHostPath 物件

必要:否

path

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

類型:字串

必要:否

name

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

類型:字串

必要:是

秘密

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

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

類型:字串

必要:是

有效值:RETRY | EXIT

onExitCode

包含 glob 模式,以比對為任務ExitCode傳回之 的小數表示法。模式的長度上限為 512 個字元。它只能包含數字。它不能包含字母或特殊字元。可以選擇以星號 (*) 結束,以便只有字串的開頭需要完全相符。

類型:字串

必要:否

onReason

包含 glob 模式,以比對為任務傳回Reason的 。模式的長度上限為 512 個字元。它可以包含字母、數字、句點 (.)、冒號 (:) 和空格 (空格、標籤)。可以選擇以星號 (*) 結束,以便只有字串的開頭需要完全相符。

類型:字串

必要:否

onStatusReason

包含球體模式,以比對為任務傳回StatusReason的 。模式的長度上限為 512 個字元。它可以包含字母、數字、句點 (.)、冒號 (:) 和空格 (空格、標籤)。可以選擇以星號 (*) 結束,以便只有字串的開頭需要完全相符。

類型:字串

必要:否

排程優先順序

schedulingPriority

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

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

類型:整數

必要:否

標籤

tags

要與任務定義建立關聯的鍵值對標籤。如需詳細資訊,請參閱標記您的 AWS Batch 資源

類型:字串到字串映射

必要:否

逾時

timeout

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

類型:JobTimeout 物件

必要:否

attemptDurationSeconds

AWS Batch 終止未完成任務後的持續時間,以秒為單位 (從任務嘗試的startedAt時間戳記測量)。逾時最小值為 60 秒。

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

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

類型:整數

必要:否