本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon ECS任務定義參數
任務定義分為不同的部分:任務系列、 AWS Identity and Access Management (IAM) 任務角色、網路模式、容器定義、磁碟區、任務置放限制和啟動類型。任務定義中需要系列和容器定義。相對的,任務角色、網路模式、磁碟區、任務置放限制及啟動類型則為選用的。
您可以在 JSON 檔案中使用這些參數來設定任務定義。
以下是每個任務定義參數更詳細的描述。
系列
family
-
類型:字串
必要:是
當您註冊任務定義時,您會指定它的系列,這類似於任務定義以修訂版號碼指定的多個版本名稱。在特定系列註冊的第一個任務定義會得到修訂版 1,之後註冊的任何任務定義,則得到連續的修訂版號碼。
啟動類型
註冊任務定義時,您可以指定 Amazon ECS應驗證任務定義的啟動類型。如果任務定義不會依據指定的相容性進行驗證,則會傳回用戶端例外狀況。如需詳細資訊,請參閱Amazon ECS啟動類型。
任務定義允許使用以下參數。
requiresCompatibilities
-
類型:字串陣列
必要:否
有效值:
EC2
|FARGATE
|EXTERNAL
驗證任務定義所依據的啟動類型。這會啟動檢查,以確保任務定義中使用的所有參數都能滿足啟動類型的要求。
任務角色
taskRoleArn
-
類型:字串
必要:否
當您註冊任務定義時,您可以為IAM角色提供任務角色,允許任務許可中的容器代表您呼叫其相關政策中APIs指定的 AWS 。如需詳細資訊,請參閱Amazon ECS任務IAM角色。
當您啟動 Amazon ECS最佳化 Windows Server 時AMI,Windows 上的任務IAM角色需要設定
-EnableTaskIAMRole
選項。您的容器還必須執行一些組態程式碼,以使用此功能。如需詳細資訊,請參閱 Amazon EC2 Windows 執行個體額外組態。
任務執行角色
executionRoleArn
-
類型:字串
必要:有條件
任務執行角色的 Amazon Resource Name (ARN),授予 Amazon ECS容器代理程式代表您撥打電話 AWS API的許可。
注意
任務執行IAM角色是必要的,視任務的需求而定。如需詳細資訊,請參閱Amazon ECS任務執行IAM角色。
網路模式
networkMode
-
類型:字串
必要:否
任務中的容器所使用的 Docker 聯網模式。對於託管在 Amazon EC2 Linux 執行個體上的 Amazon ECS任務,有效值為
none
、bridge
、awsvpc
和host
。如果未指定網路模式,則預設網路模式為bridge
。對於託管在 Amazon EC2 Windows 執行個體上的 Amazon ECS任務,有效值為default
、 和awsvpc
。如果未指定網路模式,則會使用default
網路模式。對於在 Fargate 上託管的 Amazon ECS任務,需要awsvpc
網路模式。如果網路模式設為
none
,任務的容器即沒有外部連線,並且無法在容器定義中指定連接埠映射。如果網路模式為
bridge
,任務會使用 Docker 內建的虛擬網路在 Linux 上執行,該網路會在託管任務的每個 Amazon EC2執行個體內執行。Linux 上的內建虛擬網路會使用bridge
Docker 網路驅動程式。如果網路模式為
host
,任務會使用主機的網路,透過直接將容器連接埠映射到託管任務ENI的 Amazon EC2執行個體的 ,繞過 Docker 的內建虛擬網路。動態連接埠映射無法在此網路模式下使用。任務定義中使用此模式的容器必須指定特定hostPort
數字。主機上的連接埠號碼無法由多個任務使用。因此,您無法在單一 Amazon EC2執行個體上執行相同任務定義的多個任務。重要
執行使用
host
網路模式的任務時,請勿使用根使用者 (UID 0) 執行容器,以提高安全性。作為最佳安全實務,請一律使用非根使用者。對於 Amazon EC2啟動類型,如果網路模式為
awsvpc
,則任務會配置彈性網路介面,而且您必須在建立服務或執行任務定義的任務NetworkConfiguration
時指定 。如需詳細資訊,請參閱EC2 啟動類型的 Amazon ECS任務聯網選項。如果網路模式為
default
,任務會使用 Docker 內建的虛擬網路在 Windows 上執行,該網路會在託管任務的每個 Amazon EC2執行個體內執行。Windows 上的內建虛擬網路會使用nat
Docker 網路驅動程式。對於 Fargate 啟動類型,當網路模式為 時
awsvpc
,任務會配置彈性網路介面,而且您必須在建立服務或執行任務定義的任務NetworkConfiguration
時指定 。如需詳細資訊,請參閱 Fargate Task Networking 。awsvpc
網路模式為容器提供最高的網路效能,因為它們使用 Amazon EC2 網路堆疊。公開的容器連接埠會直接映射至連接的彈性網路介面連接埠。因此,您無法使用動態主機連接埠對應。host
和awsvpc
網路模式為容器提供最高的網路效能,因為它們使用 Amazon EC2 網路堆疊。使用host
和awsvpc
網路模式,公開的容器連接埠會直接映射到對應的主機連接埠 (適用於host
網路模式) 或已連接的彈性網路介面連接埠 (適用於awsvpc
網路模式)。因此,您無法使用動態主機連接埠對應。如果使用 Fargate 啟動類型,則需要
awsvpc
網路模式。如果使用EC2啟動類型,允許的網路模式取決於基礎EC2執行個體的作業系統。如果是 Linux,則可以使用任何網路模式。如果是 Windows,則會使用default
和awsvpc
模式。
執行時間平台
operatingSystemFamily
-
類型:字串
必要:有條件
預設: LINUX
在 Fargate 上託管的 Amazon ECS任務需要此參數。
在註冊任務定義時,您會指定作業系統系列。
在 Fargate 上託管的 Amazon
WINDOWS_SERVER_2019_FULL
ECS任務的有效值為LINUX
、WINDOWS_SERVER_2019_CORE
、、WINDOWS_SERVER_2022_FULL
和WINDOWS_SERVER_2022_CORE
。在 上託管的 Amazon ECS任務的有效值EC2為
LINUX
、WINDOWS_SERVER_2022_CORE
、WINDOWS_SERVER_2019_FULL
、WINDOWS_SERVER_2022_FULL
和WINDOWS_SERVER_2019_CORE
、WINDOWS_SERVER_2016_FULL
、WINDOWS_SERVER_2004_CORE
和WINDOWS_SERVER_20H2_CORE
。服務中使用的所有任務定義都必須與此參數具有相同的值。
如果任務定義為服務的一部分,此值必須與服務
platformFamily
值相符。 cpuArchitecture
-
類型:字串
必要:有條件
預設:X86_64
在 Fargate 上託管的 Amazon ECS任務需要此參數。如果參數保留為
null
,則會在 Fargate 上託管的任務啟動時自動指派預設值。當您註冊任務定義時,您可以指定 CPU 架構。有效值為
X86_64
和ARM64
。服務中使用的所有任務定義都必須與此參數具有相同的值。
當您有 Fargate 啟動類型或EC2啟動類型的 Linux 任務時,您可以將 值設定為
ARM64
。如需詳細資訊,請參閱適用於 64 位元ARM工作負載的 Amazon ECS任務定義。
任務大小
註冊任務定義時,您可以指定任務所用的總計CPU和記憶體。這和容器定義層級的 cpu
和 memory
值是分開的。對於託管在 Amazon EC2執行個體上的任務,這些欄位是選用欄位。對於在 Fargate (Linux 和 Windows 皆可) 上託管的任務,這些欄位為必填欄位,而且受支援的 cpu
和 memory
具有特定值。
注意
Windows 容器的任務層級CPU和記憶體參數會遭到忽略。我們建議為 Windows 容器指定容器層級的資源。
任務定義允許使用以下參數:
cpu
-
類型:字串
必要:有條件
注意
Windows 容器不支援此參數。
任務要呈現的CPU單位硬限制。您可以將JSON檔案中CPU的值指定為單位CPU或虛擬 CPUs() 的字串vCPUs。例如,您可以指定單位或
1024
CPU1 vCPU
中的CPU值vCPUs。註冊任務定義時,vCPU 值會轉換為整數,表示CPU單位。對於在 EC2或外部執行個體上執行的任務,此欄位為選用。如果您的叢集沒有任何已註冊的容器執行個體,且具有可用的請求CPU單位,則任務會失敗。在 EC2或外部執行個體上執行之任務的支援值介於
0.125
vCPUs 和10
之間vCPUs。對於在 Fargate 上 (Linux 和 Windows 容器皆可) 執行的任務,此欄位為必填欄位,而且您必須使用下列其中一個值,以決定
memory
參數的受支援值範圍。下表顯示任務層級CPU和記憶體的有效組合。CPU 值 記憶體數值 支援的作業系統 AWS Fargate 256 (.25 v CPU) 512 MiB、1 GB、2 GB Linux 512 (.5 v CPU) 1 GB、2 GB、3 GB、4 GB Linux 1024 (1 v CPU) 2 GB、3 GB、4 GB、5 GB、6 GB、7 GB、8 GB Linux、Windows 2048 (2 v CPU) 介於 4 GB 與 16 GB 之間,以 1 GB 為單位遞增 Linux、Windows 4096 (4 v CPU) 介於 8 GB 與 30 GB 之間,以 1 GB 為單位遞增 Linux、Windows 8192 (8 v CPU) 注意
此選項需要 Linux 平台
1.4.0
或更新版本。介於 16 GB 與 60 GB 之間,以 4 GB 為單位遞增 Linux 16384 (16v CPU) 注意
此選項需要 Linux 平台
1.4.0
或更新版本。介於 32 GB 與 120 GB 之間,以 8 GB 為單位遞增 Linux
memory
-
類型:字串
必要:有條件
注意
Windows 容器不支援此參數。
要呈現給任務的記憶體硬限制。您可以在任務定義中將記憶體值指定為以 MB (MiB或 gigabyte (GB) 為單位的字串。例如,您可以指定 MiB
3072
或 GB3 GB
中的記憶體值。註冊任務定義時,GB 值會轉換為整數,指出 MiB。對於託管在 Amazon EC2執行個體上的任務,此欄位是選用的,並且可以使用任何值。如果指定任務層級的記憶體值,則容器層級的記憶體值是選用的。如果您的叢集沒有任何一個已註冊的容器執行個體具有可用的請求記憶體,則任務會失敗。您可以盡可能為特定執行個體類型的任務提供最多的記憶體,以將資源使用率最大化。如需詳細資訊,請參閱保留 Amazon ECS Linux 容器執行個體記憶體。
對於在 Fargate 上 (Linux 和 Windows 皆可) 託管的任務,此欄位為必填欄位,而且您必須使用下列其中一個值,以決定
cpu
參數的受支援值的範圍:記憶體值 (以 MiB 為單位,近似相等值以 GB 為單位) CPU 值 Fargate 支援的作業系統 512 (0.5 GB)、1024 (1 GB)、2048 (2 GB) 256 (.25 v CPU) Linux 1024 (1 GB)、2048 (2 GB)、3072 (3 GB)、4096 (4 GB) 512 (.5 v CPU) Linux 2048 (2 GB)、3072 (3 GB)、4096 (4GB)、5120 (5 GB)、6144 (6 GB)、7168 (7 GB)、8192 (8 GB) 1024 (1 v CPU) Linux、Windows 介於 4096 (4 GB) 與 16384 (16 GB) 之間,以 1024 (1 GB) 為單位遞增 2048 (2 v CPU) Linux、Windows 介於 8192 (8 GB) 與 30720 (30 GB) 之間,以 1024 (1 GB) 為單位遞增 4096 (4 v CPU) Linux、Windows 介於 16 GB 與 60 GB 之間,以 4 GB 為單位遞增 注意
此選項需要 Linux 平台
1.4.0
或更新版本。8192 (8 v CPU) Linux
介於 32 GB 與 120 GB 之間,以 8 GB 為單位遞增 注意
此選項需要 Linux 平台
1.4.0
或更新版本。16384 (16v CPU) Linux
容器定義
註冊任務定義時,您必須指定傳遞給 的容器定義清單 Docker 容器執行個體上的常駐程式。容器定義允許使用以下參數。
標準容器定義參數
下列任務定義參數為必要參數,或是會在大部分的容器定義中使用。
名稱
name
-
類型:字串
必要:是
容器的名稱。可以包含最多可達 255 個字元 (大小寫)、數字、連字號和底線。如果您在任務定義中連結多個容器,則一個容器的
name
可以輸入另一個容器的links
。這是為了連結容器。
映像
image
-
類型:字串
必要:是
用來啟動容器的映像。此字串會直接傳遞至 Docker 常駐程式。根據預設, 中的映像 Docker Hub 有可用的登錄檔。您也可以使用
或repository-url
/image
:tag
指定其他存放庫。允許最多 255 個字元 (大小寫)、數字、連字號、底線、等號、句號、正斜線、井號。此參數會在 docker create-container 命令和 docker 執行命令的repository-url
/image
@digest
IMAGE
參數Image
中映射至 。-
新任務啟動時,Amazon ECS容器代理程式會提取最新版本的指定映像和標籤,以供容器使用。但是,儲存庫映像後續的更新將不會散佈到已在執行中的任務。
-
支援私有登錄檔中的映像。如需詳細資訊,請參閱在 Amazon 中使用非AWS 容器映像 ECS。
-
Amazon ECR儲存庫中的影像可以使用完整
registry/repository:tag
或命名慣例registry/repository@digest
(例如aws_account_id
.dkr.ecr.region
.amazonaws.com/
或my-web-app
:latest
aws_account_id
.dkr.ecr.region
.amazonaws.com/
) 來指定。my-web-app
@sha256:94afd1f2e64d908bc90dbca0035a5b567EXAMPLE
-
上的官方儲存庫中的映像 Docker Hub 使用單一名稱 (例如
ubuntu
或mongo
)。 -
上的其他儲存庫中的影像 Docker Hub 符合組織名稱 (例如
amazon/amazon-ecs-agent
)。 -
其他線上儲存庫中的映像更進一步要求使用網域名稱 (例如,
quay.io/assemblyline/ubuntu
)。
-
記憶體
memory
-
類型:整數
必要:否
提供給容器使用的記憶體數量 (MiB)。如果您的容器嘗試使用超過此處指定的記憶體,容器便會終止。為任務中所有容器預留的記憶體總量必須低於任務
memory
值 (如果已指定一個)。此參數會在 docker create-container 命令Memory
中映射至 ,以及用於執行 docker--memory
的選項。如果使用 Fargate 啟動類型,這是選用參數。
如果您使用的是EC2啟動類型,則必須指定任務層級記憶體值或容器層級記憶體值。如果您同時指定容器層級的
memory
和memoryReservation
值,則memory
值必須大於memoryReservation
值。如果指定memoryReservation
,則會從放置容器的容器執行個體可用記憶體資源中減去該值。否則,即使用memory
的值。Docker 20.10.0 或更新版本的常駐程式會為容器保留最低 6 MiB 的記憶體。因此,不要為容器指定少於 6 MiB 的記憶體。
Docker 19.03.13-ce 或更舊版本的常駐程式會為容器保留最低 4 MiB 的記憶體。因此,不要為容器指定少於 4 MiB 的記憶體。
注意
若您嘗試盡可能為特定執行個體類型的任務提供最多的記憶體,以將資源使用率最大化,請參閱「保留 Amazon ECS Linux 容器執行個體記憶體」。
memoryReservation
-
類型:整數
必要:否
為容器保留的記憶體軟性限制 (MiB)。當系統記憶體處於爭用狀態時,Docker 會嘗試將容器記憶體保持在此軟限制。但是,您的容器可以在需要時使用更多記憶體。容器可以使用最多達到以
memory
參數指定的硬性限制 (如適用),或容器執行個體上的所有可用記憶體,以先達到者為準。此參數會在 docker create-container 命令MemoryReservation
中映射至 ,以及用於 docker 執行--memory-reservation
的選項。如果未指定任務層級的記憶體值,您必須為容器定義中的
memory
或memoryReservation
之一或兩者指定非零整數。若您同時指定兩者,memory
必須大於memoryReservation
。如果指定memoryReservation
,則會從放置容器的容器執行個體可用記憶體資源中減去該值。否則,即使用memory
的值。例如,若您的容器通常會使用 128 MiB 的記憶體,但會偶爾短期爆量到 256 MiB 的記憶體。您可以將
memoryReservation
設為 128 MiB,並將memory
硬性限制設為 300 MiB。此組態讓容器只從容器執行個體的剩餘資源中保留 128 MiB 的記憶體。同時,其還允許容器在需要時使用更多的記憶體資源。注意
Windows 容器不支援此參數。
Docker 20.10.0 或更新版本的常駐程式會為容器保留最低 6 MiB 的記憶體。因此,不要為容器指定少於 6 MiB 的記憶體。
Docker 19.03.13-ce 或更舊版本的常駐程式會為容器保留最低 4 MiB 的記憶體。因此,不要為容器指定少於 4 MiB 的記憶體。
注意
若您嘗試盡可能為特定執行個體類型的任務提供最多的記憶體,以將資源使用率最大化,請參閱「保留 Amazon ECS Linux 容器執行個體記憶體」。
連接埠映射
portMappings
-
類型:物件陣列
必要:否
連接埠映射會將容器的網路連接埠公開到外部世界。這可讓用戶端存取您的應用程式。它也用於相同任務中的容器間通訊。
對於使用
awsvpc
網路模式的任務定義 (Fargate 和EC2啟動類型),請僅指定containerPort
。hostPort
一律會忽略 ,容器連接埠會自動對應至主機上的隨機高編號連接埠。Windows 上的連接埠映射會使用
NetNAT
閘道地址,而非localhost
。Windows 沒有連接埠映射回送,所以您無法從主機本身存取容器的映射連接埠。此參數的大多數欄位 (包括
containerPort
、hostPort
、protocol
) 都會映射至 docker create-container 命令PortBindings
中的 ,以及 Docker 執行--publish
的選項。若任務定義的網路模式設定為host
,則主機連接埠必須為未定義,或符合連接埠映射中的容器連接埠。注意
任務達到
RUNNING
狀態後,手動和自動主機及容器連接埠指派會顯示在下列位置:-
主控台:選取任務的容器說明的 Network Bindings (網路繫結) 區段。
-
AWS CLI:describe-tasks 命令輸出的
networkBindings
區段。 -
API:
DescribeTasks
回應。 -
中繼資料:任務中繼資料端點。
appProtocol
-
類型:字串
必要:否
用於連接埠映射的應用程式通訊協定。此參數僅適用於 Service Connect。我們建議您按照應用程式使用的協定一致地設定此參數。如果您設定此參數,Amazon 會將通訊協定特定的連線處理ECS新增至服務連線代理。如果您設定此參數,Amazon 會在 Amazon ECS主控台和 中ECS新增通訊協定特定的遙測 CloudWatch。
如果您未設定此參數的值,TCP則會使用 。不過,Amazon ECS不會為 新增通訊協定特定的遙測TCP。
如需詳細資訊,請參閱使用 Service Connect 以短名稱連接 Amazon ECS服務。
有效的通訊協定值:
"HTTP" | "HTTP2" | "GRPC"
containerPort
-
類型:整數
必要:是 (當使用
portMappings
時)容器上的連接埠號碼,該號碼繫結到使用者指定或自動指派的主機連接埠。
對於使用 Fargate 啟動類型的任務或使用
awsvpc
網路模式EC2的任務,您可以使用containerPort
來指定公開的連接埠。對於 Fargate 上的 Windows 容器,您不得將連接埠 3150 用於
containerPort
。這是因為其已保留。假設您在具有EC2啟動類型的任務中使用容器,並指定容器連接埠,而不是主機連接埠。然後,您的容器會自動在暫時性連接埠範圍中接收到主機連接埠。如需詳細資訊,請參閱
hostPort
。使用此方式自動指派的連接埠映射不包含在容器執行個體 100 個保留連接埠的配限制中。 containerPortRange
-
類型:字串
必要:否
綁定到動態映射主機連接埠範圍之容器上的連接埠號碼範圍。
您只能使用
register-task-definition
設定此參數API。此選項可在portMappings
參數中使用。如需詳細資訊,請參閱 參考 register-task-definition 中的 。 AWS Command Line Interface指定
containerPortRange
時,以下規則適用:-
您必須使用
bridge
網路模式或awsvpc
網路模式。 -
此參數適用於 EC2和 AWS Fargate 啟動類型。
-
此參數適用於 Linux 和 Windows 作業系統。
-
容器執行個體必須至少具有 1.67.0 版的容器代理程式以及至少 1.67.0-1 版的
ecs-init
套件。 -
每個容器最多可以指定 100 個連接埠範圍。
-
您不會指定
hostPortRange
。hostPortRange
的值設定如下:-
對於具有
awsvpc
網路模式的任務中的容器,hostPort
會設定為與containerPort
相同的值。這是靜態映射策略。 -
對於具有
bridge
網路模式的任務中的容器,Amazon ECS代理程式會從預設暫時範圍尋找開放的主機連接埠,並將其傳遞至 Docker,以將其繫結至容器連接埠。
-
-
containerPortRange
有效值介於 1 到 65535。 -
一個連接埠只能包含在每個容器的一個連接埠映射中。
-
您無法指定重疊的連接埠範圍。
-
範圍中的第一個連接埠必須小於範圍中的最後一個連接埠。
-
Docker 建議您關閉 中的 docker-proxy Docker 當您有大量連接埠時, 常駐程式組態檔案。
如需詳細資訊,請參閱 上的問題 #11185
GitHub。 如需有關如何在 中關閉 docker-proxy 的資訊 Docker 常駐程式組態檔案,請參閱 DockerAmazon ECS開發人員指南 中的常駐程式。
您可以呼叫
DescribeTasks
來檢視hostPortRange
,此即綁定到容器連接埠的主機連接埠。連接埠範圍不包含在傳送至 的 Amazon ECS任務事件中 EventBridge。如需詳細資訊,請參閱使用 自動回應 Amazon ECS錯誤 EventBridge。
-
hostPortRange
-
類型:字串
必要:否
與網路繫結搭配使用之主機上的連接埠號碼範圍。這是由 指派的 Docker 並由 Amazon ECS代理程式交付。
hostPort
-
類型:整數
必要:否
要為您的容器保留之容器執行個體上的連接埠號碼。
如果在使用 Fargate 啟動類型的任務中使用容器,
hostPort
可維持空白,或其值與containerPort
相同。假設您在具有EC2啟動類型的任務中使用容器。您可以為容器連接埠對應指定非保留的主機連接埠。這稱為靜態主機連接埠對應。或者,您可以在指定
containerPort
時省略hostPort
(或將其設定為0
)。您的容器會自動接收容器執行個體作業系統暫時連接埠範圍內的連接埠,以及 Docker 版本。這稱為動態主機連接埠對應。預設暫時連接埠範圍 Docker 1.6.0 版及更新版本會列在 下的執行個體上。
/proc/sys/net/ipv4/ip_local_port_range
如果此核心參數不可用,會使用預設的49153–65535
暫時性連接埠範圍。請勿嘗試在暫時性連接埠範圍中指定主機連接埠。這是因為其已保留以便自動指派。一般而言,低於32768
的連接埠便會位於暫時性連接埠範圍之外。預設預留連接埠
22
適用於 SSH,Docker 連接埠2375
和2376
,以及 Amazon ECS容器代理程式連接埠51678-51680
。任何使用者先前為執行中任務指定的主機連接埠也會在執行任務時保留。在任務停止後,便會釋放主機連接埠。目前預留的連接埠會顯示在 describe-container-instances 輸出的remainingResources
中。容器執行個體一次最多可預留 100 個連接埠,包括預設的預留連接埠。自動指派的連接埠不計入 100 個預留連接埠的限制。 name
-
類型:字串
必要:否,需要在服務中設定 Service Connect
用於連接埠映射的名稱。此參數僅適用於 Service Connect。此參數是您在服務的 Service Connect 組態中使用的名稱。
如需詳細資訊,請參閱使用 Service Connect 以短名稱連接 Amazon ECS服務。
下列範例中使用了 Service Connect 的兩個必要欄位。
"portMappings": [ { "name":
string
, "containerPort":integer
} ] protocol
-
類型:字串
必要:否
用於連接埠映射的協定。有效值為
tcp
和udp
。預設值為tcp
。重要
Service Connect 僅支援
tcp
。請記住,如果未設定此欄位,則會隱含tcp
。重要
UDP 支援僅適用於使用 Amazon 容器代理程式 1.2.0 版 (例如
amzn-ami-2015.03.c-amazon-ecs-optimized
AMI) 或更新版本啟動的ECS容器執行個體,或更新至 1.3.0 版或更新版本的容器代理程式。若要將您的容器代理更新到最新版本,請參閱「更新 Amazon ECS容器代理程式」。
若您指定主機連接埠,請使用以下語法。
"portMappings": [ { "containerPort": integer, "hostPort": integer } ... ]
若您希望取得自動指派的主機連接埠,請使用以下語法。
"portMappings": [ { "containerPort": integer } ... ]
-
私有儲存庫憑證
repositoryCredentials
-
類型:RepositoryCredentials 物件
必要:否
私有登錄檔身分驗證的儲存庫登入資料。
如需詳細資訊,請參閱在 Amazon 中使用非AWS 容器映像 ECS。
-
credentialsParameter
-
類型:字串
必要:是 (當使用
repositoryCredentials
時)包含私有儲存庫憑證之秘密的 Amazon Resource Name (ARN)。
如需詳細資訊,請參閱在 Amazon 中使用非AWS 容器映像 ECS。
注意
當您使用 Amazon ECS API AWS CLI、 或 時 AWS SDKs,如果機密與您啟動的任務位於相同的區域中,則您可以使用機密的完整ARN名稱或名稱。使用 時 AWS Management Console,您必須指定ARN完整的秘密。
以下是任務定義的程式碼片段,其會顯示所需的參數:
"containerDefinitions": [ { "image": "
private-repo/private-image
", "repositoryCredentials": { "credentialsParameter": "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name
" } } ]
-
進階容器定義參數
下列進階容器定義參數為 Amazon ECS容器執行個體上用來啟動容器的 docker 執行命令提供擴充功能。
重新啟動政策
restartPolicy
-
容器重新啟動政策和相關聯的組態參數。當您為容器設定重新啟動政策時,Amazon ECS可以重新啟動容器,而不需要取代任務。如需詳細資訊,請參閱使用容器重新啟動政策重新啟動 Amazon ECS任務中的個別容器。
enabled
-
類型:布林值
必要:是
指定是否為容器啟用重新啟動政策。
ignoredExitCodes
-
類型:Integer array
必要:否
Amazon ECS會忽略且不嘗試重新啟動的結束碼清單。您最多可以指定 50 個容器結束碼。根據預設,Amazon ECS不會忽略任何結束碼。
restartAttemptPeriod
-
類型:整數
必要:否
容器必須執行一段時間 (以秒為單位),才能嘗試重新啟動。容器每
restartAttemptPeriod
秒鐘只能重新啟動一次。如果容器無法在此期間執行並提早結束,則不會重新啟動。您可以設定最短restartAttemptPeriod
60 秒,最長restartAttemptPeriod
1800 秒。根據預設,容器必須執行 300 秒,才能重新啟動。
運作狀態檢查
healthCheck
-
用於容器的容器運作狀態檢查命令和相關的設定參數。如需詳細資訊,請參閱使用容器運作狀態檢查來判斷 Amazon ECS任務運作狀態。
command
-
表示容器執行的命令的字串陣列,用於確定運作狀態是否良好。此字串陣列的開頭可以是
CMD
,如此能直接執行命令引數;或是CMD-SHELL
,藉以使用容器預設的 shell 來執行命令。如果均尚未指定,則使用CMD
。在 中註冊任務定義時 AWS Management Console,請使用逗號分隔的命令清單。這些命令會在建立任務定義後轉換為字串。以下為運作狀態檢查的範例輸入。
CMD-SHELL, curl -f http://localhost/ || exit 1
使用 AWS Management Console JSON面板、 AWS CLI或 註冊任務定義時APIs,請將命令清單括在括號中。以下為運作狀態檢查的範例輸入。
[ "CMD-SHELL", "curl -f http://localhost/ || exit 1" ]
結束代碼 0 (沒有
stderr
輸出) 表示成功,而任何非零的結束代碼則表示失敗。 interval
-
每個運作狀態檢查的時間間隔 (以秒為單位)。您可以指定 5 至 300 秒之間的值。預設 值為 30 秒。
timeout
-
判定為失敗之前,等待運作狀態檢查成功執行的時間 (以秒為單位)。您可以指定 2 至 60 秒之間的值。預設值為 5 秒。
retries
-
容器運作狀態判定為不良之前,重試失敗的運作狀態檢查的次數上限。您可以指定 1 至 10 次嘗試。預設值為重試三次。
startPeriod
-
選用的寬限期,讓容器有時間引導,不將失敗的運作狀態檢查計入重試次數上限。您可以指定 0 至 300 秒之間的值。預設情況下,
startPeriod
是停用的。
環境
cpu
-
類型:整數
必要:否
Amazon ECS容器代理程式為容器保留的
cpu
單位數量。在 Linux 上,此參數會在建立容器區段 CpuShares
中映射至 。針對使用 Fargate 啟動類型的任務,此欄位為選用。為任務內所有容器CPU預留的總量必須低於任務層級
cpu
值。注意
您可以判斷每個 Amazon EC2執行個體類型可用的CPU單位數量。若要這麼做,請將 Amazon EC2 Instances
詳細資訊頁面上該執行個體類型vCPUs列出的 數目乘以 1,024。 Linux 容器與容器執行個體上的其他容器共用未配置的CPU單位,其比率與其配置的數量相同。例如,假設您在單一核心執行個體類型上執行單一容器任務,並為該容器指定 512 個CPU單位。此外,該任務是在容器執行個體上運行的唯一任務。在此範例中,容器可以隨時使用完整的 1,024 CPU單位共用。但是,假設您在該容器執行個體上啟動相同任務的另一個複本。需要時,保證每個任務至少 512 個CPU單位。同樣地,如果其他容器未使用剩餘的 CPU,則每個容器都可以浮動至更高的CPU用量。不過,如果這兩個任務一直都是 100% 作用中,則限制為 512 個CPU單位。
開啟 Linux 容器執行個體,Docker 容器執行個體上的常駐程式會使用 CPU值來計算執行容器的相對CPU共用比率。Linux 核心允許的最小有效CPU共用值為 2,Linux 核心允許的最大有效CPU共用值為 262144。不過, 參數CPU並非必要,您可以在容器定義中使用低於 2 和高於 262144 CPU的值。對於低於兩個 (包括 null) 和高於 262144 CPU的值,該行為會根據您的 Amazon ECS容器代理程式版本而有所不同:
-
客服人員版本 <= 1.1.0:空值和零CPU值會傳遞至 Docker 為 0。Docker 然後將此值轉換為 1,024 個CPU共用。CPU 一個 的值會傳遞至 Docker 作為一個,其中 Linux 核心會轉換為兩個CPU共用。
-
客服人員版本 >= 1.2.0:空值、零CPU值和值會傳遞至 Docker 作為兩個CPU共用。
-
代理程式版本 >= 1.84.0:大於 256 vCPU CPU的值會傳遞給 Docker 256,相當於 262144 CPU股。
開啟 Windows 容器執行個體,CPU配額會強制執行為絕對配額。Windows 容器只能存取任務定義中CPU定義的指定數量 。null 或零CPU值會傳遞至 Docker 作為
0
。Windows 然後將此值解譯為一個 的 1%CPU。如需更多範例,請參閱 Amazon 如何ECS管理和CPU記憶體資源。
-
gpu
-
類型:ResourceRequirement 物件
必要:否
Amazon ECS容器代理程式保留給容器
GPUs
的實體數量。為任務中所有容器GPUs預留的 數目不得超過任務啟動時容器執行個體GPUs上可用的 數目。如需詳細資訊,請參閱GPU 工作負載的 Amazon ECS任務定義。注意
此參數不支援 Windows 容器或託管在 Fargate 上的容器。
Elastic Inference accelerator
-
類型:ResourceRequirement 物件
必要:否
對於
InferenceAccelerator
類型,value
符合任務定義中指定之InferenceAccelerator
的deviceName
。如需詳細資訊,請參閱Elastic Inference 加速器名稱。注意
自 2023 年 4 月 15 日起, AWS 將不會讓新客戶加入 Amazon Elastic Inference (EI), 並協助現有客戶將其工作負載遷移至提供更好價格和效能的選項。2023 年 4 月 15 日後,新客戶將無法在 Amazon SageMaker、Amazon ECS或 Amazon 中使用 Amazon EI 加速器啟動執行個體EC2。但是,在過去 30 天內至少使用過一次 Amazon EI 的客戶將被視為目前客戶,並且可以繼續使用該服務。
注意
此參數不支援 Windows 容器或託管在 Fargate 上的容器。
essential
-
類型:布林值
必要:否
假設容器的
essential
參數標記為true
,並且該容器因為任何理由失敗或停止。然後,會停止屬於該任務一部分的所有其他容器。若容器的essential
參數標記為false
,則其失敗將不會影響任務中其餘的容器。若省略此參數,則容器會假設為「基本」。所有任務都必須至少有一個基本容器。假設您有一個由多個容器組成的應用程式。然後,將用於一般用途的容器分組為元件,並把不同的元件分到多個任務定義。如需詳細資訊,請參閱為 Amazon 建構您的應用程式 ECS。
"essential": true|false
entryPoint
-
重要
Amazon ECS容器代理程式的早期版本無法正確處理
entryPoint
參數。若您在使用entryPoint
時發生任何問題,請更新您的容器代理,或改將您的命令和引數作為command
陣列項目輸入。類型:字串陣列
必要:否
傳遞至容器的進入點。
"entryPoint": ["string", ...]
command
-
類型:字串陣列
必要:否
傳遞至容器的命令。此參數會在 create-container 命令
Cmd
中映射至 ,並將要執行的COMMAND
參數映射至 。如果有多個引數,確保每個引數在陣列中是分開的字串。"command": ["string", ...]
workingDirectory
-
類型:字串
必要:否
容器內要執行命令的工作目錄。此參數會在 Docker Remote 的建立容器
區段 WorkingDir
中映射至 ,並將--workdir
選項映射至 docker run。 API "workingDirectory": "string"
environmentFiles
-
類型:物件陣列
必要:否
內含要傳遞至容器之環境變數的檔案清單。此參數會映射至
--env-file
選項至 docker 執行命令。使用EC2啟動類型在主機上FIPS啟用 時,不支援具有句點 (.) 的儲存貯體名稱 (例如 amzn-s3-demo-bucket1.name.example)。儲存貯體名稱中有句點 (.) 會阻止任務啟動,因為代理程式無法從 Amazon S3 提取環境變數檔案。
這不適用於 Windows Fargate 上的容器和 Windows 容器
您最多可以指定 10 個環境檔案。檔案副檔名必須是
.env
。環境檔案中的每一行都包含VARIABLE=VALUE
格式的環境變數。以#
開頭的行會被視為註解,而忽略。如果在容器定義中指定了個別環境變數,它們的優先順序高於環境檔案中包含的變數。如果指定了內含相同變數的多個環境檔案,則處理順序為由上而下。建議您使用唯一的變數名稱。如需詳細資訊,請參閱將個別環境變數傳遞至 Amazon ECS容器。
value
-
類型:字串
必要:是
Amazon S3 物件的 Amazon Resource Name (ARN),其中包含環境變數檔案。
type
-
類型:字串
必要:是
要使用的檔案類型。唯一支援的值為
s3
。
environment
-
類型:物件陣列
必要:否
傳遞至容器的環境變數。此參數會在 docker create-container 命令
Env
中映射至 ,並將--env
選項映射至 docker 執行命令。重要
不建議在敏感資訊 (例如登入資料) 使用純文字環境變數。
name
-
類型:字串
必要:是 (當使用
environment
時)環境變數的名稱。
value
-
類型:字串
必要:是 (當使用
environment
時)環境變數的值。
"environment" : [ { "name" : "string", "value" : "string" }, { "name" : "string", "value" : "string" } ]
secrets
-
類型:物件陣列
必要:否
代表公開到容器之秘密的物件。如需詳細資訊,請參閱將敏感資料傳遞至 Amazon ECS容器。
name
-
類型:字串
必要:是
要設定為容器上環境變數的值。
valueFrom
-
類型:字串
必要:是
公開給容器的秘密。支援的值為 AWS Secrets Manager 秘密的完整 Amazon Resource Name (ARN),或 AWS Systems Manager 參數存放區中參數ARN的完整名稱。
注意
如果 Systems Manager 參數存放區參數或 Secrets Manager 參數與您啟動 AWS 區域 的任務位於相同的 中,您可以使用秘密的完整ARN或名稱。如果 參數存在於不同的區域中,則必須ARN指定完整。
"secrets": [ { "name": "environment_variable_name", "valueFrom": "arn:aws:ssm:
region
:aws_account_id
:parameter/parameter_name
" } ]
Network settings (網路設定)
disableNetworking
-
類型:布林值
必要:否
當此參數為 true 時,聯網便會在容器中關閉。
注意
此參數不支援 Windows 容器或使用
awsvpc
網路模式的任務。預設值為
false
。"disableNetworking": true|false
links
-
類型:字串陣列
必要:否
link
參數可讓容器彼此通訊,而無需連接埠映射。只有在任務定義的網路模式設定為bridge
時才支援此參數。建構類似於name:internalName
name:alias
中的 Docker 連結。最多允許 255 個字母 (大寫和小寫)、數字、連字號和底線。注意
此參數不支援 Windows 容器或使用
awsvpc
網路模式的任務。重要
在相同容器執行個體上配置的容器可和彼此通訊,而無需連結或主機連接埠映射。容器執行個體上的網路隔離由安全群組和VPC設定控制。
"links": ["name:internalName", ...]
hostname
-
類型:字串
必要:否
您容器要使用的主機名稱。此參數會映射至 Docker 建立容器
Hostname
中的 ,以及 Docker 執行--hostname
的選項。注意
如果您使用
awsvpc
網路模式,則不支援hostname
參數。"hostname": "string"
dnsServers
-
類型:字串陣列
必要:否
呈現至容器的DNS伺服器清單。
注意
此參數不支援 Windows 容器或使用
awsvpc
網路模式的任務。"dnsServers": ["string", ...]
dnsSearchDomains
-
類型:字串陣列
必要:否
模式:^[a-zA-Z0-9-.]{0,253}[a-zA-Z0-9]$
向容器顯示的DNS搜尋網域清單。此參數會在 docker create-container 命令
DnsSearch
中映射到 ,以--dns-search
選擇執行 docker。注意
Windows 容器或使用
awsvpc
網路模式的任務不支援此參數。"dnsSearchDomains": ["string", ...]
extraHosts
-
類型:物件陣列
必要:否
要附加到容器上
/etc/hosts
檔案的主機名稱和 IP 地址映射清單。此參數會在 docker create-container 命令
ExtraHosts
中映射至 ,並映射至 docker 執行--add-host
的選項。注意
Windows 容器或使用
awsvpc
網路模式的任務不支援此參數。"extraHosts": [ { "hostname": "string", "ipAddress": "string" } ... ]
hostname
-
類型:字串
必要:是 (當使用
extraHosts
時)要在
/etc/hosts
項目中使用的主機名稱。 ipAddress
-
類型:字串
必要:是 (當使用
extraHosts
時)要在
/etc/hosts
項目中使用的 IP 地址。
儲存與記錄
readonlyRootFilesystem
-
類型:布林值
必要:否
此參數為 true 時,容器會取得根檔案系統的唯讀存取權。此參數會在 docker create-container 命令
ReadonlyRootfs
中映射到 ,以--read-only
選擇執行 docker。注意
Windows 容器不支援此參數。
預設值為
false
。"readonlyRootFilesystem": true|false
mountPoints
-
類型:物件陣列
必要:否
容器中資料磁碟區的掛載點。此參數會映射至 creat-container Docker
Volumes
中的 ,API以及 Docker 執行--volume
的選項。Windows 容器可在
$env:ProgramData
所在的相同磁碟上掛載整個目錄。Windows 容器無法將目錄掛載到不同的磁碟機上,且掛載點也無法跨磁碟機使用。您必須指定掛載點,才能將 Amazon EBS磁碟區直接連接至 Amazon ECS任務。sourceVolume
-
類型:字串
必要:是 (當使用
mountPoints
時)要掛載的磁碟區名稱。
containerPath
-
類型:字串
必要:是 (當使用
mountPoints
時)要掛載磁碟區的容器中的路徑。
readOnly
-
類型:布林值
必要:否
如果此數值為
true
,容器擁有磁碟區的唯讀存取權。如果此值為false
,則容器可寫入磁碟區。預設值為false
。
volumesFrom
-
類型:物件陣列
必要:否
要從其他容器掛載的資料磁碟區。此參數會在 docker create-container 命令
VolumesFrom
中映射至 ,以及用於執行 docker--volumes-from
的選項。sourceContainer
-
類型:字串
必要:是 (當使用
volumesFrom
時)要從其中掛載磁碟區的容器名稱。
readOnly
-
類型:布林值
必要:否
如果此數值為
true
,容器擁有磁碟區的唯讀存取權。如果此值為false
,則容器可寫入磁碟區。預設值為false
。
"volumesFrom": [ { "sourceContainer": "string", "readOnly": true|false } ]
logConfiguration
-
類型:LogConfiguration物件
必要:否
容器的日誌組態規格。
例如,使用日誌組態的任務定義,請參閱Amazon ECS任務定義範例。
此參數會在 docker create-container 命令
LogConfig
中映射至 ,並映射至 docker 執行--log-driver
的選項。根據預設,容器使用與 相同的記錄驅動程式 Docker 常駐程式使用。不過,容器可能會使用與 不同的記錄驅動程式 Docker 常駐程式,方法是在容器定義中指定具有此參數的日誌驅動程式。若要讓容器使用不同的日誌驅動程式,必須在容器執行個體上適當設定日誌系統 (或在不同的日誌伺服器上使用遠端記錄選項)。指定容器的日誌組態時,請考量下列事項:
-
Amazon ECS支援可供 使用的記錄驅動程式子集 Docker 常駐程式。未來版本的 Amazon ECS容器代理程式可能會提供其他日誌驅動程式。
-
此參數需要 1.18 版或更新版本的 Docker 容器執行個體API上的遠端 。
-
對於使用EC2啟動類型的任務,在容器執行個體上執行的 Amazon ECS容器代理程式必須將該執行個體上可用的記錄驅動程式註冊為
ECS_AVAILABLE_LOGGING_DRIVERS
環境變數,然後該執行個體上的容器才能使用這些日誌組態選項。如需詳細資訊,請參閱Amazon ECS容器代理程式組態。 -
對於使用 Fargate 啟動類型的任務,您必須在任務之外安裝任何其他軟體。例如,Fluentd 輸出彙總器或執行 Logstash 的遠端主機進行傳送 Gelf 日誌。
"logConfiguration": { "logDriver": "awslogs","fluentd","gelf","json-file","journald","logentries","splunk","syslog","awsfirelens", "options": {"
string
": "string
" ...}, "secretOptions": [{ "name": "string
", "valueFrom": "string
" }] }logDriver
-
類型:字串
有效值:
"awslogs","fluentd","gelf","json-file","journald","logentries","splunk","syslog","awsfirelens"
必要:是 (當使用
logConfiguration
時)容器要使用的日誌驅動程式。根據預設,先前列出的有效值是 Amazon ECS容器代理程式可以與之通訊的日誌驅動程式。
針對使用 Fargate 啟動類型的任務,支援的日誌驅動程式為
awslogs
、splunk
和awsfirelens
。對於使用EC2啟動類型的任務,支援的日誌驅動程式為
awslogs
、fluentd
、gelf
、json-file
、journald
、logentries
syslog
、splunk
和awsfirelens
。如需如何在任務定義中使用
awslogs
日誌驅動程式將容器日誌傳送至 CloudWatch 日誌的詳細資訊,請參閱 將 Amazon ECS日誌傳送至 CloudWatch 。如需使用
awsfirelens
日誌驅動程式的詳細資訊,請參閱自訂日誌路由。注意
如果您有未列出的自訂驅動程式,您可以放棄可在 上使用 GitHub
的 Amazon ECS容器代理程式專案,並將其自訂為可與該驅動程式搭配使用。我們鼓勵您為想要進行的變更提交提取請求。但是,我們目前不支援執行此軟體經修改的複本。 此參數需要容器執行個體上 Docker Remote API或更新版本的 1.18 版。
options
-
類型:字串到字串映射
必要:否
要傳送到日誌驅動程式的索引鍵/值映射組態選項。
您可以指定的選項取決於日誌驅動程式。當您使用
awslogs
路由器將日誌路由至 Amazon 時,您可以指定的一些選項 CloudWatch 包括:awslogs-create-group
-
必要:否
指定您是否希望自動建立日誌群組。若未指定此選項,則預設為
false
。注意
在您嘗試使用 之前,您的IAM政策必須包含
logs:CreateLogGroup
許可awslogs-create-group
。 awslogs-region
-
必要:是
指定 AWS 區域
awslogs
日誌驅動程式要傳送 Docker 日誌的 。您可以選擇將所有日誌從不同區域中的叢集傳送至 CloudWatch 日誌中的單一區域。如此一來,日誌全都顯示在單一位置中。或者,您可以依照區域分隔日誌,以獲得更高的精細程度。請確定指定的日誌群組存在於您使用此選項指定的區域。 awslogs-group
-
必要:是
請務必指定
awslogs
日誌驅動程式傳送其日誌串流的日誌群組。 awslogs-stream-prefix
-
必要:EC2啟動類型為選用,Fargate 啟動類型為必要。
使用
awslogs-stream-prefix
選項將日誌串流與指定的字首、容器名稱和容器所屬 Amazon ECS任務的 ID 建立關聯。如果您使用此選項指定前綴,則日誌串流會使用下列格式。prefix-name
/container-name
/ecs-task-id
如果您未使用此選項指定字首,則該日誌串流會以容器執行個體上 Docker 常駐程式指派的容器 ID 命名。因為只使用 Docker 容器 ID (僅容器執行個體提供) 很難對日誌回溯追蹤到傳送該日誌的容器,所以建議您使用此選項指定前綴。
對於 Amazon ECS服務,您可以使用服務名稱作為字首。藉此這可讓您對日誌串流回溯追蹤到容器所屬的服務、傳送該日誌之容器的名稱,以及容器所屬任務的 ID。
您必須為日誌指定串流字首,以便在使用 Amazon ECS主控台時,日誌顯示在日誌窗格中。
awslogs-datetime-format
-
必要:否
此選項會以 Python
strftime
格式定義多行開始模式。日誌訊息由符合模式的一行以及不符合模式的任何後續行所組成。符合的行是日誌訊息之間的分隔符號。使用此格式的一個使用案例範例是用於剖析輸出,例如堆疊傾印,在其他情形下這可能會記錄在多個項目中。正確的模式可允許將它擷取在單一項目中。
如需詳細資訊,請參閱 awslogs-datetime-format
。 無法同時設定
awslogs-datetime-format
和awslogs-multiline-pattern
選項。注意
多行記錄會執行常規運算式剖析並比對所有日誌訊息。這可能會對記錄效能造成負面影響。
awslogs-multiline-pattern
-
必要:否
此選項定義使用常規運算式的多行開始模式。日誌訊息由符合模式的一行以及不符合模式的任何後續行所組成。符合的行是日誌訊息之間的分隔符號。
如需詳細資訊,請參閱 awslogs-multiline-pattern
。 如果同時設定
awslogs-datetime-format
,會忽略此選項。無法同時設定
awslogs-datetime-format
和awslogs-multiline-pattern
選項。注意
多行記錄會執行常規運算式剖析並比對所有日誌訊息。這可能會對記錄效能造成負面影響。
mode
-
必要:否
有效值:
non-blocking
|blocking
此選項定義從容器到日誌的 CloudWatch 日誌訊息傳遞模式。當從容器到 的日誌流程 CloudWatch 中斷時,您選擇的交付模式會影響應用程式的可用性。
如果您使用
blocking
模式,且日誌的流量 CloudWatch 中斷,則會封鎖從容器程式碼寫入stdout
和stderr
串流的呼叫。應用程式的日誌記錄執行緒將因此封鎖。這可能會導致應用程式沒有回應,並導致容器運作狀態檢查失敗。如果您使用
non-blocking
模式,則容器的日誌將儲存在使用max-buffer-size
選項設定的記憶體內中間緩衝區中。這可防止應用程式在日誌無法傳送至 時變得無回應 CloudWatch。如果您想要確保服務的可用性且可以接受一些日誌遺失,我們建議您使用此模式。如需詳細資訊,請參閱awslogs
容器日誌驅動程式 中的使用非封鎖模式防止日誌遺失。 max-buffer-size
-
必要:否
預設值:
1m
使用
non-blocking
模式時,max-buffer-size
日誌選項會控制用於中繼訊息儲存的緩衝區大小。請務必根據您的應用程式指定適當的緩衝區大小。當緩衝區填滿時,無法儲存進一步的日誌。無法儲存的日誌將會遺失。
若要使用日誌路由器路由
splunk
日誌,您需要指定splunk-token
和splunk-url
。當您使用
awsfirelens
日誌路由器將日誌路由到 AWS 服務 或 AWS Partner Network 目的地進行日誌儲存和分析時,您可以設定log-driver-buffer-limit
選項,以限制在記憶體中緩衝的事件數量,然後再傳送至日誌路由器容器。它有助於解決潛在的日誌遺失問題,因為高輸送量可能會導致 緩衝區的記憶體耗盡 Docker。 如需詳細資訊,請參閱 設定高輸送量的 Amazon ECS日誌。使用
awsfirelens
路由日誌時,您可以指定的其他選項取決於目的地。當您將日誌匯出至 Amazon Data Firehose 時,您可以使用 指定 AWS 區域region
,並使用 指定日誌串流的名稱delivery_stream
。當您將日誌匯出至 Amazon Kinesis Data Streams 時,您可以使用 指定 AWS 區域
region
和 資料串流名稱stream
。當您將日誌匯出至 Amazon OpenSearch Service 時,您可以指定選項,例如
Name
、Host
(不含通訊協定OpenSearch 的服務端點)Port
、、Index
、Type
、Aws_auth
Aws_region
、、Suppress_Type_Name
和tls
。當您將日誌匯出至 Amazon S3 時,您可以使用
bucket
選項指定儲存貯體。您也可以指定region
、upload_timeout
、total_file_size
和use_put_object
作為選項。此參數需要容器執行個體上 Docker Remote API或更新版本的 1.19 版。
secretOptions
-
類型:物件陣列
必要:否
此物件代表要傳送至日誌組態的秘密。日誌組態中使用的秘密可能包括身分驗證權杖、憑證或加密金鑰。如需詳細資訊,請參閱將敏感資料傳遞至 Amazon ECS容器。
name
-
類型:字串
必要:是
要設定為容器上環境變數的值。
valueFrom
-
類型:字串
必要:是
公開到容器日誌組態的秘密。
"logConfiguration": { "logDriver": "splunk", "options": { "splunk-url": "https://cloud.splunk.com:8080", "splunk-token": "...", "tag": "...", ... }, "secretOptions": [{ "name": "
splunk-token
", "valueFrom": "/ecs/logconfig/splunkcred
" }] }
-
firelensConfiguration
-
必要:否
容器的 FireLens 組態。這是用來指定及設定容器日誌的日誌路由器。如需詳細資訊,請參閱將 Amazon ECS日誌傳送至 AWS 服務或 AWS Partner。
{ "firelensConfiguration": { "type": "fluentd", "options": { "KeyName": "" } } }
options
-
類型:字串到字串映射
必要:否
設定日誌路由器時要使用的索引鍵/值映射選項。此欄位是選用欄位,可用於指定自訂組態檔案,或者將額外的中繼資料 (例如任務、任務定義、叢集和容器執行個體詳細資訊) 新增到日誌事件。如果已指定,則要使用的語法為
"options":{"enable-ecs-log-metadata":"true|false","config-file-type:"s3|file","config-file-value":"arn:aws:s3:::
。如需詳細資訊,請參閱Amazon ECS任務定義範例:將日誌路由至 FireLens。amzn-s3-demo-bucket
/fluent.conf|filepath"} type
-
類型:字串
必要:是
要使用的日誌路由器。有效值為
fluentd
或fluentbit
。
安全
如需容器安全的詳細資訊,請參閱 Amazon ECS 最佳實務指南 中的任務和容器安全。
credentialSpecs
-
類型:字串陣列
必要:否
憑證規格 (
CredSpec
) 檔案ARNs的 SSM或 Amazon S3 清單,可設定容器進行 Active Directory 身分驗證。建議您使用此參數而不是dockerSecurityOptions
. 的最大數量ARNs為 1。每個 有兩種格式ARN。
- credentialspecdomainless:我的ARN
-
您使用
credentialspecdomainless:MyARN
為 Secrets Manager 中的秘密提供具其他區段的CredSpec
。您在秘密中提供網域的登入憑證。在任何容器執行個體上執行的每項任務都可加入不同的網域。
您可以使用此格式而無需將容器執行個體加入網域。
- credentialspec:MyARN
-
您使用
credentialspec:MyARN
為單一網域提供CredSpec
。您必須先將容器執行個體加入網域,才能啟動此任務定義的任何任務。
在這兩種格式中,
MyARN
使用 ARN SSM或 Amazon S3 中的 取代 。credspec
必須在 Secrets Manager ARN中提供 的秘密,其中包含使用者名稱、密碼和要連線的網域。為了提高安全性,執行個體不會加入網域以進行無網域驗證。執行個體上的其他應用程式無法使用無網域憑證。您可以使用此參數在相同的執行個體上執行任務,即使是任務需要加入不同的網域。如需詳細資訊,請參閱使用 gMSAs for Windows Containers 和使用 gMSAs for Linux Containers 。 privileged
-
類型:布林值
必要:否
此參數為 true 時,容器便會取得主機容器執行個體的更高權限 (類似
root
使用者)。建議不要使用privileged
執行容器。在大多數情況下,可以使用特定參數,而不是使用privileged
來指定所需的確切權限。此參數會在 docker create-container 命令
Privileged
中映射至 ,並映射至 docker 執行--privileged
的選項。注意
Windows 容器或使用 Fargate 啟動類型的任務不支援此參數。
預設值為
false
。"privileged": true|false
user
-
類型:字串
必要:否
要在容器內使用的使用者。此參數在 docker create-container 命令
User
中映射到 ,並映射到 docker 執行--user
的選項。重要
執行使用
host
網路模式的任務時,請勿使用根使用者 (UID 0) 執行容器。作為最佳安全實務,請一律使用非根使用者。您可以使用下列格式指定
user
。如果指定 UID或 GID,您必須將其指定為正整數。-
user
-
user:group
-
uid
-
uid:gid
-
user:gid
-
uid:group
注意
Windows 容器不支援此參數。
"user": "string"
-
dockerSecurityOptions
-
類型:字串陣列
有效值:"no-new-privileges" | "apparmor:PROFILE" | "label:
value
" | "credentialspec:CredentialSpecFilePath
"必要:否
提供多個安全系統自訂組態的字串清單。此欄位對使用 Fargate 啟動類型之任務中的容器無效。
用於 Linux 上的任務EC2,此參數可用於參考 的自訂標籤 SELinux 以及 AppArmor 多層安全系統。
對於 上的任何任務EC2,此參數可用於參考憑證規格檔案,以設定容器進行 Active Directory 身分驗證。如需詳細資訊,請參閱 了解如何使用 gMSAs Amazon 的 EC2 Windows 容器 ECS 和 使用 gMSA 適用於 EC2 Linux Amazon 上的容器 ECS。
此參數會在 docker create-container 命令
SecurityOpt
中映射至 ,並映射至 docker 執行--security-opt
的選項。"dockerSecurityOptions": ["string", ...]
注意
在ECS容器執行個體上執行的 Amazon 容器代理程式必須先向
ECS_SELINUX_CAPABLE=true
或ECS_APPARMOR_CAPABLE=true
環境變數註冊,才能在該執行個體上放置的容器使用這些安全選項。如需詳細資訊,請參閱Amazon ECS容器代理程式組態。
資源限制
ulimits
-
類型:物件陣列
必要:否
要為容器定義的
ulimit
值清單。此值覆寫作業系統的預設資源配額設定。此參數會在 docker create-container 命令Ulimits
中映射至 ,以及用於執行 docker--ulimit
的選項。託管在 Fargate 上的 Amazon ECS任務會使用作業系統設定的預設資源限制值,但
nofile
資源限制參數除外。nofile
資源限制會對容器可使用的開放檔案數量設限。在 Fargate 上,預設的nofile
軟限制為65535
,硬限制為65535
。您可以將兩個限制的值設定為1048576
。如需詳細資訊,請參閱任務資源限制。此參數需要容器執行個體上 Docker Remote API或更新版本的 1.18 版。
注意
Windows 容器不支援此參數。
"ulimits": [ { "name": "core"|"cpu"|"data"|"fsize"|"locks"|"memlock"|"msgqueue"|"nice"|"nofile"|"nproc"|"rss"|"rtprio"|"rttime"|"sigpending"|"stack", "softLimit": integer, "hardLimit": integer } ... ]
name
-
類型:字串
有效值:
"core" | "cpu" | "data" | "fsize" | "locks" | "memlock" | "msgqueue" | "nice" | "nofile" | "nproc" | "rss" | "rtprio" | "rttime" | "sigpending" | "stack"
必要:是 (當使用
ulimits
時)ulimit
的type
。 hardLimit
-
類型:整數
必要:是 (當使用
ulimits
時)ulimit
類型的硬性限制。值可以以位元組、秒或計數形式指定,具體取決於type
的ulimit
。 softLimit
-
類型:整數
必要:是 (當使用
ulimits
時)ulimit
類型的軟性限制。值可以以位元組、秒或計數形式指定,具體取決於type
的ulimit
。
Docker 標籤
dockerLabels
-
類型:字串到字串映射
必要:否
要新增到容器的標籤索引鍵/值映射。此參數會在 docker create-container 命令
Labels
中映射至 ,以及用於執行 docker--label
的選項。此參數需要容器執行個體上 Docker Remote API或更新版本的 1.18 版。
"dockerLabels": {"string": "string" ...}
其他容器定義參數
下列容器定義參數可在 Amazon ECS主控台中註冊任務定義時使用,方法是使用透過設定JSON選項。如需詳細資訊,請參閱使用主控台建立 Amazon ECS任務定義。
Linux 參數
linuxParameters
-
類型:LinuxParameters 物件
必要:否
Linux套用至容器的特定選項,例如 KernelCapabilities。
注意
此參數不支援 Windows 容器。
"linuxParameters": { "capabilities": { "add": ["string", ...], "drop": ["string", ...] } }
capabilities
-
類型:KernelCapabilities 物件
必要:否
所以此 Linux 從 提供的預設組態中新增或捨棄的容器功能 Docker。 如需這些項目的詳細資訊 Linux 功能,請參閱 功能(7)
Linux 手動頁面。 add
-
類型:字串陣列
有效值:
"ALL" | "AUDIT_CONTROL" | "AUDIT_READ" | "AUDIT_WRITE" | "BLOCK_SUSPEND" | "CHOWN" | "DAC_OVERRIDE" | "DAC_READ_SEARCH" | "FOWNER" | "FSETID" | "IPC_LOCK" | "IPC_OWNER" | "KILL" | "LEASE" | "LINUX_IMMUTABLE" | "MAC_ADMIN" | "MAC_OVERRIDE" | "MKNOD" | "NET_ADMIN" | "NET_BIND_SERVICE" | "NET_BROADCAST" | "NET_RAW" | "SETFCAP" | "SETGID" | "SETPCAP" | "SETUID" | "SYS_ADMIN" | "SYS_BOOT" | "SYS_CHROOT" | "SYS_MODULE" | "SYS_NICE" | "SYS_PACCT" | "SYS_PTRACE" | "SYS_RAWIO" | "SYS_RESOURCE" | "SYS_TIME" | "SYS_TTY_CONFIG" | "SYSLOG" | "WAKE_ALARM"
必要:否
所以此 Linux 容器新增至 提供的預設組態的功能 Docker。 此參數在 docker create-container 命令
CapAdd
中映射到 ,並映射到 docker 執行--cap-add
的選項。注意
在 Fargate 上啟動的任務僅支援新增
SYS_PTRACE
核心功能。 add
-
類型:字串陣列
有效值:
"SYS_PTRACE"
必要:否
所以此 Linux 容器新增至由 提供的預設組態的功能 Docker。 此參數在 docker create-container 命令
CapAdd
中映射到 ,並映射到 docker 執行--cap-add
的選項。 drop
-
類型:字串陣列
有效值:
"ALL" | "AUDIT_CONTROL" | "AUDIT_WRITE" | "BLOCK_SUSPEND" | "CHOWN" | "DAC_OVERRIDE" | "DAC_READ_SEARCH" | "FOWNER" | "FSETID" | "IPC_LOCK" | "IPC_OWNER" | "KILL" | "LEASE" | "LINUX_IMMUTABLE" | "MAC_ADMIN" | "MAC_OVERRIDE" | "MKNOD" | "NET_ADMIN" | "NET_BIND_SERVICE" | "NET_BROADCAST" | "NET_RAW" | "SETFCAP" | "SETGID" | "SETPCAP" | "SETUID" | "SYS_ADMIN" | "SYS_BOOT" | "SYS_CHROOT" | "SYS_MODULE" | "SYS_NICE" | "SYS_PACCT" | "SYS_PTRACE" | "SYS_RAWIO" | "SYS_RESOURCE" | "SYS_TIME" | "SYS_TTY_CONFIG" | "SYSLOG" | "WAKE_ALARM"
必要:否
所以此 Linux 容器從 提供的預設組態中移除的功能 Docker。 此參數在 docker create-container 命令
CapDrop
中映射到 ,並映射到 docker 執行--cap-drop
的選項。
devices
-
任何要公開給容器的主機裝置。此參數會在 docker create-container 命令
Devices
中映射至 ,並映射至 docker 執行--device
的選項。注意
當您使用 Fargate 啟動類型或 Windows 容器時,不支援
devices
參數。類型:Device 物件的陣列
必要:否
hostPath
-
主機容器執行個體上裝置的路徑。
類型:字串
必要:是
containerPath
-
容器內的路徑,其為公開主機設備的目標路徑。
類型:字串
必要:否
permissions
-
要提供給裝置容器的明確許可。在預設情況下,容器在裝置上具有
read
、write
及mknod
許可。類型:字串陣列
有效值:
read
|write
|mknod
initProcessEnabled
-
在容器內執行
init
處理序,該處理序可轉寄訊號及獲得處理序。此參數會映射至--init
選項,以執行 Docker。此參數需要容器執行個體上 Docker Remote API或更新版本的 1.25 版。
maxSwap
-
容器可以使用的交換記憶體總量 (以 MiB 為單位)。此參數會轉換為Docker 執行
--memory-swap
的選項,其中值是容器記憶體加maxSwap
值的總和。如果將
maxSwap
值指定為0
,容器不會使用交換。接受的值為0
或任何正整數。如果省略maxSwap
參數,容器使用其執行所在的容器執行個體的交換組態。必須設定maxSwap
值,才能使用swappiness
參數。注意
如果您使用的是使用 Fargate 啟動類型的任務,則不支援
maxSwap
參數。 sharedMemorySize
-
/dev/shm
磁碟區的大小值 (以 MiB 為單位)。此參數會映射至--shm-size
選項,以執行 Docker。注意
如果您使用的是使用 Fargate 啟動類型的任務,則不支援
sharedMemorySize
參數。類型:整數
swappiness
-
您可使用此參數,調整容器的記憶體交換行為。
swappiness
的值若為0
將導致交換不會發生 (除非有需要)。swappiness
的值若為100
將導致頻繁交換頁面。接受的值為介於0
與100
之間的整數。如果您未指定值,則會使用預設值60
。此外,如果您未對maxSwap
指定值,則會忽略此參數。此參數會映射至--memory-swappiness
選項,以執行 Docker。注意
如果您使用的是使用 Fargate 啟動類型的任務,則不支援
swappiness
參數。如果您在 Amazon Linux 2023 上使用任務,則不支援
swappiness
參數。 tmpfs
-
的容器路徑、掛載選項和大小上限 (以 MiB 為單位) tmpfs 掛載。此參數會映射至
--tmpfs
選項以執行 Docker。注意
如果您使用的是使用 Fargate 啟動類型的任務,則不支援
tmpfs
參數。類型:Tmpfs 物件的陣列
必要:否
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 磁碟區。
類型:整數
必要:是
容器相依性
dependsOn
-
類型:ContainerDependency 物件陣列
必要:否
針對容器啟動和關閉而定義的相依性。容器可包含多個相依性。針對容器啟動而定義相依性時,它會保留給容器關閉。如需範例,請參閱容器相依性。
注意
如果容器不符合相依性限制條件,或在符合限制條件之前逾時,Amazon ECS不會將相依容器進展到下一個狀態。
對於託管在 Amazon EC2執行個體上的 Amazon ECS任務,執行個體至少需要
1.26.0
版本的容器代理程式才能啟用容器相依性。不過,我們建議您使用最新版的容器代理程式。如需檢查代理程式版本及更新至最新版本的資訊,請參閱「更新 Amazon ECS容器代理程式」。如果您使用的是 Amazon ECS最佳化的 Amazon Linux AMI,執行個體至少需要1.26.0-1
版本的ecs-init
套件。如果您的容器執行個體是從20190301
版或更新版本啟動,它們會包含所需的容器代理程式和ecs-init
版本。如需詳細資訊,請參閱Amazon ECS最佳化 Linux AMIs。對於託管在 Fargate 上的 Amazon ECS任務,此參數要求任務或服務使用平台版本
1.3.0
或更新版本 (Linux) 或1.0.0
(Windows)."dependsOn": [ { "containerName": "
string
", "condition": "string
" } ]containerName
-
類型:字串
必要:是
必須符合指定條件的容器名稱。
condition
-
類型:字串
必要:是
容器的相依性條件。以下是可用的條件及其行為:
-
START
- 此條件會模擬連結和磁碟區目前的行為。該條件可驗證相依容器先啟動後,才允許其他容器啟動。 -
COMPLETE
- 此條件驗證相依容器執行到完成 (結束) 後,才允許其他容器啟動。這適合用於只是執行指令碼,然後就退出的非必要容器。無法在基本容器上設定此條件。 -
SUCCESS
- 此條件與COMPLETE
相同,但還要求容器必須以zero
狀態結束。無法在基本容器上設定此條件。 -
HEALTHY
- 此條件會在驗證相依容器傳遞了其容器運作狀態檢查後,才允許其他容器啟動。這會要求相依容器在任務定義中設定運作狀態檢查。僅在任務啟動時才會確認這個條件。
-
容器逾時
startTimeout
-
類型:整數
必要:否
範例值:
120
解析容器的相依性時在放棄之前等待的持續時間 (以秒為單位)。
例如,您在任務定義中指定兩個容器,其中的
containerA
對達到COMPLETE
、SUCCESS
或HEALTHY
狀態的containerB
有相依性。如果為containerB
指定startTimeout
值,但在該時間內沒有達到所需狀態,則containerA
不會啟動。注意
如果容器不符合相依性限制條件,或在符合限制條件之前逾時,Amazon ECS不會將相依容器進展到下一個狀態。
對於託管在 Fargate 上的 Amazon ECS任務,此參數要求任務或服務使用平台版本
1.3.0
或更新版本 (Linux)。 最大值為 120 秒。 stopTimeout
-
類型:整數
必要:否
範例值:
120
當容器本身未正常結束時,強制終止容器之前的等待期間 (以秒為單位)。
對於託管在 Fargate 上的 Amazon ECS任務,此參數要求任務或服務使用平台版本
1.3.0
或更新版本 (Linux)。 如果未指定 參數,則會使用預設值 30 秒。Fargate 的最大值為 120 秒。對於使用EC2啟動類型的任務,如果未指定
stopTimeout
參數,ECS_CONTAINER_STOP_TIMEOUT
則會使用 Amazon ECS容器代理程式組態變數的值集。如果未設定stopTimeout
參數或ECS_CONTAINER_STOP_TIMEOUT
代理程式組態變數,則 的預設值為 30 秒 Linux 容器和 30 秒 Windows 會使用容器。容器執行個體至少需要 1.26.0 版的容器代理程式,才能啟用容器停止逾時值。不過,我們建議您使用最新版的容器代理程式。如需如何檢查代理程式版本及更新至最新版本的資訊,請參閱「更新 Amazon ECS容器代理程式」。如果您使用的是 Amazon ECS最佳化的 Amazon Linux AMI,您的執行個體至少需要 1.26.0-1 版的ecs-init
套件。如果您的容器執行個體是從20190301
版或更新版本啟動,它們會包含所需的容器代理程式和ecs-init
版本。如需詳細資訊,請參閱Amazon ECS最佳化 Linux AMIs。
系統控制
systemControls
-
類型:SystemControl 物件
必要:否
要在容器中設定的命名空間核心參數清單。此參數會在 docker create-container 命令
Sysctls
中映射至 ,以及用於執行 docker--sysctl
的選項。例如,您可以規劃net.ipv4.tcp_keepalive_time
設定以維持壽命較長的連線。不建議您指定單一任務中多個容器的網路相關
systemControls
參數,而單一任務也使用awsvpc
或host
網路模式。執行此操作的缺點如下:-
對於使用包括 Fargate
awsvpc
網路模式的任務,如果您設定任何容器的systemControls
,則會套用至任務中的所有容器。如果您針對單一任務中的多個容器設定不同的systemControls
,則最後啟動的容器會判斷哪些systemControls
生效。 -
對於使用
host
網路模式的任務,不支援網路命名空間systemControls
。
如果您要將IPC資源命名空間設定為用於任務中的容器,則下列條件適用於您的系統控制項。如需詳細資訊,請參閱IPC 模式。
-
對於使用
host
IPC 模式的任務,systemControls
不支援IPC命名空間。 -
對於使用
task
IPC 模式的任務,IPC命名空間systemControls
值會套用至任務中的所有容器。
注意
Windows 容器不支援此參數。
注意
如果任務使用平台版本
1.4.0
或更高版本 (Linux),只有託管於 AWS Fargate 的任務才支援此參數。Fargate 上的 Windows 容器不支援此參數。"systemControls": [ { "namespace":"
string
", "value":"string
" } ]namespace
-
類型:字串
必要:否
要設定
value
的命名空間核心參數。有效的IPC命名空間值:
"kernel.msgmax" | "kernel.msgmnb" | "kernel.msgmni" | "kernel.sem" | "kernel.shmall" | "kernel.shmmax" | "kernel.shmmni" | "kernel.shm_rmid_forced"
,開頭Sysctls
為"fs.mqueue.*"
有效的網路命名空間值:開頭為
"net.*"
的Sysctls
Fargate 支援所有這些值。
value
-
類型:字串
必要:否
在 中指定的命名空間核心參數值
namespace
。
-
互動性
interactive
-
類型:布林值
必要:否
此參數為
true
時,您可部署需要配置stdin
或tty
的容器化應用程式。此參數會在 docker create-container 命令OpenStdin
中映射至 ,以及用於執行 docker--interactive
的選項。預設值為
false
。
虛擬終端機
pseudoTerminal
-
類型:布林值
必要:否
當此參數為 時
true
,TTY會配置 。此參數在 docker create-container 命令Tty
中映射至 ,且--tty
選項 todocker 執行。預設值為
false
。
Elastic Inference 加速器名稱
注意
從 2023 年 4 月 15 日開始, AWS 不會讓新客戶加入 Amazon Elastic Inference (EI), 並將協助現有客戶將其工作負載遷移到提供更好價格和效能的選項。2023 年 4 月 15 日後,新客戶將無法在 Amazon SageMaker、Amazon ECS或 Amazon 中使用 Amazon EI 加速器啟動執行個體EC2。但是,在過去 30 天內至少使用過一次 Amazon EI 的客戶將被視為目前客戶,並且可以繼續使用該服務。
任務定義的 Elastic Inference 加速器資源要求。如需詳細資訊,請參閱 Amazon Elastic Inference 開發人員指南 中的什麼是 Amazon Elastic Inference?。
任務定義允許使用以下參數:
deviceName
-
類型:字串
必要:是
彈性推論加速器裝置名稱。
deviceName
也必須在容器定義中參照,請參閱 Elastic Inference accelerator。 deviceType
-
類型:字串
必要:是
要使用的彈性推論加速器。
任務置放限制條件
當您註冊任務定義時,您可以提供任務置放限制,以自訂 Amazon ECS放置任務的方式。
若您使用的是 Fargate 啟動類型,則不支援任務置放限制條件。根據預設,Fargate 任務會分散在可用區域中。
對於使用EC2啟動類型的任務,您可以使用限制來根據可用區域、執行個體類型或自訂屬性來放置任務。如需詳細資訊,請參閱定義 Amazon ECS 用於任務的容器執行個體。
容器定義允許使用以下參數:
expression
-
類型:字串
必要:否
限制所套用的叢集查詢語言運算式。如需詳細資訊,請參閱建立運算式以定義 Amazon ECS任務的容器執行個體。
type
-
類型:字串
必要:是
限制類型。使用
memberOf
,以將選擇限制於特定群組或有效的待選項目。
代理組態
proxyConfiguration
-
類型:ProxyConfiguration 物件
必要:否
App Mesh 代理的組態詳細資訊。
對於使用EC2啟動類型的任務,容器執行個體至少需要 1.26.0 版的容器代理程式,以及至少 1.26.0-1 版的
ecs-init
套件,才能啟用代理組態。如果您的容器執行個體是從 Amazon ECS最佳化AMI版本20190301
或更新版本啟動,則會包含容器代理程式和 的必要版本ecs-init
。如需詳細資訊,請參閱Amazon ECS最佳化 Linux AMIs。對於使用 Fargate 啟動類型的任務,此功能要求任務或服務必須使用平台版本 1.3.0 或更新版本。
注意
Windows 容器不支援此參數。
"proxyConfiguration": { "type": "APPMESH", "containerName": "
string
", "properties": [ { "name": "string
", "value": "string
" } ] }type
-
類型:字串
有效值:
APPMESH
必要:否
代理類型。唯一支援的值為
APPMESH
。 containerName
-
類型:字串
必要:是
做為 App Mesh 代理的容器名稱。
properties
-
類型:KeyValuePair 物件陣列
必要:否
一組網路組態參數,用來提供容器網路介面 (CNI) 外掛程式,指定為鍵值對。
-
IgnoredUID
– (必要) 容器定義中user
參數定義的代理容器的使用者 ID (UID)。這是用於確保代理忽略自己的流量。如果指定了IgnoredGID
,這個欄位可以為空白。 -
IgnoredGID
– (必要) 容器定義中user
參數定義的代理容器群組 ID (GID)。這是用於確保代理忽略自己的流量。如果指定了IgnoredUID
,這個欄位可以為空白。 -
AppPorts
- (必要) 應用程式所用連接埠的清單。這些連接埠的網路流量會轉發到ProxyIngressPort
和ProxyEgressPort
。 -
ProxyIngressPort
- (必要) 指定傳至AppPorts
的傳入流量所導向的連接埠。 -
ProxyEgressPort
- (必要) 指定來自AppPorts
的傳出流量所導向的連接埠。 -
EgressIgnoredPorts
- (必要) 進入這些指定連接埠的傳出流量將忽略,不會重新引導至ProxyEgressPort
。它可以是空的清單。 -
EgressIgnoredIPs
- (必要) 進入這些指定 IP 位址的傳出流量將忽略,不會重新引導至ProxyEgressPort
。它可以是空的清單。
name
-
類型:字串
必要:否
鍵/值對的名稱。
value
-
類型:字串
必要:否
索引鍵/值對的值。
-
磁碟區
註冊任務定義時,您可以選擇指定要傳遞給 的磁碟區清單 Docker 容器執行個體上的常駐程式,然後可供相同容器執行個體上的其他容器存取。
以下為會用到的資料磁碟區類型:
-
Amazon EBS磁碟區:為資料密集型容器化工作負載提供符合成本效益、耐用且高效能的區塊式儲存。您可以在執行獨立ECS任務或建立或更新服務時,為每個 Amazon 任務連接 1 個 Amazon EBS磁碟區。在 Fargate 或 Amazon EC2執行個體上託管的 Linux 任務支援 Amazon EBS磁碟區。如需詳細資訊,請參閱搭配 Amazon 使用 Amazon EBS磁碟區 ECS。
-
Amazon EFS磁碟區 — 提供簡單、可擴展且持久的檔案儲存,可用於您的 Amazon ECS任務。使用 Amazon EFS時,儲存容量是彈性的。儲存容量會隨著您新增和移除檔案時自動擴展和縮減。您的應用程式可以擁有他們所需的儲存體,以及他們何時需要它。在 Fargate 或 Amazon EC2執行個體上託管的任務支援 Amazon EFS磁碟區。如需詳細資訊,請參閱搭配 Amazon 使用 Amazon EFS磁碟區 ECS。
-
FSx 適用於 Windows File Server 磁碟區:提供完全受管的 Microsoft Windows 檔案伺服器。這些檔案伺服器由 Windows 檔案系統支援。將 FSx for Windows File Server 與 Amazon 搭配使用時ECS,您可以使用持久性、分散式、共用和靜態檔案儲存來佈建 Windows 任務。如需詳細資訊,請參閱搭配 Amazon FSx使用 Windows File Server 磁碟區 ECS。
Fargate 上的 Windows 容器不支援此選項。
-
Docker 磁碟區 – 在主機 Amazon EC2執行個體
/var/lib/docker/volumes
上於 下建立的 Docker 受管磁碟區。Docker 磁碟區驅動程式 (也稱為外掛程式) 用於整合磁碟區與外部儲存系統,例如 Amazon EBS。可使用內建local
磁碟區驅動程式或第三方磁碟區驅動程式。只有在 Amazon EC2執行個體上執行任務時,才支援 Docker 磁碟區。Windows 容器僅支援使用local
驅動程式。若要使用 Docker 磁碟區,請在您的任務定義中指定dockerVolumeConfiguration
。 -
繫結掛載 – 主機機器上掛載到容器中的檔案或目錄。在 AWS Fargate 或 Amazon EC2執行個體上執行任務時,支援繫結掛載主機磁碟區。若要使用綁定掛載主機磁碟區,請在任務定義中指定
host
和選用的sourcePath
值。
如需詳細資訊,請參閱Amazon ECS任務的儲存選項。
容器定義允許使用以下參數。
name
-
類型:字串
必要:否
磁碟區名稱。最多允許 255 個字母 (大寫和小寫)、數字、連字號 (
-
) 和底線 (_
)。此名稱會在容器定義mountPoints
物件的sourceVolume
參數中參考。 host
-
必要:否
參數
host
用於將繫結掛載的生命週期與主機 Amazon EC2執行個體,而不是任務及其存放位置綁定。如果host
參數是空的,則 Docker 常駐程式會為您的資料磁碟區指派主機路徑,但其相關聯的容器停止執行後,不保證會保留資料。Windows 容器可在
$env:ProgramData
所在的相同磁碟上掛載整個目錄。注意
只有在使用託管在 Amazon EC2執行個體上的任務時,才支援
sourcePath
參數。sourcePath
-
類型:字串
必要:否
使用
host
參數時,請指定sourcePath
來宣告向容器顯示的主機 Amazon EC2執行個體路徑。如果此參數是空的,則 Docker 常駐程式會為您指派主機路徑。如果host
參數包含sourcePath
檔案位置,則資料磁碟區會保留在主機 Amazon EC2執行個體上的指定位置,直到您手動刪除為止。如果該sourcePath
值不存在於主機 Amazon EC2執行個體上,Docker 常駐程式會建立該值。如果位置存在,將匯出來源路徑資料夾的內容。
configuredAtLaunch
-
類型:布林值
必要:否
指定磁碟區是否可在啟動時設定。設定為 時
true
,您可以在執行獨立任務或建立或更新服務時設定磁碟區。設定為 時true
,您將無法在任務定義中提供另一個磁碟區組態。此參數必須設定為true
,以設定要連接至任務的 Amazon EBS磁碟區。configuredAtLaunch
將磁碟區組態設定為啟動階段true
並延後啟動階段,可讓您建立任務定義,而這些定義不會限制為磁碟區類型或特定磁碟區設定。這樣做可讓任務定義在不同執行環境中重複使用。如需詳細資訊,請參閱 Amazon EBS磁碟區 。 dockerVolumeConfiguration
-
類型:DockerVolumeConfiguration物件
必要:否
此參數只有使用 Docker 磁碟區時才會指定。只有在EC2執行個體上執行任務時,才支援 Docker 磁碟區。Windows 容器僅支援使用
local
驅動程式。若要使用綁定掛載,請指定host
。scope
-
類型:字串
有效值:
task
|shared
必要:否
決定生命週期的 Docker 磁碟區範圍。範圍受限於
task
的 Docker 磁碟區,會在任務啟動時自動佈建,以及在任務停止時銷毀。範圍為shared
的 Docker 磁碟區會在任務停止之後保留。 autoprovision
-
類型:布林值
預設值:
false
必要:否
若此數值為
true
,Docker 磁碟區便得以建立 (若它尚不存在)。只有在scope
為 時,才會使用此欄位shared
。如果scope
是task
,則必須省略此參數。 driver
-
類型:字串
必要:否
要使用的 Docker 磁碟區驅動程式。驅動程式值必須符合 Docker 提供的驅動程式名稱,因為此名稱用於任務置放。如果驅動程式是透過使用 Docker 外掛程式 進行安裝CLI,請使用 從您的容器執行個體
docker plugin ls
擷取驅動程式名稱。如果驅動程式是使用其他方法安裝的,請使用 Docker 外掛程式探索來擷取驅動程式名稱。 driverOpts
-
類型:字串
必要:否
要傳遞的 Docker 驅動程式特定選項映射。此參數會在 Docker 的建立磁碟區區段
DriverOpts
中映射至 。 labels
-
類型:字串
必要:否
自訂中繼資料,新增到您的 Docker 磁碟區。
efsVolumeConfiguration
-
必要:否
使用 Amazon EFS磁碟區時指定此參數。
fileSystemId
-
類型:字串
必要:是
要使用的 Amazon EFS 檔案系統 ID。
rootDirectory
-
類型:字串
必要:否
Amazon EFS 檔案系統中要掛載為主機內根目錄的目錄。如果省略此參數,則會使用 Amazon EFS磁碟區的根。指定
/
的效果與忽略此參數的效果相同。重要
如果在 中指定EFS存取點
authorizationConfig
,則必須省略根目錄參數或將其設定為/
,這將強制執行EFS存取點上設定的路徑。 transitEncryption
-
類型:字串
有效值:
ENABLED
|DISABLED
必要:否
指定是否啟用 Amazon ECS 主機與 Amazon EFS 伺服器之間傳輸的 Amazon EFS資料加密。如果使用 Amazon EFSIAM授權,則必須啟用傳輸加密。如果省略此參數,系統會使用
DISABLED
的預設值。如需詳細資訊,請參閱《Amazon Elastic File System 使用者指南》中的加密傳輸中的資料。 transitEncryptionPort
-
類型:整數
必要:否
在 Amazon ECS 主機和 Amazon EFS 伺服器之間傳送加密資料的連接埠。如果您未指定傳輸加密連接埠,任務將使用 Amazon EFS 掛載協助程式使用的連接埠選取策略。如需詳細資訊,請參閱 Amazon Elastic File System 使用者指南 中的EFS掛載協助程式。
authorizationConfig
-
類型:EFSAuthorizationConfiguration物件
必要:否
Amazon EFS 檔案系統的授權組態詳細資訊。
accessPointId
-
類型:字串
必要:否
要使用的存取點 ID。如果指定存取點,
efsVolumeConfiguration
則必須省略 中的根目錄值,或將其設定為/
,這會強制執行EFS存取點上設定的路徑。如果使用存取點,則必須在EFSVolumeConfiguration
中啟用傳輸加密。如需詳細資訊,請參閱Amazon Elastic File System 使用者指南中的使用 Amazon EFS 存取點。 Amazon Elastic File System iam
-
類型:字串
有效值:
ENABLED
|DISABLED
必要:否
指定是否要在掛載 Amazon EFS 檔案系統時使用任務定義中定義的 Amazon 任務ECSIAM角色。如果已啟用,必須在
EFSVolumeConfiguration
中啟用傳輸加密。如果省略此參數,系統會使用DISABLED
的預設值。如需詳細資訊,請參閱IAM任務 的角色。
FSxWindowsFileServerVolumeConfiguration
-
類型:FSxWindowsFileServerVolumeConfiguration物件
必要:是
當您使用 Amazon FSx for Windows File Server 檔案系統儲存任務時,會指定此參數。
fileSystemId
-
類型:字串
必要:是
要使用FSx的 for Windows File Server 檔案系統 ID。
rootDirectory
-
類型:字串
必要:是
FSx 適用於 Windows File Server 檔案系統內的目錄,可掛載為主機內的根目錄。
authorizationConfig
-
credentialsParameter
-
類型:字串
必要:是
授權憑證選項。
選項:
AWS Secrets Manager 機密的 Amazon Resource Name (ARN)。
ARN AWS Systems Manager 參數的 。
domain
-
類型:字串
必要:是
由 AWS Directory Service for Microsoft Active Directory(AWS Managed Microsoft AD) 目錄或自我託管 EC2 Active Directory 託管的完整網域名稱。
標籤
當您註冊任務定義時,您可以選擇性地指定套用至任務定義的中繼資料標籤。標籤可協助您分類和組織您的任務定義。每個標籤皆包含索引鍵與選用值。您可以兩個都定義。如需詳細資訊,請參閱標記 Amazon ECS 資源。
重要
請勿在標籤中加入個人識別資訊或其他機密或敏感資訊。許多 AWS 服務都可以存取標籤,包括帳單。標籤不適用於私有或敏感資料。
標籤物件允許使用以下參數。
key
-
類型:字串
必要:否
組成標籤的鍵值組的一部分。索引鍵是一般標籤,作用就像更特定標籤值的類別。
value
-
類型:字串
必要:否
組成標籤的鍵值組的選用部分。值就像標籤類別 (索引鍵) 內的描述項。
其他任務定義參數
下列任務定義參數可在 Amazon ECS主控台中註冊任務定義時使用,方法是使用透過設定JSON選項。如需詳細資訊,請參閱使用主控台建立 Amazon ECS任務定義。
暫時性儲存
ephemeralStorage
-
類型:EphemeralStorage 物件
必要:否
為任務配置的暫時性儲存量 (以 GB 為單位)。對於託管於 AWS Fargate的任務,此參數可用來擴充可用的暫時性儲存總量 (超過預設數量)。如需詳細資訊,請參閱搭配 Amazon 使用繫結掛載 ECS。
注意
只有託管於 AWS Fargate 且使用平台版本
1.4.0
或更新版本 (Linux) 或1.0.0
或更新版本 (Windows) 的任務才支援此參數。
IPC 模式
ipcMode
-
類型:字串
必要:否
用於任務中容器IPC的資源命名空間。有效值為
host
、task
或none
。如果host
已指定 ,則位於在相同容器執行個體上指定host
IPC模式之任務中的所有容器都會與主機 Amazon EC2執行個體共用相同的IPC資源。如果已指定task
,則指定任務中的所有容器都會共用相同的IPC資源。如果none
已指定,則任務容器中IPC的資源為私有,不會與任務或容器執行個體中的其他容器共用。如果未指定任何值,則IPC資源命名空間共用取決於容器執行個體上的 Docker 常駐程式設定。如果使用
host
IPC 模式,則可能會有不必要的IPC命名空間暴露風險增加。如果您要設定
systemControls
用於任務中容器的命名空間核心參數,則以下內容適用於您的IPC資源命名空間。-
對於使用
host
IPC 模式的任務,systemControls
不支援與 相關的IPC命名空間。 -
對於使用
task
IPC 模式的任務,與IPC命名空間相關的systemControls
會套用至任務中的所有容器。
-
注意
Windows 容器或使用 Fargate 啟動類型的任務不支援此參數。
PID 模式
pidMode
-
類型:字串
有效值:
host
|task
必要:否
要用於任務中容器的程序命名空間。有效值為
host
或task
。在 Linux 容器的 Fargate 上,唯一有效的值為task
。例如,監控附屬可能需要pidMode
存取相同任務中執行之其他容器的相關資訊。如果
host
已指定 ,在相同容器執行個體上指定host
PID 模式的任務中的所有容器都會與主機 Amazon EC2執行個體共用相同的程序命名空間。如果已指定
task
,則指定任務內的所有容器會共用相同的程序命名空間。如果未指定任何值,每個容器的預設值會是私有命名空間。
如果使用
host
PID 模式,則可能會有不必要的程序命名空間暴露的風險增加。
注意
Windows 容器不支援此參數。
注意
如果任務使用平台版本 1.4.0
或更高版本 (Linux),只有託管於 AWS Fargate 的任務才支援此參數。Fargate 上的 Windows 容器不支援此參數。