參考: 的任務定義參數 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 的建立容器區段Cmd中映射至 ,並將 COMMAND 參數映射至 docker run API如需 Docker CMD 參數的詳細資訊,請參閱https://docs.docker.com/engine/參考/建置器/#cmd

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

類型:字串陣列

必要:否

environment

傳遞至容器的環境變數。此參數會在 Docker Remote 的建立容器區段Env中映射至 ,並將 --env選項映射至 docker run API

重要

不建議您對敏感資訊 (例如憑證) 使用純文字環境變數。

注意

環境變數不能以 開頭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 個字元 (大小寫)、數字、連字號、底線、等號、句號、正斜線、井號。此參數ImageDocker Remote 的建立容器區段和 的 IMAGE 參數中映射至 docker run API

注意

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 的建立容器區段Devices中映射至 ,以及執行 的 Docker --device選項。 API

注意

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

類型:Device 物件的陣列

必要:否

hostPath

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

類型:字串

必要:是

containerPath

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

類型:字串

必要:否

permissions

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

類型:字串陣列

必要:否

有效值:READ | WRITE | MKNOD

initProcessEnabled

若為 true,請在容器內執行 init 處理程序,該處理程序可轉寄訊號及獲得處理程序。此參數會映射到 docker run--init 選項。此參數需要容器執行個體上 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 參數,容器會針對其執行的容器執行個體使用交換組態。必須設定 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 選項。

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

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

    注意

    根據預設AMIs,Amazon ECS最佳化未啟用交換。您必須在執行個體上啟用交換,才能使用此功能。如需詳細資訊,請參閱 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"" | "noatimediratime" | "nodiratime" | "" bind| "" | "" | "" | rbindunbindablerunbindableprivaterprivate"" | "shared" | "" | "rsharedslaverslaverelatime" | norelatime"" | strictatime""" | "" | """ nostrictatimemodeuidgid| nr_inodes""nr_blocksmpol

類型:字串陣列

必要:否

size

的大小 (以 MiB 為單位) tmpfs 磁碟區。

類型:整數

必要:是

logConfiguration

任務的日誌組態規格。

此參數在 Docker Remote 的建立容器區段LogConfig中映射至 ,以及執行 --log-driver的 選項。 API https://docs.docker.com/engine/reference/run/根據預設,容器會和 Docker 常駐程式使用一樣的日誌記錄驅動程式。不過,容器可以使用與 Docker 常駐程式不同的記錄驅動程式,方法是在容器定義中指定具有此參數的日誌驅動程式。若要為容器使用不同的記錄驅動程式,必須在容器執行個體或其他日誌伺服器上設定日誌系統,以提供遠端記錄選項。如需支援的不同日誌驅動程式選項的詳細資訊,請參閱 Docker 文件中的 Configure logging drivers (設定日誌驅動程式)。

注意

AWS Batch 目前支援 Docker 常駐程式可用的記錄驅動程式子集 (如LogConfiguration資料類型所示)。

此參數需要容器執行個體上 Docker Remote API或更新版本的 1.18 版。若要檢查容器執行個體上的 Docker Remote API版本,請登入您的容器執行個體並執行下列命令: sudo docker version | grep "Server API version"

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

類型:LogConfiguration 物件

必要:否

logDriver

用於任務的日誌驅動程式。根據預設, 會 AWS Batch 啟用awslogs日誌驅動程式。此參數列出的有效值是 Amazon ECS容器代理程式預設可以與之通訊的日誌驅動程式。

此參數在 Docker Remote 的建立容器區段LogConfig中映射至 ,以及執行 --log-driver的 選項。 API https://docs.docker.com/engine/reference/run/根據預設,任務會使用與 Docker 常駐程式相同的記錄驅動程式。不過,任務可以使用與 Docker 常駐程式不同的記錄驅動程式,方法是在任務定義中指定具有此參數的日誌驅動程式。如果您想要為任務指定另一個記錄驅動程式,則必須在運算環境中的容器執行個體上設定日誌系統。或者,在另一個日誌伺服器上進行設定,以提供遠端日誌記錄選項。如需支援的不同日誌驅動程式選項的詳細資訊,請參閱 Docker 文件中的 Configure logging drivers (設定日誌驅動程式)。

注意

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

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

注意

在 Fargate 資源上執行的任務僅限於 awslogssplunk 日誌驅動程式。

此參數需要容器執行個體上 Docker Remote API或更新版本的 1.18 版。若要檢查容器執行個體上的 Docker Remote API版本,請登入您的容器執行個體並執行下列命令: sudo docker version | grep "Server API version"

注意

在ECS容器執行個體上執行的 Amazon 容器代理程式必須將該執行個體上可用的記錄驅動程式註冊為ECS_AVAILABLE_LOGGING_DRIVERS環境變數。否則,放置在該執行個體上的容器無法使用這些日誌組態選項。如需詳細資訊,請參閱 Amazon Elastic ECS Container Service 開發人員指南 中的 Amazon Container Agent Configuration

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

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

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

