Amazon ECS任務定義參數 - Amazon Elastic Container Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

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任務,有效值為 nonebridgeawsvpchost。如果未指定網路模式,則預設網路模式為 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 網路堆疊。公開的容器連接埠會直接映射至連接的彈性網路介面連接埠。因此,您無法使用動態主機連接埠對應。

hostawsvpc 網路模式為容器提供最高的網路效能,因為它們使用 Amazon EC2 網路堆疊。使用 hostawsvpc 網路模式,公開的容器連接埠會直接映射到對應的主機連接埠 (適用於 host 網路模式) 或已連接的彈性網路介面連接埠 (適用於 awsvpc 網路模式)。因此,您無法使用動態主機連接埠對應。

如果使用 Fargate 啟動類型,則需要 awsvpc 網路模式。如果使用EC2啟動類型,允許的網路模式取決於基礎EC2執行個體的作業系統。如果是 Linux,則可以使用任何網路模式。如果是 Windows,則會使用 defaultawsvpc 模式。

執行時間平台

operatingSystemFamily

類型:字串

必要:有條件

預設: LINUX

在 Fargate 上託管的 Amazon ECS任務需要此參數。

在註冊任務定義時,您會指定作業系統系列。

在 Fargate 上託管的 Amazon WINDOWS_SERVER_2019_FULLECS任務的有效值為 LINUXWINDOWS_SERVER_2019_CORE、、 WINDOWS_SERVER_2022_FULLWINDOWS_SERVER_2022_CORE

在 上託管的 Amazon ECS任務的有效值EC2為 LINUXWINDOWS_SERVER_2022_COREWINDOWS_SERVER_2019_FULLWINDOWS_SERVER_2022_FULLWINDOWS_SERVER_2019_COREWINDOWS_SERVER_2016_FULLWINDOWS_SERVER_2004_COREWINDOWS_SERVER_20H2_CORE

服務中使用的所有任務定義都必須與此參數具有相同的值。

如果任務定義為服務的一部分,此值必須與服務 platformFamily 值相符。

cpuArchitecture

類型:字串

必要:有條件

預設:X86_64

在 Fargate 上託管的 Amazon ECS任務需要此參數。如果參數保留為 null,則會在 Fargate 上託管的任務啟動時自動指派預設值。

當您註冊任務定義時,您可以指定 CPU 架構。有效值為 X86_64ARM64

服務中使用的所有任務定義都必須與此參數具有相同的值。

當您有 Fargate 啟動類型或EC2啟動類型的 Linux 任務時,您可以將 值設定為 ARM64。如需詳細資訊,請參閱適用於 64 位元ARM工作負載的 Amazon ECS任務定義

任務大小

註冊任務定義時,您可以指定任務所用的總計CPU和記憶體。這和容器定義層級的 cpumemory 值是分開的。對於託管在 Amazon EC2執行個體上的任務,這些欄位是選用欄位。對於在 Fargate (Linux 和 Windows 皆可) 上託管的任務,這些欄位為必填欄位,而且受支援的 cpumemory 具有特定值。

注意

Windows 容器的任務層級CPU和記憶體參數會遭到忽略。我們建議為 Windows 容器指定容器層級的資源。

任務定義允許使用以下參數:

cpu

類型:字串

必要:有條件

注意

Windows 容器不支援此參數。

任務要呈現的CPU單位硬限制。您可以將JSON檔案中CPU的值指定為單位CPU或虛擬 CPUs() 的字串vCPUs。例如,您可以指定單位或 1024CPU1 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 或 GB 3 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:tagrepository-url/image@digest 指定其他存放庫。允許最多 255 個字元 (大小寫)、數字、連字號、底線、等號、句號、正斜線、井號。此參數會在 docker create-container 命令和 docker 執行命令的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:latestaws_account_id.dkr.ecr.region.amazonaws.com/my-web-app@sha256:94afd1f2e64d908bc90dbca0035a5b567EXAMPLE) 來指定。

  • 上的官方儲存庫中的映像 Docker Hub 使用單一名稱 (例如 ubuntumongo)。

  • 上的其他儲存庫中的影像 Docker Hub 符合組織名稱 (例如 amazon/amazon-ecs-agent)。

  • 其他線上儲存庫中的映像更進一步要求使用網域名稱 (例如,quay.io/assemblyline/ubuntu)。

