本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
參考: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::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
。此命名慣例會保留給 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 登錄檔中的映像為可用。您也可以用
指定其他儲存庫。允許最多 255 個字元 (大小寫)、數字、連字號、底線、等號、句號、正斜線、井號。此參數會映射至 Docker Remote APIrepository-url
/image
:tag
的建立容器 區段中的 Image
以及 docker run的 IMAGE
參數。注意
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 上官方儲存庫中的映像,使用的是單一名稱 (例如,
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 資源上執行的任務。
類型:Device 物件的陣列
必要:否
hostPath
-
主機容器執行個體中可用裝置的路徑。
類型:字串
必要:是
containerPath
-
裝置在容器中公開的路徑。如果未指定,裝置會公開在與主機路徑相同的路徑。
類型:字串
必要:否
permissions
-
容器中的裝置的許可。如果未指定,則許可會設為
READ
、WRITE
和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
參數,容器會針對其執行所在的容器執行個體使用交換組態。必須設定maxSwap
值,才能使用swappiness
參數。注意
此參數不適用於在 Fargate 資源上執行的任務。
類型:整數
必要:否
sharedMemorySize
-
/dev/shm
磁碟區的大小值 (以 MiB 為單位)。此參數會映射到 docker run的 --shm-size
選項。注意
此參數不適用於在 Fargate 資源上執行的任務。
類型:整數
必要:否
swappiness
-
您可藉此調整容器的記憶體交換行為。除非絕對必要,否則
swappiness
值0
會導致交換不會發生。為100
的swappiness
值導致積極地交換頁面。接受的值為介於0
與100
之間的整數。如果未指定swappiness
參數,則會使用預設值60
。如果未對maxSwap
指定值,則會忽略此參數。如果maxSwap
設定為 0,則容器不會使用交換。此參數會映射到 docker run的 --memory-swappiness
選項。當您使用每個容器交換組態時,請考量下列事項。
-
必須在容器執行個體上啟用和配置交換空間,供容器使用。
注意
根據預設,Amazon ECS 最佳化 AMI 沒有啟用交換功能。您必須在執行個體上啟用交換,才能使用此功能。如需詳細資訊,請參閱《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 文件中的 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 容器代理程式版本可能會提供更多可用的其他日誌驅動程式。
支援的記錄驅動程式為
awslogs
、fluentd
、gelf
、json-file
、journald
、logentries
、syslog
和splunk
。注意
在 Fargate 資源上執行的任務僅限於
awslogs
和splunk
日誌驅動程式。在您的容器執行個體上,此參數需要 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
MEMORY
和VCPU
。"resourceRequirements" : [ { "type": "GPU", "value": "
number
" } ]類型:物件陣列
必要:否
type
-
要指派給容器的資源類型。支援的資源包括
GPU
MEMORY
和VCPU
。類型:字串
必要:是,使用
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 APICreate 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
-
ulimit
的type
。類型:字串
必要:是,使用
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
-
容器的映像提取政策。支援的值為
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 的記憶體。可以在
limits
、requests
或兩者中指定memory
。如果同時在這兩個位置指定memory
,則limits
中指定的值必須等於requests
中指定的值。注意
若要將資源使用率最大化,請為您正在使用的特定執行個體類型的任務,提供盡可能多的記憶體。如要瞭解如何作業,請參閱運算資源記憶體管理。
- cpu
-
為容器預留的 CPU 數量。值必須是
0.25
的偶數倍數。可以在limits
、requests
或兩者中指定cpu
。如果同時在這兩個位置指定cpu
,則limits
中指定的值至少須與requests
中指定的值一樣大。 - nvidia.com/gpu
-
為容器預留的 GPU 數量。值必須為整數。可以在
limits
、requests
或兩者中指定memory
。如果同時在這兩個位置指定memory
,則limits
中指定的值必須等於requests
中指定的值。
類型:字串到字串映射
值長度限制:長度下限為 1。長度上限為 256。
必要:否
requests
-
為容器請求的資源類型和數量。這些值根據指定的
name
而有所差異。可以使用limits
或requests
物件請求資源。- memory
-
容器的記憶體硬性限制 (以 MiB 為單位),使用整數,具有 "Mi" 字尾。如果您的容器嘗試使用超過指定的記憶體,容器便會終止。您必須為任務指定至少 4 MiB 的記憶體。可以在
limits
、requests
或兩者中指定memory
。如果同時在兩者中指定memory
,則limits
中指定的值必須等於requests
中指定的值。注意
如果您嘗試為特定執行個體類型提供盡可能多的記憶體,以最大化資源使用率,請參閱 運算資源記憶體管理。
- cpu
-
為容器預留的 CPU 數量。值必須是
0.25
的偶數倍數。可以在limits
、requests
或兩者中指定cpu
。如果同時在兩者中指定cpu
,則limits
中指定的值至少須與requests
中指定的值一樣大。 - nvidia.com/gpu
-
為容器預留的 GPU 數量。值必須為整數。可以在
limits
、requests
或兩者中指定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 安全RunAsGroup
MustRunAs
政策中的 和 政策。 https://kubernetes.io/docs/concepts/security/pod-security-policy/#users-and-groups類型:Long
必要:否
runAsNonRoot
-
指定此參數時,容器會以
uid
非 0 的使用者身分執行。如果未指定此參數,系統會強制執行此規則。此參數會映射至 Kubernetes 文件中使用者和群組 Pod 安全RunAsUser
MustRunAsNonRoot
政策中的 和 政策。 https://kubernetes.io/docs/concepts/security/pod-security-policy/#users-and-groups類型:Long
必要:否
runAsUser
-
指定此參數時,容器會以指定的使用者 ID (
uid
) 執行。如果未指定此參數,預設值為映像中繼資料中指定的使用者。此參數會映射至 Kubernetes 文件中使用者和群組 Pod 安全RunAsUser
MustRanAs
政策中的 和 政策。 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
參數,預設值為ClusterFirstWithHostNet
。ClusterFirst
指示任何與設定之叢集網域字尾不相符的 DNS 查詢,都會轉寄至繼承自節點的上游名稱伺服器。如果 RegisterJobDefinition API 操作dnsPolicy
中未指定 的值,則dnsPolicy
DescribeJobDefinitions 或 DescribeJobs API 操作都不會傳回 的值。視hostNetwork
參數的值而定,Pod 規格設定會包含ClusterFirst
或ClusterFirstWithHostNet
。如需詳細資訊,請參閱 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
-
指定Kubernetes
emptyDir
磁碟區的組態。將 Pod 指派給節點時,會先建立emptyDir
磁碟區。只要該 Pod 在該節點上執行,就會存在。emptyDir
磁碟區最初是空的。Pod 中的所有容器都可以讀取和寫入emptyDir
磁碟區中的檔案。但emptyDir
磁碟區可以掛載在每個容器中相同或不同路徑上。因任何原因將 Pod 從節點移除時,系統會永久刪除emptyDir
中的資料。如需詳細資訊,請參閱 Kubernetes 文件中的 emptyDir。 類型:EksEmptyDir 物件
必要:否
- 中型
-
存放磁碟區的媒體。預設值為空白字串,這會使用節點的儲存空間。
- ""
-
(預設) 使用節點的磁碟儲存空間。
- "Memory"
-
使用節點 RAM 支援的
tmpfs
磁碟區。節點重新開機時,磁碟區的內容會遺失,且磁碟區上的任何儲存空間都會計入容器的記憶體限制。
類型:字串
必要:否
- sizeLimit
-
磁碟區的大小上限。預設未定義大小上限。
類型:字串
長度限制:長度下限為 1。長度上限為 256。
必要:否
- hostPath
-
指定Kubernetes
hostPath
磁碟區的組態。hostPath
磁碟區會將現有檔案或目錄,從主機節點的檔案系統掛載到您的 Pod。如需詳細資訊,請參閱 Kubernetes 文件中的 hostPath。 類型:EksHostPath 物件
必要:否
- path
-
要掛載至 Pod 上容器的主機檔案或目錄的路徑。
類型:字串
必要:否
- name
-
磁碟區名稱。此名稱必須可當作 DNS 子網域名稱。如需詳細資訊,請參閱 Kubernetes 文件中的 DNS 子網域名稱
。 類型:字串
必要:是
- 秘密
-
指定Kubernetes
secret
磁碟區的組態。如需詳細資訊,請參閱 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
的範圍表示節點具有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
-
包含球體模式,以比對為任務傳回
StatusReason
的 。模式的長度上限為 512 個字元。它可以包含字母、數字、句點 (.)、冒號 (:) 和空格 (空格、標籤)。可以選擇以星號 (*) 結束,以便只有字串的開頭需要完全相符。類型:字串
必要:否
排程優先順序
schedulingPriority
-
與此任務定義一起提交的任務的排程優先順序。這只會影響具有公平共享政策的任務佇列中的任務。排程優先順序較高的任務會排在排程優先順序較低的任務之前。
支援的最小值為 0,支援的最大值為 9999。
類型:整數
必要:否
標籤
tags
-
要與任務定義建立關聯的鍵值對標籤。如需詳細資訊,請參閱標記您的 AWS Batch 資源。
類型:字串到字串映射
必要:否
逾時
timeout
-
您可以設定任務的逾時持續時間,以便在任務執行時間超過此時間時 AWS Batch 終止任務。如需詳細資訊,請參閱任務逾時。如果任務因逾時而終止,則不會重試。在 SubmitJob 操作期間指定的任何逾時組態都會覆寫此處定義的逾時組態。如需詳細資訊,請參閱任務逾時。
類型:JobTimeout 物件
必要:否
attemptDurationSeconds
-
AWS Batch 終止未完成任務後的持續時間,以秒為單位 (從任務嘗試的
startedAt
時間戳記測量)。逾時最小值為 60 秒。若為陣列任務,逾時會套用至子任務,而不是父陣列任務。
若為多節點平行 (MNP) 任務,逾時會套用至整個工作,而非個別節點。
類型:整數
必要:否