類型:字串到字串映射

必要:否

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 的建立容器區段Volumes中映射至 ,並將 --volume選項映射至 docker run API

"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 的建立容器區段Privileged中映射至 ,並將 --privileged選項映射至 docker run API此參數不適用於在 Fargate 資源上執行的任務。請勿提供或指定為 false。

"privileged": true|false

類型:布林值

必要:否

readonlyRootFilesystem

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

"readonlyRootFilesystem": true|false

類型:布林值

必要:否

resourceRequirements

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

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

類型:物件陣列

必要:否

type

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

類型:字串

必要:是,使用 resourceRequirements 時。

value

為容器預留的指定資源數量。這些值根據指定的 type 而有所差異。

type="GPU"

GPUs 要預留給容器的實體數量。為任務中的所有容器GPUs預留的 數目不能超過任務啟動時運算資源GPUs上可用的 數目。

type="MEMORY"

提供給容器使用的記憶體硬性限制 (MiB)。如果您的容器嘗試使用超過此處指定的記憶體,容器便會終止。此參數會在 Docker Remote 的建立容器區段Memory中映射至 ,以及執行 的 Docker --memory選項。 API您必須為單一工作指定至少 4 MiB 的記憶體。這是必要項目,但可以在多個地方為多節點平行 (MNP) 任務指定。必須至少為每個節點指定一次。此參數在 Docker Remote 的建立容器區段Memory中映射至 ,以及執行 --memory的 選項。 API https://docs.docker.com/engine/reference/run/

注意

如果您嘗試為特定執行個體類型提供盡可能多的記憶體,以最大限度地提高資源使用率,請參閱 運算資源記憶體管理

對於在 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"

為任務 vCPUs 預留的 數目。此參數在 Docker Remote 的建立容器區段CpuShares中映射至 ,以及執行 --cpu-shares的 選項。 API https://docs.docker.com/engine/reference/run/每個 vCPU 等於 1,024 個CPU共用。對於在EC2資源上執行的任務,您必須至少指定一個 v CPU。這是必要項目,但可以在幾個地方指定。必須至少為每個節點指定一次。

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

Fargate On-Demand vCPU 資源計數配額的預設值為 6 vCPUs。如需 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中映射至 ,並將 --ulimit選項映射至 docker run

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

類型:物件陣列

必要:否

name

ulimittype

類型:字串

必要:是,使用 ulimits 時。

hardLimit

ulimit 類型的硬性限制。

類型:整數

必要:是,使用 ulimits 時。

softLimit

ulimit 類型的軟性限制。

類型:整數

必要:是,使用 ulimits 時。

user

要在容器內使用的使用者名稱。此參數會在 Docker Remote 的建立容器區段User中映射至 ,並將 --user選項映射至 docker run API

"user": "string"

類型:字串

必要:否

vcpus

此參數已棄用,請resourceRequirements改用 。

為容器 vCPUs 預留的 數目。

如果您的任務定義包含類似以下內容的行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 存取點Amazon Elastic File System

類型:字串

必要:否

iam

決定是否在掛載 Amazon EFS 檔案系統時使用 AWS Batch 任務定義中定義的任務IAM角色。如果已啟用,必須在 EFSVolumeConfiguration 中啟用傳輸加密。如果省略此參數,系統會使用 DISABLED 的預設值。如需詳細資訊,請參閱使用 Amazon EFS存取點

類型:字串

有效值:ENABLED | DISABLED

必要:否

fileSystemId

要使用的 Amazon EFS 檔案系統 ID。

類型:字串

必要:否

rootDirectory

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

重要

如果在 中指定EFS存取點authorizationConfig,則必須省略根目錄參數,或將其設定為 /。這會強制執行在 Amazon EFS存取點上設定的路徑。

類型:字串

必要:否

transitEncryption

決定是否在 Amazon ECS 主機和 Amazon EFS 伺服器之間啟用傳輸中 Amazon EFS資料的加密。如果使用 Amazon EFSIAM授權,則必須啟用傳輸加密。如果省略此參數,系統會使用 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 EKS型任務特定之各種屬性的物件。不得針對 Amazon ECS型任務定義指定此值。

podProperties

的屬性 Kubernetes 任務的 Pod 資源。

類型:EksPodProperties 物件

必要:否

containers

Amazon EKSPod 上使用的容器屬性。

類型:EksContainer 物件

必要:否

args

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

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

類型:字串陣列

必要:否

command

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

如果沒有參考的環境變數,不會變更命令中的參考。例如,如果參考為 "$(NAME1)",且沒有 NAME1 環境變數,命令字串會保持 "$(NAME1)"。$$ 會替換為 $,且產生的字串不會擴展。例如,$$(VAR_NAME) 會以 $(VAR_NAME) 傳遞,無論是否有 VAR_NAME 環境變數。無法更新進入點。如需詳細資訊,請參閱 Dockerfile 參考ENTRYPOINT中的 ,以及定義 中容器和 Entrypoint 的命令和引https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#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。如需詳細資訊,請參閱中的 Pod 和容器資源管理 Kubernetes 文件

