本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon ECS 受管執行個體的 Amazon ECS 任務定義參數
任務定義分為不同的部分:任務系列、 AWS Identity and Access Management (IAM) 任務角色、網路模式、容器定義、磁碟區和容量。任務定義中需要系列和容器定義。與此相對,任務角色、網路模式、磁碟區與容量則為選用項目。
您可以在 JSON 檔案中使用這些參數來設定任務定義。
以下是 Amazon ECS 受管執行個體每個任務定義參數的詳細描述。
系列
family-
類型:字串
必要:是
當您註冊任務定義時,您會指定它的系列,這類似於任務定義以修訂版號碼指定的多個版本名稱。在特定系列註冊的第一個任務定義會得到修訂版 1,之後註冊的任何任務定義,則得到連續的修訂版號碼。
容量
在註冊任務定義時,您可以指定 Amazon ECS 驗證任務定義所依據的容量。如果任務定義不會依據指定的相容性進行驗證,則會傳回用戶端例外狀況。如需詳細資訊,請參閱 Amazon ECS 啟動類型。
任務定義允許使用以下參數。
requiresCompatibilities-
類型:字串陣列
必要:否
有效值:
MANAGED_INSTANCES驗證任務定義所依據的容量。這會啟動檢查,確保任務定義中使用的所有參數都能滿足 Amazon ECS 受管執行個體的需求。
任務 角色
taskRoleArn-
類型:字串
必要:否
當您註冊任務定義時,您可以為 IAM 角色提供任務角色,該角色可讓任務許可中的容器,代您呼叫其關聯政策中指定的 AWS API。如需詳細資訊,請參閱Amazon ECS 任務 IAM 角色。
任務執行 角色
executionRoleArn-
類型:字串
必要:有條件
任務執行角色的 Amazon Resource Name (ARN),授予 Amazon ECS 容器代理程式代表您進行 AWS API 呼叫的許可。如需詳細資訊,請參閱Amazon ECS 任務執行 IAM 角色。
注意
視任務需求而定,任務執行 IAM 角色是必要的項目。私有 ECR 映像提取和使用
awslogs日誌驅動程式需要 角色。
網路模式
networkMode-
類型:字串
必要:否
預設:
awsvpc用於任務中容器的聯網模式。對於在 Amazon ECS 受管執行個體上託管的 Amazon ECS 任務,有效值為
awsvpc與host。如果未指定網路模式,預設網路模式為awsvpc。如果網路模式為
host,任務會略過網路隔離,而容器會直接使用主機的網路堆疊。重要
執行使用
host網路模式的任務時,為了獲得更好的安全性,不要使用根使用者 (UID 0) 執行容器。作為最佳安全實務,請一律使用非根使用者。如果網路模式是
awsvpc,則任務會配置一個彈性網路介面,而當您使用此任務定義建立服務或執行任務時,您必須指定NetworkConfiguration。如需詳細資訊,請參閱Amazon ECS 受管執行個體的 Amazon ECS 任務聯網。host和awsvpc網路模式為容器提供最高聯網效能,因為它們使用的是 Amazon EC2 網路堆疊。使用host和awsvpc網路模式,公開的容器連接埠會直接映射到對應的主機連接埠 (適用於host網路模式) 或已連接的彈性網路介面連接埠 (適用於awsvpc網路模式)。因此,您無法使用動態主機連接埠對應。
執行時間平台
operatingSystemFamily-
類型:字串
必要:否
預設:LINUX
在註冊任務定義時,您會指定作業系統系列。
此欄位的有效值為
LINUX。服務中使用的所有任務定義都必須與此參數具有相同的值。
如果任務定義為服務的一部分,此值必須與服務
platformFamily值相符。 cpuArchitecture-
類型:字串
必要:有條件
在註冊任務定義時,您會指定 CPU 架構。有效值為
X86_64和ARM64。如果您未指定值,Amazon ECS 會根據容量提供者組態嘗試將任務放置在可用的 CPU 架構上。為了確保任務放置在特定的 CPU 架構上,請在任務定義
cpuArchitecture中指定 的值。服務中使用的所有任務定義都必須與此參數具有相同的值。
如需
ARM64的相關資訊,請參閱 64 位元 ARM 工作負載的 Amazon ECS 任務定義。
任務大小
當您註冊任務定義時,您可以指定任務使用的 CPU 和記憶體總計。這和容器定義層級的 cpu 和 memory 值是分開的。對於在 Amazon EC2 執行個體上託管的任務,這些欄位是選用欄位。
注意
Windows 容器會忽略任務層級的 CPU 和記憶體參數。我們建議為 Windows 容器指定容器層級的資源。
cpu-
類型:字串
必要:有條件
針對任務呈現的 CPU 單位硬性限制。您可以在 JSON 檔案中將 CPU 值指定為以 CPU 為單位或虛擬 CPU (vCPU) 為單位的字串。例如,可指定
1024個 CPU 單位作為 CPU 值,也可指定1 vCPU個 vCPU 作為 CPU 值。註冊任務定義時,vCPU 值會轉換為整數,指出 CPU 單位。此欄位為選用欄位。如果您的叢集沒有任何已註冊的容器執行個體具有可用的請求 CPU 單位,則任務會失敗。支援的值介於
0.125個 vCPU 與10個 vCPU 之間。
memory-
類型:字串
必要:有條件
要分配給任務的記憶體硬性限制。您可以在任務定義中將記憶體值指定為以 MiB 或 GB 為單位的字串。例如,可指定
3072MiB 作為記憶體值,也可指定3 GBGB 作為記憶體值。註冊任務定義時,GB 值會轉換為整數,指出 MiB。此欄位為選填,且可以使用任何值。如果指定任務層級的記憶體值,則容器層級的記憶體值是選用的。如果您的叢集沒有任何一個已註冊的容器執行個體具有可用的請求記憶體,則任務會失敗。您可以盡可能為特定執行個體類型的任務提供最多的記憶體,以將資源使用率最大化。如需詳細資訊,請參閱保留 Amazon ECS Linux 容器執行個體記憶體。
其他任務定義參數
在 Amazon ECS 主控台中使用 Configure via JSON (透過 JSON 進行設定) 選項註冊任務定義時,可以使用下列任務定義參數。如需詳細資訊,請參閱使用主控台建立 Amazon ECS 任務定義。
暫時性儲存
ephemeralStorage-
注意
在 Amazon ECS 受管執行個體上執行的任務不支援此參數。
類型:EphemeralStorage 物件
必要:否
為任務配置的暫時性儲存量 (以 GB 為單位)。對於託管於 AWS Fargate的任務,此參數可用來擴充可用的暫時性儲存總量 (超過預設數量)。如需詳細資訊,請參閱搭配 Amazon ECS 使用綁定掛載。
IPC 模式
ipcMode-
注意
在 Amazon ECS 受管執行個體上執行的任務不支援此參數。
類型:字串
必要:否
要用於任務中容器的 IPC 資源命名空間。有效值為
host、task或none。如果已指定host,則任務內對相同容器執行個體指定hostIPC 模式的所有容器,會與主機 Amazon EC2 執行個體共用相同的 IPC 資源。如果已指定task,則指定任務內的所有容器會共用相同的 IPC 資源。如果已指定none,則任務內的容器內的 IPC 資源為私有,並且不會與任務中或容器執行個體上的其他容器共用。如果未指定任何值,則 IPC 資源命名空間共用取決於容器執行期組態。
PID 模式
pidMode-
類型:字串
必要:否
要用於任務中容器的程序命名空間。有效值為
host或task。如果已指定host,則任務內對同一容器執行個體指定hostPID 模式的所有容器,會與主機 Amazon EC2 執行個體共用相同的程序命名空間。如果已指定task,則指定任務內的所有容器會共用相同的程序命名空間。如果未指定任何值,預設值會是私有命名空間。如果是使用
hostPID 模式,這會提高將不需要的程序命名空間公開的風險。
代理組態
proxyConfiguration-
注意
在 Amazon ECS 受管執行個體上執行的任務不支援此參數。
類型:ProxyConfiguration 物件
必要:否
App Mesh 代理的組態詳細資訊。
Tags (標籤)
您套用至任務定義的中繼資料,可用於協助您對任務定義進行分類與整理。每個標籤皆包含索引鍵與選用值。您可以兩個都定義。
以下基本限制適用於 標籤:
-
每個資源的標籤數上限 - 50
-
針對每一個資源,每個標籤鍵必須是唯一的,且每個標籤鍵只能有一個值。
-
索引鍵長度上限 - 128 個 UTF-8 Unicode 字元
-
值的長度上限 - 256 個 UTF-8 Unicode 字元
-
如果您的標記結構描述是跨多項服務和資源使用,請記得其他服務可能會有字元使用限制。通常允許的字元為:以 UTF-8 表示的字母、數字和空格,以及下列字元:+ - = . _ : / @。
-
標籤鍵與值皆區分大小寫。
-
請不要使用
aws:、AWS:或任何大寫或小寫的組合,例如保留供 AWS 使用的索引鍵或值的字首。您不可編輯或刪除具此字首的標籤金鑰或值。具此字首的標籤,不算在受資源限制的標籤計數內。
key-
類型:字串
必要:否
組成標籤的鍵值組的一部分。索引鍵是一般標籤,作用就像更特定標籤值的類別。
value-
類型:字串
必要:否
組成標籤的鍵值組的選用部分。值就像標籤類別 (索引鍵) 內的描述項。
Elastic Inference 加速器 (已棄用)
注意
Amazon Elastic Inference (EI) 服務已全面終止,不再向客戶提供。
inferenceAccelerator-
注意
在 Amazon ECS 受管執行個體上執行的任務不支援此參數。
類型:InferenceAccelerator 物件
必要:否
要用於任務中容器的 Elastic Inference 加速器。
置放限制條件
placementConstraints-
類型:TaskDefinitionPlacementConstraint 物件陣列
必要:否
要針對任務使用的置放限制條件物件陣列。每項任務您最多可以指定 10 項限制條件 (此限制包含任務定義中的限制條件以及執行時間指定的限制條件)。
Amazon ECS 支援在 Amazon ECS 受管執行個體上執行之任務的
distinctInstace與memberOf置放限制條件。使用memberOf置放限制條件的任務支援下列屬性:-
ecs.subnet-id -
ecs.availability-zone -
ecs.cpu-architecture -
ecs.instance-type
如需有關置放限制條件的詳細資訊,請參閱定義 Amazon ECS 用於任務的容器執行個體。
-
磁碟區
當您註冊任務定義時,您可以選擇為您的任務指定磁碟區清單。此設定讓您可以在任務中使用資料磁碟區。
如需有關磁碟區類型與其他參數的詳細資訊,請參閱 Amazon ECS 任務的儲存選項。
name-
類型:字串
必要:是
磁碟區名稱。可以包含最多 255 個字母 (大小寫)、數字和連字號。此名稱是參考容器定義
sourceVolume中的mountPoints參數。 host-
類型:HostVolumeProperties 物件
必要:否
此參數會在您使用綁定掛載主機磁碟區時指定。
host參數的內容決定繫結掛載主機磁碟區是否保留在主機容器執行個體上以及其存放位置。如果host參數是空的,則系統會為您的資料磁碟區指派主機路徑。不過,在與其相關聯的容器停止執行後,不保證保留資料。 dockerVolumeConfiguration-
注意
在 Amazon ECS 受管執行個體上執行的任務不支援此參數。
類型:DockerVolumeConfiguration 物件
必要:否
此參數會在您使用 Docker 磁碟區時指定。
efsVolumeConfiguration-
類型:EFSVolumeConfiguration 物件
必要:否
此參數會在您使用適用於任務儲存體的 Amazon EFS 檔案系統時指定。
fsxWindowsFileServerVolumeConfiguration-
注意
在 Amazon ECS 受管執行個體上執行的任務不支援此參數。
類型:FSxWindowsFileServerVolumeConfiguration 物件
必要:否
此參數會在您為任務儲存使用 Amazon FSx for Windows File Server 檔案系統時指定。
configuredAtLaunch-
類型:布林值
必要:否
指示是否應在啟動時設定磁碟區。此參數用於為獨立任務或作為服務一部分建立的任務建立 Amazon EBS 磁碟區。每個任務定義修訂版只能在磁碟區組態中於啟動時設定一個磁碟區。
容器定義
註冊任務定義時,您必須指定容器定義清單,以傳遞到容器執行個體上的 Docker 常駐程式。容器定義允許使用以下參數。
Name
name-
類型:字串
必要:是
容器的名稱。最多允許 255 個字母 (大寫和小寫)、數字、連字號和底線。如果您在任務定義中連結多個容器,則一個容器的
name可以輸入另一個容器的links。這是為了連結容器。
映像
image-
類型:字串
必要:是
用來啟動容器的映像。此字串會直接傳遞至 Docker 常駐程式。根據預設,Docker Hub 登錄檔中的映像為可用。您也可以使用
或repository-url/image:tag指定其他存放庫。允許最多 255 個字元 (大小寫)、數字、連字號、底線、等號、句號、正斜線、井號。此參數會映射至 docker create-container 命令中的repository-url/image@digestImage,以及 docker run 命令的IMAGE參數。-
當新的任務啟動時,Amazon ECS 容器代理會提取最新版本的指定映像和標籤,以供容器使用。但是,儲存庫映像後續的更新將不會散佈到已在執行中的任務。
-
當您未在任務定義中的映像路徑中指定標籤或摘要時,Amazon ECS 容器代理程式會使用
latest標籤來提取指定的映像。 -
儲存庫映像的後續更新不會傳播至已執行的任務。
-
支援私有登錄檔中的映像。如需詳細資訊,請參閱在 Amazon ECS 中使用非AWS 容器映像。
-
可使用完整的
registry/repository:tag或registry/repository@digest命名慣例來指定 Amazon ECR 儲存庫中的映像 (例如aws_account_id.dkr.ecr.region.amazonaws.com/或my-web-app:latestaws_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)。
-
versionConsistency-
類型:字串
有效值:
enabled|disabled必要:否
指定 Amazon ECS 是否會將容器定義中提供的容器映像標籤解析為映像摘要。此行為預設為
enabled。如果將容器的值設定為disabled,Amazon ECS 不會將容器映像標籤解析為摘要,但會使用容器定義中指定的原始映像 URI 進行部署。如需有關容器映像解析的詳細資訊,請參閱容器映像解析度。
記憶體
memory-
類型:整數
必要:否
提供給容器使用的記憶體數量 (MiB)。如果您的容器嘗試使用超過此處指定的記憶體,容器便會終止。為任務中所有容器預留的記憶體總量必須低於任務
memory值 (如果已指定一個)。此參數會映射至 docker create-container 命令中的Memory,以及 docker run 的--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 run 的--memory-reservation選項。如果未指定任務層級的記憶體值,您必須為容器定義中的
memory或memoryReservation之一或兩者指定非零整數。若您同時指定兩者,memory必須大於memoryReservation。如果指定memoryReservation,則會從放置容器的容器執行個體可用記憶體資源中減去該值。否則,即使用memory的值。例如,若您的容器通常會使用 128 MiB 的記憶體,但會偶爾短期爆量到 256 MiB 的記憶體。您可以將
memoryReservation設為 128 MiB,並將memory硬性限制設為 300 MiB。此組態讓容器只從容器執行個體的剩餘資源中保留 128 MiB 的記憶體。同時,其還允許容器在需要時使用更多的記憶體資源。Docker 20.10.0 或更新版本的常駐程式會為容器保留最低 6 MiB 的記憶體。因此,不要為容器指定少於 6 MiB 的記憶體。
Docker 19.03.13-ce 或更舊版本的常駐程式會為容器保留最低 4 MiB 的記憶體。因此,不要為容器指定少於 4 MiB 的記憶體。
注意
若您嘗試盡可能為特定執行個體類型的任務提供最多的記憶體,以將資源使用率最大化,請參閱「保留 Amazon ECS Linux 容器執行個體記憶體」。
CPU
cpu-
類型:整數
必要:否
為容器預留的
cpu單位數。此參數會映射至 docker create-container 命令中的CpuShares,以及 docker run 的--cpu-shares選項。對於使用 EC2 容量提供者的任務,此欄位為可選項,唯一要求是任務內為所有容器預留的 CPU 總量必須低於任務層級的
cpu值。注意
您可以透過將 Amazon EC2 執行個體
詳細資訊頁面上為執行個體類型列出的 vCPU 乘上 1,024,來判斷每個 EC2 執行個體類型可用的 CPU 單位數。 Linux 容器會按照與其配置數量相同的比例,與容器執行個體上的其他容器共用未配置的 CPU 單位。例如,若您在單一核心執行個體類型上執行單一容器任務,為該容器指定 512 個 CPU 單位,並且該任務是容器執行個體上唯一執行中的任務,該容器便可在任何指定時間內使用完整的 1,024 個 CPU 單位。但是,若您在該容器執行個體上啟動相同任務的另一個複本,可保證每個任務都可以在需要時取得至少 512 個 CPU 單位。此外,每個容器都可在其他容器沒有使用時浮動到更高的 CPU 用量。若兩個任務都一直維持在 100% 作用中的狀態,兩者能夠取得的單位數便會限制在 512 個 CPU 單位。
在 Linux 容器執行個體上,容器執行個體的 Docker 常駐程式會使用 CPU 值計算執行中容器的相對 CPU 共用比例。如需詳細資訊,請參閱 Docker 文件中的 CPU share constraint
。Linux 核心允許的最低有效 CPU 共用值為 2。但是,CPU 參數並非必要項目,且您可以在容器定義中使用低於 2 的 CPU 值。針對低於 2 的 CPU 值 (包含 null),行為會隨您的 Amazon ECS 容器代理版本而異: -
代理程式版本小於或等於 1.1.0:Null 和零 CPU 值會以 0 傳遞給 Docker,然後 Docker 將之轉換為 1,024 個 CPU 共用。CPU 值若為 1,則會以 1 傳遞給 Docker,接著 Linux 核心便會轉換成兩個 CPU 共用。
-
代理程式版本大於或等於 1.2.0:Null、零和 1 的 CPU 值,會以 2 傳遞至 Docker。
在 Windows 容器執行個體上,CPU 限制會強制為絕對限制或配額。Windows 容器只能存取任務定義的描述中所指定之 CPU 數量。將空或零的 CPU 值以
0的形式傳遞給 Docker,Windows 會將此值解釋為一個 CPU 的 1%。 -
連接埠映射
portMappings-
類型:物件陣列
必要:否
連接埠映射會將容器的網路連接埠對外公開,讓用戶端可以存取您的應用程式。這也適用於同一任務中的容器間通訊。
針對使用
awsvpc網路模式的任務定義,只指定containerPort。一律略過hostPort,且容器連接埠會自動映射至主機上的隨機高連接埠號碼。此參數的大部分欄位 (包括
containerPort、hostPort、protocol) 會映射至 docker create-container 命令中的PortBindings,以及 docker run 的--publish選項。若任務定義的網路模式設定為host,則主機連接埠必須為未定義,或符合連接埠映射中的容器連接埠。注意
任務達到
RUNNING狀態後,手動和自動主機及容器連接埠指派會顯示在下列位置:-
主控台:選取任務的容器說明的 Network Bindings (網路繫結) 區段。
-
AWS CLI:describe-tasks 命令輸出的
networkBindings區段。 -
API:
DescribeTasks的回應。 -
中繼資料:任務中繼資料端點。
appProtocol-
類型:字串
必要:否
用於連接埠映射的應用程式通訊協定。此參數僅適用於 Service Connect。建議您將此參數設定為與您應用程式使用的通訊協定一致。如果您設定此參數,Amazon ECS 會將通訊協定專屬連線處理新增至 Service Connect Proxy。如果您設定此參數,Amazon ECS 會在 Amazon ECS 主控台和 CloudWatch 中新增通訊協定專屬遙測。
如果您沒有為此參數設定值,系統會使用 TCP。不過,Amazon ECS 不會針對 TCP 新增通訊協定特定遙測。
如需詳細資訊,請參閱使用 Service Connect 以短名稱連接 Amazon ECS 服務。
有效的通訊協定值:
"HTTP" | "HTTP2" | "GRPC" containerPort-
類型:整數
必要:是 (當使用
portMappings時)容器上的連接埠號碼,該號碼繫結到使用者指定或自動指派的主機連接埠。
對於使用
awsvpc網路模式的任務,您可以透過containerPort指定公開的連接埠。 containerPortRange-
類型:字串
必要:否
綁定到動態映射主機連接埠範圍之容器上的連接埠號碼範圍。
您只能使用
register-task-definitionAPI 來設定此參數。此選項可在portMappings參數中使用。如需詳細資訊,請參閱在 參考資料AWS Command Line Interface 中的 register-task-definition。指定
containerPortRange時,以下規則適用:-
您必須使用
awsvpc網路模式。 -
容器執行個體必須至少具有 1.67.0 版的容器代理程式以及至少 1.67.0-1 版的
ecs-init套件。 -
每個容器最多可以指定 100 個連接埠範圍。
-
您不會指定
hostPortRange。hostPortRange的值設定如下:-
對於具有
awsvpc網路模式的任務中的容器,hostPort會設定為與containerPort相同的值。這是靜態映射策略。
-
-
containerPortRange有效值介於 1 到 65535。 -
一個連接埠只能包含在每個容器的一個連接埠映射中。
-
您無法指定重疊的連接埠範圍。
-
範圍中的第一個連接埠必須小於範圍中的最後一個連接埠。
-
Docker 建議您在擁有大量連接埠時關閉 Docker 常駐程式組態檔案中的 Docker 代理。
如需詳細資訊,請參閱 GitHub 上的 Issue #11185
。 如需有關如何在 Docker 常駐程式組態檔案中關閉 Docker 代理的詳細資訊,請參閱《Amazon ECS 開發人員指南》中的 Docker 常駐程式。
您可以呼叫 DescribeTasks 來檢視
hostPortRange,此即綁定到容器連接埠的主機連接埠。連接埠範圍未包含在傳送到 EventBridge 的 Amazon ECS 任務事件中。如需詳細資訊,請參閱使用 EventBridge 自動化因應 Amazon ECS 錯誤。
-
hostPortRange-
類型:字串
必要:否
與網路繫結搭配使用之主機上的連接埠號碼範圍。這由 Docker 指派,並由 Amazon ECS 代理程式交付。
hostPort-
類型:整數
必要:否
要為您的容器保留之容器執行個體上的連接埠號碼。
hostPort可維持空白,或與containerPort的值相同。Docker 1.6.0 版和更新版本的預設暫時性連接埠範圍列在
/proc/sys/net/ipv4/ip_local_port_range下的執行個體上。如果此核心參數不可用,會使用預設的49153–65535暫時性連接埠範圍。請勿嘗試在暫時性連接埠範圍中指定主機連接埠。這是因為其已保留以便自動指派。一般而言,低於32768的連接埠便會位於暫時性連接埠範圍之外。SSH 的預設保留連接埠為
22,Docker 連接埠為2375和2376,Amazon ECS 容器代理程式連接埠則為51678-51680。任何使用者先前為執行中任務指定的主機連接埠也會在執行任務時保留。在任務停止後,便會釋放主機連接埠。目前預留的連接埠會顯示在 describe-container-instances 輸出的remainingResources中。容器執行個體一次最多可預留 100 個連接埠,包括預設的預留連接埠。自動指派的連接埠不計入 100 個預留連接埠的限制。 name-
類型:字串
必要:否,需要在服務中設定 Service Connect 與 VPC Lattice
用於連接埠映射的名稱。此參數僅適用於 Service Connect 與 VPC Lattice。此參數是您在服務的 Service Connect 與 VPC Lattice 組態中使用的名稱。
如需詳細資訊,請參閱使用 Service Connect 以短名稱連接 Amazon ECS 服務。
下列範例中同時使用了 Service Connect 與 VPC Lattice 的必要欄位。
"portMappings": [ { "name":string, "containerPort":integer} ] protocol-
類型:字串
必要:否
用於連接埠映射的協定。有效值為
tcp和udp。預設值為tcp。重要
Service Connect 僅支援
tcp。請記住,如果未設定此欄位,則會隱含tcp。
若您指定主機連接埠,請使用以下語法。
"portMappings": [ { "containerPort": integer, "hostPort": integer } ... ]若您希望取得自動指派的主機連接埠,請使用以下語法。
"portMappings": [ { "containerPort": integer } ... ] -
私有儲存庫憑證
repositoryCredentials-
類型:RepositoryCredentials 物件
必要:否
私有登錄檔身分驗證的儲存庫憑證。
如需詳細資訊,請參閱在 Amazon ECS 中使用非AWS 容器映像。
-
credentialsParameter -
類型:字串
必要:是 (當使用
repositoryCredentials時)包含私有儲存庫憑證密碼的 Amazon Resource Name (ARN)。
如需詳細資訊,請參閱在 Amazon ECS 中使用非AWS 容器映像。
注意
當您使用 Amazon ECS API AWS CLI或 AWS SDKs時,如果秘密與您啟動任務所在的區域相同,您可以使用完整的 ARN 或秘密的名稱。使用 時 AWS 管理主控台,您必須指定秘密的完整 ARN。
以下是任務定義的程式碼片段,其會顯示所需的參數:
"containerDefinitions": [ { "image": "private-repo/private-image", "repositoryCredentials": { "credentialsParameter": "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name" } } ]
-
主要
essential-
類型:布林值
必要:否
若容器的
essential參數標記為true,並且該容器因為任何理由失敗或停止,則所有為任務之一部分的其他容器都會停止。若容器的essential參數標記為false,則其失敗將不會影響任務中其餘的容器。若省略此參數,則容器會假設為「基本」。所有任務都必須至少有一個基本容器。若您的應用程式由多個容器組成,將一般用途用的容器分組成元件,並將不同的元件分成多個任務定義。如需詳細資訊,請參閱為 Amazon ECS 建構您的應用程式。
進入點
entryPoint-
類型:字串陣列
必要:否
傳遞至容器的進入點。此參數會映射至 docker create-container 命令中的
Entrypoint,以及 docker run 的--entrypoint選項。"entryPoint": ["string", ...]
命令
command-
類型:字串陣列
必要:否
傳遞至容器的命令。此參數會映射至 docker create-container 命令中的
Cmd,以及 docker run 的COMMAND參數。如果有多個引數,每個引數在陣列中都是分開的字串。"command": ["string", ...]
工作目錄
workingDirectory-
類型:字串
必要:否
容器內要執行命令的工作目錄。此參數會映射至 docker create-container 命令中的
WorkingDir,以及 docker run 的--workdir選項。
進階容器定義參數
下列進階容器定義參數會為用於在 Amazon ECS 容器執行個體上啟動容器的 docker run 命令提供延伸功能。
重新啟動政策
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 管理主控台,請使用逗號分隔的命令清單。這些命令會在建立任務定義後轉換為字串。以下為運作狀態檢查的範例輸入。
CMD-SHELL, curl -f http://localhost/ || exit 1使用 JSON AWS 管理主控台 面板 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是停用的。如果運作狀態檢查在
startPeriod內成功,則代表容器運作狀態良好,之後的任何故障都會計入,累積至重試次數上限。
Environment
cpu-
類型:整數
必要:否
Amazon ECS 容器代理程式保留給容器的
cpu數量。在 Linux 上,此參數會映射至 Create a container區段中的 CpuShares。對於在 Amazon ECS 受管執行個體上執行的任務,此欄位為選用項目。為任務中所有容器預訂的 CPU 總量必須低於任務階層的
cpu值。Linux 容器會按照與其配置數量相同的比例,與容器執行個體上的其他容器共用未配置的 CPU 單位。例如,若您在單一核心執行個體類型上執行單一容器任務,為該容器指定 512 個 CPU 單位。此外,該任務是在容器執行個體上運行的唯一任務。在此範例中,該容器便可在任何指定的時間內使用完整 1,024 個 CPU 單位。但是,假設您在該容器執行個體上啟動相同任務的另一個複本。每個任務都可以保證在需要的時候取得最少 512 個 CPU 單位。同樣,如果其他容器沒有使用剩餘的 CPU,每個容器都可以浮動到更高的 CPU 用量。但若兩個任務都一直維持在 100% 作用中的狀態,兩者能夠取得的單位數便會限制在 512 個 CPU 單位。
在 Linux 容器執行個體上,容器執行個體的 Docker 常駐程式會使用 CPU 值計算執行中容器的相對 CPU 共用比例。Linux 核心允許的有效 CPU 共用值,最小為 2,最大為 262144。但是,CPU 參數並非必要項目,且您可以在容器定義中使用小於 2 且大於 262144 的 CPU 值。針對小於 2 且大於 262144 的 CPU 值 (包含 null),行為會隨您的 Amazon ECS 容器代理程式版本而異:
如需其他範例,請參閱 Amazon ECS 如何管理 CPU 和記憶體資源
。 gpu-
類型:ResourceRequirement 物件
必要:否
Amazon ECS 容器代理程式保留給容器的實體
GPUs數量。為任務中所有容器保留的 GPU 數量不得超過任務啟動所在之容器執行個體上可用的 GPU 數量。如需詳細資訊,請參閱GPU 工作負載的 Amazon ECS 任務定義。 Elastic Inference accelerator-
注意
在 Amazon ECS 受管執行個體上託管的容器不支援此參數。
類型:ResourceRequirement 物件
必要:否
對於
InferenceAccelerator類型,value符合任務定義中指定之InferenceAccelerator的deviceName。如需詳細資訊,請參閱Elastic Inference 加速器名稱 (已棄用)。 essential-
類型:布林值
必要:否
假設容器的
essential參數標記為true,並且該容器因為任何理由失敗或停止。然後,會停止屬於該任務一部分的所有其他容器。若容器的essential參數標記為false,則其失敗將不會影響任務中其餘的容器。若省略此參數,則容器會假設為「基本」。所有任務都必須至少有一個基本容器。假設您有一個由多個容器組成的應用程式。然後,將用於一般用途的容器分組為元件,並把不同的元件分到多個任務定義。如需詳細資訊,請參閱為 Amazon ECS 建構您的應用程式。
"essential": true|false entryPoint-
重要
舊版的 Amazon ECS 容器代理程式無法正確處理
entryPoint參數。若您在使用entryPoint時發生任何問題,請更新您的容器代理,或改將您的命令和引數作為command陣列項目輸入。類型:字串陣列
必要:否
傳遞至容器的進入點。
"entryPoint": ["string", ...] command-
類型:字串陣列
必要:否
傳遞至容器的命令。此參數會映射至 create-container 命令中的
Cmd,以及 docker run 的COMMAND參數。如果有多個引數,確保每個引數在陣列中是分開的字串。"command": ["string", ...] workingDirectory-
類型:字串
必要:否
容器內要執行命令的工作目錄。此參數會映射到 Docker Remote API
的建立容器 區段中的 WorkingDir以及 docker run的 --workdir選項。"workingDirectory": "string" environmentFiles-
類型:物件陣列
必要:否
內含要傳遞至容器之環境變數的檔案清單。此參數會映射至 docker run 命令的
--env-file選項。您最多可以指定 10 個環境檔案。檔案副檔名必須是
.env。環境檔案中的每一行都包含VARIABLE=VALUE格式的環境變數。以#開頭的行會被視為註解,而忽略。如果在容器定義中指定了個別環境變數,它們的優先順序高於環境檔案中包含的變數。如果指定了內含相同變數的多個環境檔案,則處理順序為由上而下。建議您使用唯一的變數名稱。如需詳細資訊,請參閱將個別環境變數傳遞至 Amazon ECS 容器。
value-
類型:字串
必要:是
包含環境變數檔案的 Amazon S3 物件的 Amazon Resource Name (ARN)。
type-
類型:字串
必要:是
要使用的檔案類型。唯一支援的值為
s3。
environment-
類型:物件陣列
必要:否
傳遞至容器的環境變數。此參數會映射至 docker create-container 命令中的
Env參數,以及 docker run 命令的--env選項。重要
不建議使用使用純文字環境變數儲存敏感資訊 (例如憑證)。
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" } ]
安全
privileged-
類型:布林值
必要:否
此參數為
true時,容器便會取得主機容器執行個體的更高許可 (類似root使用者)。此參數會映射至 docker create-container 命令中的Privileged,以及 docker run 的--privileged選項。 user-
類型:字串
必要:否
要在容器內使用的使用者。此參數會映射至 docker create-container 命令中的
User,以及 docker run 的--user選項。重要
使用
host網路模式執行任務時,請勿使用根使用者 (UID 0) 執行容器。建議使用非根使用者以提高安全性。您可以使用下列格式指定
user。如果指定 UID 或 GID,您必須使用正整數指定它。-
user -
user:group -
uid -
uid:gid -
user:gid -
uid:group
-
readonlyRootFilesystem-
類型:布林值
必要:否
此參數為
true時,容器會取得根檔案系統的唯讀存取權。此參數會映射至 docker create-container 命令中的ReadonlyRootfs,以及 docker run 的--read-only選項。 dockerSecurityOptions-
注意
在 Amazon ECS 受管執行個體上執行的任務不支援此參數。
類型:字串陣列
必要:否
提供 SELinux 和 AppArmor 多層級安全系統自訂標籤的字串清單。此欄位對使用 Fargate 的任務中的容器無效。
ulimits-
類型:Ulimit 物件陣列
必要:否
容器中要設定的
ulimits清單。如果在任務定義中指定 ulimit 值,該值會覆寫 Docker 設定的預設值。此參數會映射至 docker create-container 命令中的Ulimits,以及 docker run 的--ulimit選項。有效命名值會顯示在 Ulimit 資料類型中。在 Fargate 上託管的 Amazon ECS 任務會使用作業系統設定的預設資源限制值,但是 Fargate 會覆寫的
nofile資源限制參數除外。nofile資源限制會對容器可使用的開放檔案數量設限。預設的nofile軟性限制為1024,預設的硬性限制為65535。此參數需要容器執行個體上的 Docker Remote API 1.18 版或更新版本。若要檢查容器執行個體的 Docker Remote API 版本,請登入容器執行個體,並執行下列命令:
sudo docker version --format '{{.Server.APIVersion}}'
dockerLabels-
注意
在 Amazon ECS 受管執行個體上託管的容器不支援此參數。
類型:字串到字串映射
必要:否
要新增到容器的標籤索引鍵/值映射。此參數會映射至 docker create-container 命令中的
Labels,以及 docker run 的--label選項。此參數需要容器執行個體上的 Docker Remote API 1.18 版或更新版本。
"dockerLabels": {"string": "string" ...}
Network settings (網路設定)
disableNetworking-
注意
在 Amazon ECS 受管執行個體上執行的任務不支援此參數。
類型:布林值
必要:否
當此參數為 true 時,聯網便會在容器中關閉。
預設值為
false。"disableNetworking": true|false links-
注意
在 Amazon ECS 受管執行個體上執行的任務不支援此參數。
類型:字串陣列
必要:否
link參數可讓容器彼此通訊,而無需連接埠映射。只有在任務定義的網路模式設定為bridge時才支援此參數。name:internalName建構模組與 Docker 連結中的name:alias類似。最多可輸入 255 個字母 (大小寫)、數字、連字號與底線。重要
在相同容器執行個體上配置的容器可和彼此通訊,而無需連結或主機連接埠映射。容器執行個體上的網路隔離是由安全群組和 VPC 設定所控制。
"links": ["name:internalName", ...] hostname-
注意
在 Amazon ECS 受管執行個體上執行的任務不支援此參數。
類型:字串
必要:否
您容器要使用的主機名稱。此參數會映射至 docker create-container 中的
Hostname,以及 docker run 的--hostname選項。"hostname": "string" dnsServers-
注意
在 Amazon ECS 受管執行個體上執行的任務不支援此參數。
類型:字串陣列
必要:否
提供給容器的 DNS 伺服器清單。
"dnsServers": ["string", ...] extraHosts-
注意
使用
awsvpc網路模式的任務不支援此參數。類型:物件陣列
必要:否
要附加到容器上
/etc/hosts檔案的主機名稱和 IP 地址映射清單。此參數會映射至 docker create-container 命令中的
ExtraHosts,以及 docker run 的--add-host選項。"extraHosts": [ { "hostname": "string", "ipAddress": "string" } ... ]hostname-
類型:字串
必要:是 (當使用
extraHosts時)要在
/etc/hosts項目中使用的主機名稱。 ipAddress-
類型:字串
必要:是 (當使用
extraHosts時)要在
/etc/hosts項目中使用的 IP 地址。
儲存與記錄
readonlyRootFilesystem-
類型:布林值
必要:否
此參數為 true 時,容器會取得根檔案系統的唯讀存取權。此參數會映射至 docker create-container 命令中的
ReadonlyRootfs,以及 docker run 的--read-only選項。預設值為
false。"readonlyRootFilesystem": true|false mountPoints-
類型:物件陣列
必要:否
容器中資料磁碟區的掛載點。此參數會映射至 Docker API 中 create-container 的
Volumes,以及 docker run 的--volume選項。Windows 容器可在
$env:ProgramData所在的相同磁碟上掛載整個目錄。Windows 容器無法在不同的磁碟機上掛載目錄,且掛載點不能跨磁碟機使用。您必須指定掛載點,將 Amazon EBS 磁碟區直接連接至 Amazon ECS 任務。sourceVolume-
類型:字串
必要:是 (當使用
mountPoints時)要掛載的磁碟區名稱。
containerPath-
類型:字串
必要:是 (當使用
mountPoints時)掛載磁碟區之容器中的路徑。
readOnly-
類型:布林值
必要:否
如果此數值為
true,容器擁有磁碟區的唯讀存取權。如果此值為false,則容器可寫入磁碟區。預設值為false。對於在執行 Windows 作業系統之 EC2 執行個體上執行的任務,將該值保留為預設值
false。
volumesFrom-
類型:物件陣列
必要:否
要從其他容器掛載的資料磁碟區。此參數會映射至 docker create-container 命令中的
VolumesFrom,以及 docker run 的--volumes-from選項。sourceContainer-
類型:字串
必要:是 (當使用
volumesFrom時)要從其中掛載磁碟區的容器名稱。
readOnly-
類型:布林值
必要:否
如果此數值為
true,容器擁有磁碟區的唯讀存取權。如果此值為false,則容器可寫入磁碟區。預設值為false。
"volumesFrom": [ { "sourceContainer": "string", "readOnly": true|false } ] logConfiguration-
類型:LogConfiguration 物件
必要:否
容器的日誌組態規格。
例如,使用日誌組態的任務定義,請參閱Amazon ECS 任務定義範例。
此參數會映射至 docker create-container 命令中的
LogConfig,以及 docker run 的--log-driver選項。根據預設,容器會和 Docker 常駐程式使用一樣的日誌記錄驅動程式。不過,容器可以在容器定義中使用此參數指定日誌驅動程式,和 Docker 常駐程式使用不同的日誌驅動程式。若要讓容器使用不同的日誌驅動程式,必須在容器執行個體上適當設定日誌系統 (或在不同的日誌伺服器上使用遠端記錄選項)。指定容器的日誌組態時,請考量下列事項:
-
Amazon ECS 支援 Docker 常駐程式可用的日誌驅動程式子集。
-
在您的容器執行個體上,此參數需要 1.18 版或更新版本的 Docker Remote API。
"logConfiguration": { "logDriver": "awslogs",""splunk", "awsfirelens", "options": {"string": "string" ...}, "secretOptions": [{ "name": "string", "valueFrom": "string" }] }logDriver-
類型:字串
有效值:
"awslogs","splunk","awsfirelens"必要:是 (當使用
logConfiguration時)容器要使用的日誌驅動程式。根據預設,先前列出的有效值是 Amazon ECS 容器代理程式可用來通訊的日誌驅動程式。
支援的日誌驅動程式為
awslogs、splunk與awsfirelens。如需有關如何在任務定義中使用
awslogs日誌驅動程式將您的容器日誌傳送到 CloudWatch Logs 的詳細資訊,請參閱將 Amazon ECS 日誌傳送至 CloudWatch 。如需有關使用
awsfirelens日誌驅動程式的詳細資訊,請參閱將 Amazon ECS 日誌傳送至 AWS 服務或 AWS Partner。注意
如果您有未列出的自訂驅動程式,您可以分支 GitHub 上可取得的
Amazon ECS 容器代理程式專案,並自訂以搭配此驅動程式一起使用。我們鼓勵您為想要進行的變更提交提取請求。但是,我們目前不支援執行此軟體經修改的複本。 此參數需要容器執行個體上的 Docker Remote API 1.18 版或更新版本。
options-
類型:字串到字串映射
必要:否
要傳送到日誌驅動程式的索引鍵/值映射組態選項。
可供指定的選項視日誌驅動程式而定。使用
awslogs路由器將日誌路由至 Amazon CloudWatch 時,可指定的部分選項包括:awslogs-create-group-
必要:否
指定您是否希望自動建立日誌群組。若未指定此選項,則預設為
false。注意
在您嘗試使用
awslogs-create-group之前,您的 IAM 政策必須包含logs:CreateLogGroup許可。 awslogs-region-
必要:是
指定 AWS 區域
awslogs日誌驅動程式要傳送 Docker 日誌的 。您可以選擇將所有的日誌從不同區域中的叢集傳送至 CloudWatch Logs 中的單一區域。如此一來,日誌全都顯示在單一位置中。或者,您可以依照區域分隔日誌,以獲得更高的精細程度。請確定指定的日誌群組存在於您使用此選項指定的區域。 awslogs-group-
必要:是
請務必指定
awslogs日誌驅動程式傳送其日誌串流的日誌群組。 awslogs-stream-prefix-
必要:是
使用
awslogs-stream-prefix選項將日誌串流與指定字首、容器名稱以及容器所屬 Amazon ECS 任務的 ID 建立關聯。如果您使用此選項指定前綴,則日誌串流會使用下列格式。prefix-name/container-name/ecs-task-id如果您未使用此選項指定字首,則該日誌串流會以容器執行個體上 Docker 常駐程式指派的容器 ID 命名。因為只使用 Docker 容器 ID (僅容器執行個體提供) 很難對日誌回溯追蹤到傳送該日誌的容器,所以建議您使用此選項指定前綴。
對於 Amazon ECS 服務,您可以使用服務名稱作為前綴。藉此這可讓您對日誌串流回溯追蹤到容器所屬的服務、傳送該日誌之容器的名稱,以及容器所屬任務的 ID。
您必須指定日誌的串流字首,才可在使用 Amazon ECS 主控台時,讓日誌顯示在 Log (日誌) 窗格中。
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此選項定義從容器到
awslogs日誌驅動程式的日誌訊息傳送模式。當從容器的日誌流程中斷時,您選擇的傳送模式會影響應用程式可用性。如果使用
blocking模式,且 CloudWatch 的日誌流程中斷,則從容器程式碼寫入stdout與stderr串流的呼叫將會封鎖。應用程式的日誌記錄執行緒將因此封鎖。這可能會導致應用程式沒有回應,並導致容器運作狀態檢查失敗。如果您使用
non-blocking模式,則容器的日誌將儲存在使用max-buffer-size選項設定的記憶體內中間緩衝區中。這可以防止當日誌無法傳送至 CloudWatch 時應用程式發生無回應的狀況。如果您想要確保服務的可用性且可以接受一些日誌遺失,我們建議您使用此模式。如需詳細資訊,請參閱 Preventing log loss with non-blocking mode in theawslogscontainer log driver。 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 時,可透過
region指定 AWS 區域 ,透過stream指定日誌串流名稱。在將日誌匯出至 Amazon OpenSearch Service 時,可指定多個選項,例如
Name、Host(不含通訊協定的 OpenSearch Service 端點)Port、Index、Type、Aws_auth、Aws_region、Suppress_Type_Name與tls。在將日誌匯出至 Amazon S3 時,可透過
bucket選項指定儲存貯體。您也可以指定region、total_file_size、upload_timeout與use_put_object作為選項。在您的容器執行個體上,此參數需要 1.19 版或更新版本的 Docker Remote API。
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-
類型: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。
資源需求
resourceRequirements-
類型:ResourceRequirement 物件陣列
必要:否
指派給容器的資源類型和數量。目前僅支援資源 GPU。
type-
類型:字串
必要:是
要指派給容器的資源類型。支援的值為
GPU。 value-
類型:字串
必要:是
所指定資源類型的值。
如果使用
GPU類型,值是 Amazon ECS 容器代理程式將為容器預留的實體GPUs數目。為任務中所有容器預留的 GPU 數量,不可超過任務啟動所在之容器執行個體上可用的 GPU 數量。GPU 不適用於在 Fargate 上執行的任務。
容器逾時
startTimeout-
類型:整數
必要:否
範例值:
120解析容器的相依性時在放棄之前等待的持續時間 (以秒為單位)。
例如,您在任務定義中指定兩個容器,其中的
containerA對達到COMPLETE、SUCCESS或HEALTHY狀態的containerB有相依性。如果為containerB指定startTimeout值,但在該時間內沒有達到所需狀態,則containerA不會啟動。注意
如果容器不符合相依性限制或在符合限制之前逾時,Amazon ECS 不會讓相依容器進入下一個狀態。
最大值為 600 秒 (10 分鐘)。
stopTimeout-
類型:整數
必要:否
範例值:
120當容器本身未正常結束時,強制終止容器之前的等待期間 (以秒為單位)。
如果未指定參數,則會使用預設值 30 秒。最大值為 86400 秒 (24 小時)。
容器相依性
dependsOn-
類型:ContainerDependency 物件陣列
必要:否
針對容器啟動和關閉而定義的相依性。容器可以包含多個相依性。針對容器啟動而定義相依性時,它會保留給容器關閉。如需範例,請參閱「容器相依性」。
注意
如果容器不符合相依性限制或在符合限制之前逾時,Amazon ECS 不會讓相依容器進入下一個狀態。
此參數要求任務或服務使用平台版本
1.3.0或更新版本 (Linux) 或1.0.0(Windows)。"dependsOn": [ { "containerName": "string", "condition": "string" } ]containerName-
類型:字串
必要:是
必須符合指定條件的容器名稱。
condition-
類型:字串
必要:是
容器的相依性條件。以下是可用的條件及其行為:
-
START- 此條件會模擬連結和磁碟區目前的行為。該條件可驗證相依容器先啟動後,才允許其他容器啟動。 -
COMPLETE- 此條件驗證相依容器執行到完成 (結束) 後,才允許其他容器啟動。這適合用於只是執行指令碼,然後就退出的非必要容器。無法在基本容器上設定此條件。 -
SUCCESS- 此條件與COMPLETE相同,但還要求容器必須以zero狀態結束。無法在基本容器上設定此條件。 -
HEALTHY- 此條件會在驗證相依容器傳遞了其容器運作狀態檢查後,才允許其他容器啟動。這會要求相依容器在任務定義中設定運作狀態檢查。此條件只會在任務啟動時確認。
-
系統控制
systemControls-
類型:SystemControl 物件
必要:否
要在容器中設定的命名空間核心參數清單。此參數會映射至 docker create-container 命令中的
Sysctls,以及 docker run 的--sysctl選項。例如,您可以規劃net.ipv4.tcp_keepalive_time設定以維持壽命較長的連線。不建議您指定單一任務中多個容器的網路相關
systemControls參數,而單一任務也使用awsvpc或host網路模式。執行此操作的缺點如下:-
如果設定任何容器的
systemControls,該設定會套用至任務中的所有容器。如果您針對單一任務中的多個容器設定不同的systemControls,則最後啟動的容器會判斷哪些systemControls生效。
如果您為任務中的容器設定要使用的 IPC 資源命名空間,以下各項條件套用到您的系統控制。如需詳細資訊,請參閱IPC 模式。
-
針對使用
hostIPC 模式的任務,不支援 IPC 命名空間systemControls。 -
針對使用
taskIPC 模式的任務,IPC 命名空間systemControls值套用到任務內的所有容器。
"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",以及開頭為"fs.mqueue.*"的Sysctls有效的網路命名空間值:以
"net.*"開頭的Sysctls。在 Fargate 上,僅接受容器內既有的具命名空間的Sysctls。Fargate 支援所有這些值。
value-
類型:字串
必要:否
namespace中所指定命名空間核心參數的值。
-
互動性
interactive-
類型:布林值
必要:否
此參數為
true時,您可部署需要配置stdin或tty的容器化應用程式。此參數會映射至 docker create-container 命令中的OpenStdin,以及 docker run 的--interactive選項。預設值為
false。
虛擬終端機
pseudoTerminal-
類型:布林值
必要:否
當此參數為
true時,會配置 TTY。此參數會映射至 docker create-container 命令中的Tty,以及 docker run 的--tty選項。預設值為
false。
Linux 參數
linuxParameters-
類型:LinuxParameters 物件
必要:否
套用到容器的 Linux 特定修改項目,例如 Linux 核心功能。
capabilities-
類型:KernelCapabilities 物件
必要:否
新增至 Docker 或從其提供的預設組態中卸除的容器 Linux 功能。
devices-
類型:Device 物件的陣列
必要:否
任何要公開給容器的主機裝置。此參數會映射至 docker create-container 命令中的
Devices,以及 docker run 的--device選項。 initProcessEnabled-
類型:布林值
必要:否
在容器內執行
init處理序,該處理序可轉寄訊號及獲得處理序。此參數會對應 docker run 的--init選項。 maxSwap-
注意
在 Amazon ECS 受管執行個體上執行的任務不支援此參數。
類型:整數
必要:否
容器可以使用的交換記憶體總量 (以 MiB 為單位)。此參數將會轉換為 docker run 的
--memory-swap選項,其中值是容器記憶體與maxSwap值的總和。 swappiness-
注意
在 Amazon ECS 受管執行個體上執行的任務不支援此參數。
類型:整數
必要:否
這可讓您調整容器的記憶體交換行為。
swappiness值若為0將導致交換不會發生,除非絕對需要。swappiness值若為100將導致非常積極地交換頁面。有效的值為介於0與100之間的整數。如果未指定swappiness參數,則會使用預設值60。如果未對maxSwap指定值,則會忽略此參數。此參數會對應 docker run 的--memory-swappiness選項。 -
注意
在 Amazon ECS 受管執行個體上執行的任務不支援此參數。
類型:整數
必要:否
/dev/shm磁碟區大小 (以 MiB 為單位)。此參數會對應 docker run 的--shm-size選項。 tmpfs-
注意
在 Amazon ECS 受管執行個體上執行的任務不支援此參數。
類型:Tmpfs 物件的陣列
必要:否
tmpfs 掛載的容器路徑、掛載選項和大小 (以 MiB 為單位)。此參數會對應 docker run 的
--tmpfs選項。