本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
參考: 的任務定義參數 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 的建立容器
區段 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 登錄檔中的映像為可用。您也可以用
指定其他儲存庫。允許最多 255 個字元 (大小寫)、數字、連字號、底線、等號、句號、正斜線、井號。此參數repository-url
/image
:tag
Image
在 Docker 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 上官方儲存庫中的映像,使用的是單一名稱 (例如,
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 的建立容器
區段 Devices
中映射至 ,以及執行 的 Docker--device
選項。 API注意
此參數不適用於在 Fargate 資源上執行的任務。
類型:Device 物件的陣列
必要:否
hostPath
-
主機容器執行個體中可用裝置的路徑。
類型:字串
必要:是
containerPath
-
裝置在容器中公開的路徑為 。如果未指定,裝置會在與主機路徑相同的路徑中公開。
類型:字串
必要:否
permissions
-
容器中的裝置的許可。如果未指定,則許可會設為
READ
、WRITE
和MKNOD
。類型:字串陣列
必要:否
有效值:
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
-
您可藉此調整容器的記憶體交換行為。除非絕對必要,否則
swappiness
值0
會導致交換不會發生。為100
的swappiness
值導致積極地交換頁面。接受的值為介於0
與100
之間的整數。如果未指定swappiness
參數,則會使用預設值60
。如果未對maxSwap
指定值,則會忽略此參數。如果maxSwap
設定為 0,則容器不會使用交換。此參數會映射到 docker run的 --memory-swappiness
選項。當您使用每個容器交換組態時,請考量下列事項。
-
必須在容器執行個體上啟用和配置交換空間,供容器使用。
注意
根據預設AMIs,Amazon ECS最佳化未啟用交換。您必須在執行個體上啟用交換,才能使用此功能。如需詳細資訊,請參閱 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
-
的大小 (以 MiB 為單位) tmpfs 磁碟區。
類型:整數
必要:是
logConfiguration
-
任務的日誌組態規格。
此參數在 Docker Remote 的建立容器
區段 LogConfig
中映射至 ,以及執行--log-driver
的 選項。 APIhttps://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
的 選項。 APIhttps://docs.docker.com/engine/reference/run/ 根據預設,任務會使用與 Docker 常駐程式相同的記錄驅動程式。不過,任務可以使用與 Docker 常駐程式不同的記錄驅動程式,方法是在任務定義中指定具有此參數的日誌驅動程式。如果您想要為任務指定另一個記錄驅動程式,則必須在運算環境中的容器執行個體上設定日誌系統。或者,在另一個日誌伺服器上進行設定,以提供遠端日誌記錄選項。如需支援的不同日誌驅動程式選項的詳細資訊,請參閱 Docker 文件中的 Configure logging drivers (設定日誌驅動程式)。 注意
AWS Batch 目前支援 Docker 常駐程式可用的記錄驅動程式子集。未來版本的 Amazon ECS容器代理程式可能會提供其他日誌驅動程式。
支援的記錄驅動程式為
awslogs
、fluentd
、gelf
、json-file
、journald
、logentries
、syslog
和splunk
。注意
在 Fargate 資源上執行的任務僅限於
awslogs
和splunk
日誌驅動程式。此參數需要容器執行個體上 Docker Remote API或更新版本的 1.18 版。若要檢查容器執行個體上的 Docker Remote API版本,請登入您的容器執行個體並執行下列命令:
sudo docker version | grep "Server API version"
注意
在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
MEMORY
和VCPU
。"resourceRequirements" : [ { "type": "GPU", "value": "
number
" } ]類型:物件陣列
必要:否
type
-
要指派給容器的資源類型。支援的資源包括
GPU
MEMORY
和VCPU
。類型:字串
必要:是,使用
resourceRequirements
時。 value
-
為容器預留的指定資源數量。這些值根據指定的
type
而有所差異。- type="GPU"
-
GPUs 要預留給容器的實體數量。為任務中的所有容器GPUs預留的 數目不能超過任務啟動時運算資源GPUs上可用的 數目。
- type="MEMORY"
-
提供給容器使用的記憶體硬性限制 (MiB)。如果您的容器嘗試使用超過此處指定的記憶體,容器便會終止。此參數會在 Docker Remote 的建立容器
區段 Memory
中映射至 ,以及執行 的 Docker--memory
選項。 API您必須為單一工作指定至少 4 MiB 的記憶體。這是必要項目,但可以在多個地方為多節點平行 (MNP) 任務指定。必須至少為每個節點指定一次。此參數在 Docker Remote 的建立容器 區段 Memory
中映射至 ,以及執行--memory
的 選項。 APIhttps://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
的 選項。 APIhttps://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
-
ulimit
的type
。類型:字串
必要:是,使用
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
。這相當於 Pod的 Entrypoint 部分中的 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
-
容器的映像提取政策。支援的值為
Always
、IfNotPresent
和Never
。此參數預設為IfNotPresent
。但如果指定:latest
標籤,預設為Always
。如需詳細資訊,請參閱中的更新映像Kubernetes 文件 。 類型:字串
必要:否
name
-
容器的名稱。如果未指定名稱,系統會使用預設名稱 "
Default
"。Pod 中的每個容器都必須有唯一名稱。類型:字串
必要:否
resources
-
指派給容器的資源類型和數量。支援的資源包括
memory
cpu
和nvidia.com/gpu
。如需詳細資訊,請參閱中的 Pod 和容器資源管理Kubernetes 文件 。 類型:EksContainerResourceRequirements 物件
必要:否
limits
-
為容器預留的資源類型和數量。這些值根據指定的
name
而有所差異。可以使用limits
或requests
物件請求資源。- memory
-
容器的記憶體硬性限制 (以 MiB 為單位),使用整數,具有 "Mi" 字尾。如果您的容器嘗試使用超過指定的記憶體,容器便會終止。您必須為任務指定至少 4 MiB 的記憶體。可以在
limits
、requests
或兩者中指定memory
。如果同時在這兩個位置指定memory
,則limits
中指定的值必須等於requests
中指定的值。注意
若要將資源使用率最大化,請為您正在使用的特定執行個體類型的任務,提供盡可能多的記憶體。如要瞭解如何作業,請參閱運算資源記憶體管理。
- cpu
-
為容器預留CPUs的 數目。值必須是
0.25
的偶數倍數。可以在limits
、requests
或兩者中指定cpu
。如果同時在這兩個位置指定cpu
,則limits
中指定的值至少須與requests
中指定的值一樣大。 - nvidia.com/gpu
-
為容器GPUs預留的 數目。值必須為整數。可以在
limits
、requests
或兩者中指定memory
。如果同時在這兩個位置指定memory
,則limits
中指定的值必須等於requests
中指定的值。
類型:字串到字串映射
值長度限制:長度下限為 1。長度上限為 256。
必要:否
requests
-
為容器請求的資源類型和數量。這些值根據指定的
name
而有所差異。可以使用limits
或requests
物件請求資源。- memory
-
容器的記憶體硬性限制 (以 MiB 為單位),使用整數,具有 "Mi" 字尾。如果您的容器嘗試使用超過指定的記憶體,容器便會終止。您必須為任務指定至少 4 MiB 的記憶體。可以在
limits
、requests
或兩者中指定memory
。如果同時在兩者中指定memory
,則limits
中指定的值必須等於requests
中指定的值。注意
如果您嘗試為特定執行個體類型提供盡可能多的記憶體,以最大限度地提高資源使用率,請參閱 運算資源記憶體管理。
- cpu
-
CPUs 預留給容器的 數目。值必須是
0.25
的偶數倍數。可以在limits
、requests
或兩者中指定cpu
。如果同時在兩者中指定cpu
,則limits
中指定的值至少須與requests
中指定的值一樣大。 - nvidia.com/gpu
-
GPUs 預留給容器的 數目。值必須為整數。可以在
limits
、requests
或兩者中指定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/#privilegedKubernetes 文件 。 類型:布林值
必要:否
readOnlyRootFilesystem
-
此參數為
true
時,容器會取得根檔案系統的唯讀存取權。預設值為false
。此參數會對應至ReadOnlyRootFilesystem
中的磁碟區和檔案系統 Pod 安全政策Kubernetes 文件 。 類型:布林值
必要:否
runAsGroup
-
指定此參數時,容器會以指定的群組 ID (
gid
) 執行。如果未指定此參數,預設值為映像中繼資料中指定的群組。此參數會映射至 中的使用者和群組 Pod 安全MustRunAs
政策中的RunAsGroup
和 政策 https://kubernetes.io/docs/concepts/security/pod-security-policy/#users-and-groupsKubernetes 文件 。 類型:Long
必要:否
runAsNonRoot
-
指定此參數時,容器會以
uid
非 0 的使用者身分執行。如果未指定此參數,系統會強制執行此規則。此參數會對應至 中的使用者和群組 Pod 安全MustRunAsNonRoot
政策中的RunAsUser
和 政策 https://kubernetes.io/docs/concepts/security/pod-security-policy/#users-and-groupsKubernetes 文件 。 類型:Long
必要:否
runAsUser
-
指定此參數時,容器會以指定的使用者 ID (
uid
) 執行。如果未指定此參數,預設值為映像中繼資料中指定的使用者。此參數會映射至 中的使用者和群組 Pod 安全MustRanAs
政策中的RunAsUser
和 政策 https://kubernetes.io/docs/concepts/security/pod-security-policy/#users-and-groupsKubernetes 文件 。 類型: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或 DescribeJobsAPI操作不會傳回 的值。視hostNetwork
參數的值而定,Pod 規格設定會包含ClusterFirst
或ClusterFirstWithHostNet
。如需詳細資訊,請參閱中的 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
的範圍表示節點具有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
-
包含 全域模式,以比對為任務傳回
Reason
的 。模式的長度上限為 512 個字元。它可以包含字母、數字、句點 (.)、冒號 (:) 和空格 (空格、索引標籤)。可以選擇以星號 (*) 結束,以便只有字串的開頭需要完全相符。類型:字串
必要:否
onStatusReason
-
包含 全域模式,以比對為任務傳回
StatusReason
的 。模式的長度上限為 512 個字元。它可以包含字母、數字、句點 (.)、冒號 (:) 和空格 (空格、索引標籤)。可以選擇以星號 (*) 結束,以便只有字串的開頭需要完全相符。類型:字串
必要:否
排程優先順序
schedulingPriority
-
與此任務定義一起提交的任務的排程優先順序。這只會影響具有公平共用政策的任務佇列中的任務。排程優先順序較高的任務會排在排程優先順序較低的任務之前。
支援的最小值為 0,支援的最大值為 9999。
類型:整數
必要:否
標籤
tags
-
要與任務定義建立關聯的鍵值對標籤。如需詳細資訊,請參閱標記您的 AWS Batch 資源。
類型:字串到字串映射
必要:否
逾時
timeout
-
您可以設定任務的逾時持續時間,以便在任務執行時間超過此時間時 AWS Batch 終止任務。如需詳細資訊,請參閱任務逾時。如果任務因逾時而終止,則不會重試。SubmitJob 操作期間指定的任何逾時組態都會覆寫此處定義的逾時組態。如需詳細資訊,請參閱任務逾時。
類型:JobTimeout 物件
必要:否
attemptDurationSeconds
-
AWS Batch 終止未完成任務後的持續時間,以秒為單位 (從任務嘗試的
startedAt
時間戳記測量)。逾時最小值為 60 秒。若為陣列任務,逾時會套用至子任務,而不是父陣列任務。
對於多節點平行 (MNP) 任務,逾時適用於整個任務,而不是個別節點。
類型:整數
必要:否