類型:EksContainerResourceRequirements 物件

必要:否

limits

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

memory

容器的記憶體硬性限制 (以 MiB 為單位),使用整數,具有 "Mi" 字尾。如果您的容器嘗試使用超過指定的記憶體,容器便會終止。您必須為任務指定至少 4 MiB 的記憶體。可以在 limitsrequests 或兩者中指定 memory。如果同時在這兩個位置指定 memory,則 limits 中指定的值必須等於 requests 中指定的值。

注意

若要將資源使用率最大化,請為您正在使用的特定執行個體類型的任務,提供盡可能多的記憶體。如要瞭解如何作業,請參閱運算資源記憶體管理

cpu

為容器預留CPUs的 數目。值必須是 0.25 的偶數倍數。可以在 limitsrequests 或兩者中指定 cpu。如果同時在這兩個位置指定 cpu,則 limits 中指定的值至少須與 requests 中指定的值一樣大。

nvidia.com/gpu

為容器GPUs預留的 數目。值必須為整數。可以在 limitsrequests 或兩者中指定 memory。如果同時在這兩個位置指定 memory,則 limits 中指定的值必須等於 requests 中指定的值。

類型:字串到字串映射

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

必要:否

requests

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

memory

容器的記憶體硬性限制 (以 MiB 為單位),使用整數,具有 "Mi" 字尾。如果您的容器嘗試使用超過指定的記憶體,容器便會終止。您必須為任務指定至少 4 MiB 的記憶體。可以在 limitsrequests 或兩者中指定 memory。如果同時在兩者中指定 memory,則 limits 中指定的值必須等於 requests 中指定的值。

注意

如果您嘗試為特定執行個體類型提供盡可能多的記憶體,以最大限度地提高資源使用率,請參閱 運算資源記憶體管理

cpu

CPUs 預留給容器的 數目。值必須是 0.25 的偶數倍數。可以在 limitsrequests 或兩者中指定 cpu。如果同時在兩者中指定 cpu,則 limits 中指定的值至少須與 requests 中指定的值一樣大。

nvidia.com/gpu

GPUs 預留給容器的 數目。值必須為整數。可以在 limitsrequests 或兩者中指定 nvidia.com/gpu。如果同時在兩者中指定 nvidia.com/gpu,則 limits 中指定的值必須等於 requests 中指定的值。

類型:字串到字串映射

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

必要:否

securityContext

任務的安全性內容。如需詳細資訊,請參閱在 中設定 Pod 或容器的安全內容 Kubernetes 文件

類型:EksContainerSecurityContext 物件

必要:否

privileged

此參數為 true 時,容器便會取得主機容器執行個體的更高許可。許可層級類似於root使用者許可。預設值為 false。此參數會對應至 中特權 Pod 安全privileged政策中的政策 https://kubernetes.io/docs/concepts/security/pod-security-policy/#privileged Kubernetes 文件

類型:布林值

必要:否

readOnlyRootFilesystem

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

類型:布林值

必要:否

runAsGroup

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

類型:Long

必要:否

runAsNonRoot

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

類型:Long

必要:否

runAsUser

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

類型:Long

必要:否

volumeMounts

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

類型:EksContainerVolumeMount 物件陣列

必要:否

mountPath

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

類型:字串

必要:否

name

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

類型:字串

必要:否

readOnly

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

類型:布林值

必要:否

dnsPolicy

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

有效值:Default | ClusterFirst | ClusterFirstWithHostNet

類型:字串

必要:否

hostNetwork

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

類型:布林值

必要:否

serviceAccountName

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

類型:字串

必要:否

volumes

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

類型:EksVolume 物件陣列

必要:否

emptyDir

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

類型:EksEmptyDir 物件

必要:否

中型

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

""

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

"Memory"

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

類型:字串

必要:否

sizeLimit

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

類型:字串

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

必要:否

hostPath

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

類型:EksHostPath 物件

必要:否

path

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

類型:字串

必要:否

name

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

類型:字串

必要:是

秘密

指定 的組態 Kubernetes secret 磁碟區。如需詳細資訊,請參閱中的秘密 Kubernetes 文件

類型:EksSecret 物件

必要:否

選擇性

指定是否必須定義秘密或秘密金鑰。

類型:布林值

必要:否

secretName

秘密的名稱。必須允許名稱作為DNS子網域名稱。如需詳細資訊,請參閱中的DNS子網域名稱 Kubernetes 文件

類型:字串

必要:是

平台功能

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

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

類型:字串

必要:否

onStatusReason

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

類型:字串

必要:否

排程優先順序

schedulingPriority

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

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

類型:整數

必要:否

標籤

tags

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

類型:字串到字串映射

必要:否

逾時

timeout

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

類型:JobTimeout 物件

必要:否

attemptDurationSeconds

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

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

對於多節點平行 (MNP) 任務,逾時適用於整個任務,而不是個別節點。

類型:整數

必要:否