記憶體

memory

類型:整數

必要:否

提供給容器使用的記憶體數量 (MiB)。如果您的容器嘗試使用超過此處指定的記憶體,容器便會終止。為任務中所有容器預留的記憶體總量必須低於任務 memory 值 (如果已指定一個)。此參數會在 docker create-container 命令Memory中映射至 ,以及用於執行 docker --memory的選項。

如果使用 Fargate 啟動類型,這是選用參數。

如果您使用的是EC2啟動類型,則必須指定任務層級記憶體值或容器層級記憶體值。如果您同時指定容器層級的 memorymemoryReservation 值,則 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的選項。

如果未指定任務層級的記憶體值,您必須為容器定義中的 memorymemoryReservation 之一或兩者指定非零整數。若您同時指定兩者,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啟動類型),請僅指定 containerPorthostPort 一律會忽略 ,容器連接埠會自動對應至主機上的隨機高編號連接埠。

Windows 上的連接埠映射會使用 NetNAT 閘道地址,而非 localhost。Windows 沒有連接埠映射回送,所以您無法從主機本身存取容器的映射連接埠。

此參數的大多數欄位 (包括 containerPorthostPortprotocol) 都會映射至 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 個連接埠範圍。

  • 您不會指定 hostPortRangehostPortRange 的值設定如下:

    • 對於具有 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 連接埠 23752376,以及 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

類型:字串

必要:否

用於連接埠映射的協定。有效值為 tcpudp。預設值為 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 符合任務定義中指定之 InferenceAcceleratordeviceName。如需詳細資訊,請參閱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

類型:字串陣列

必要:否

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 啟動類型的任務,支援的日誌驅動程式為 awslogssplunkawsfirelens

對於使用EC2啟動類型的任務,支援的日誌驅動程式為 awslogsfluentdgelfjson-filejournaldlogentriessyslogsplunkawsfirelens

如需如何在任務定義中使用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-formatawslogs-multiline-pattern 選項。

注意

多行記錄會執行常規運算式剖析並比對所有日誌訊息。這可能會對記錄效能造成負面影響。

awslogs-multiline-pattern

必要:否

此選項定義使用常規運算式的多行開始模式。日誌訊息由符合模式的一行以及不符合模式的任何後續行所組成。符合的行是日誌訊息之間的分隔符號。

如需詳細資訊,請參閱 awslogs-multiline-pattern

如果同時設定 awslogs-datetime-format,會忽略此選項。

無法同時設定 awslogs-datetime-formatawslogs-multiline-pattern 選項。

注意

多行記錄會執行常規運算式剖析並比對所有日誌訊息。這可能會對記錄效能造成負面影響。

mode

必要:否

有效值:non-blocking | blocking

此選項定義從容器到日誌的 CloudWatch 日誌訊息傳遞模式。當從容器到 的日誌流程 CloudWatch 中斷時,您選擇的交付模式會影響應用程式的可用性。

如果您使用 blocking 模式,且日誌的流量 CloudWatch 中斷,則會封鎖從容器程式碼寫入 stdoutstderr串流的呼叫。應用程式的日誌記錄執行緒將因此封鎖。這可能會導致應用程式沒有回應,並導致容器運作狀態檢查失敗。

如果您使用 non-blocking 模式,則容器的日誌將儲存在使用 max-buffer-size 選項設定的記憶體內中間緩衝區中。這可防止應用程式在日誌無法傳送至 時變得無回應 CloudWatch。如果您想要確保服務的可用性且可以接受一些日誌遺失,我們建議您使用此模式。如需詳細資訊,請參閱awslogs容器日誌驅動程式 中的使用非封鎖模式防止日誌遺失

max-buffer-size

必要:否

預設值:1m

使用 non-blocking 模式時,max-buffer-size 日誌選項會控制用於中繼訊息儲存的緩衝區大小。請務必根據您的應用程式指定適當的緩衝區大小。當緩衝區填滿時,無法儲存進一步的日誌。無法儲存的日誌將會遺失。

若要使用日誌路由器路由splunk日誌,您需要指定 splunk-tokensplunk-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 時,您可以指定選項,例如 NameHost(不含通訊協定OpenSearch 的服務端點)Port、、IndexTypeAws_authAws_region、、 Suppress_Type_Nametls

當您將日誌匯出至 Amazon S3 時,您可以使用 bucket選項指定儲存貯體。您也可以指定 regionupload_timeouttotal_file_sizeuse_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

類型: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:::amzn-s3-demo-bucket/fluent.conf|filepath"}。如需詳細資訊,請參閱Amazon ECS任務定義範例:將日誌路由至 FireLens

type

類型:字串

必要:是

要使用的日誌路由器。有效值為 fluentdfluentbit

安全

如需容器安全的詳細資訊,請參閱 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=trueECS_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 時)

ulimittype

hardLimit

類型:整數

必要:是 (當使用 ulimits 時)

ulimit 類型的硬性限制。值可以以位元組、秒或計數形式指定,具體取決於 typeulimit

softLimit

類型:整數

必要:是 (當使用 ulimits 時)

ulimit 類型的軟性限制。值可以以位元組、秒或計數形式指定,具體取決於 typeulimit

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

要提供給裝置容器的明確許可。在預設情況下,容器在裝置上具有 readwritemknod 許可。

類型:字串陣列

有效值: 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 將導致頻繁交換頁面。接受的值為介於 0100 之間的整數。如果您未指定值,則會使用預設值 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 對達到 COMPLETESUCCESSHEALTHY 狀態的 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 參數,而單一任務也使用 awsvpchost 網路模式。執行此操作的缺點如下:

  • 對於使用包括 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 時,您可部署需要配置 stdintty 的容器化應用程式。此參數會在 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 - (必要) 應用程式所用連接埠的清單。這些連接埠的網路流量會轉發到 ProxyIngressPortProxyEgressPort

  • 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。如果 scopetask,則必須省略此參數。

driver

類型:字串

必要:否

要使用的 Docker 磁碟區驅動程式。驅動程式值必須符合 Docker 提供的驅動程式名稱,因為此名稱用於任務置放。如果驅動程式是透過使用 Docker 外掛程式 進行安裝CLI,請使用 從您的容器執行個體docker plugin ls擷取驅動程式名稱。如果驅動程式是使用其他方法安裝的,請使用 Docker 外掛程式探索來擷取驅動程式名稱。

driverOpts

類型:字串

必要:否

要傳遞的 Docker 驅動程式特定選項映射。此參數會在 Docker 的建立磁碟區區段DriverOpts中映射至 。

labels

類型:字串

必要:否

自訂中繼資料,新增到您的 Docker 磁碟區。

efsVolumeConfiguration

類型: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

類型:字串

必要:是

授權憑證選項。

選項:
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的資源命名空間。有效值為 hosttasknone。如果host已指定 ,則位於在相同容器執行個體上指定hostIPC模式之任務中的所有容器都會與主機 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

必要:否

要用於任務中容器的程序命名空間。有效值為 hosttask。在 Linux 容器的 Fargate 上,唯一有效的值為 task。例如,監控附屬可能需要 pidMode 存取相同任務中執行之其他容器的相關資訊。

如果host已指定 ,在相同容器執行個體上指定 host PID 模式的任務中的所有容器都會與主機 Amazon EC2執行個體共用相同的程序命名空間。

如果已指定 task,則指定任務內的所有容器會共用相同的程序命名空間。

如果未指定任何值,每個容器的預設值會是私有命名空間。

如果使用 host PID 模式,則可能會有不必要的程序命名空間暴露的風險增加。

注意

Windows 容器不支援此參數。

注意

如果任務使用平台版本 1.4.0 或更高版本 (Linux),只有託管於 AWS Fargate 的任務才支援此參數。Fargate 上的 Windows 容器不支援此參數。