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

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

Amazon ECS 服務定義參數

服務定義定義如何執行 Amazon ECS 服務。下列參數可以在服務定義中指定。

啟動類型

launchType

類型:字串

有效值:EC2 | FARGATE | EXTERNAL

必要:否

您服務執行所在的啟動類型。如果未指定啟動類型,預設會使用預設的 capacityProviderStrategy。如需詳細資訊,請參閱Amazon ECS 推出類型

若有指定 launchType,則必須省略 capacityProviderStrategy 參數。

容量提供者策略

capacityProviderStrategy

類型: 物件陣列

必要:否

要用於服務的容量提供者策略。

容量提供者策略包含一個或多個容量提供者,以及指派給這些容量提供者的 baseweight。容量提供者必須與要在容量提供者策略中使用的叢集相關聯。用 PutClusterCapacityProviders API於將容量提供者與叢集建立關聯。只能使用具有 ACTIVEUPDATING 狀態的容量提供者。

若有指定 capacityProviderStrategy,則必須省略 launchType 參數。如果沒有指定 capacityProviderStrategylaunchType,則會使用叢集的 defaultCapacityProviderStrategy

如果您想要指定使用 Auto Scaling 群組的容量提供者,則必須已經建立該容量提供者。您可以透過 CreateCapacityProvider API作業建立新的容量提供者。

若要使用 AWS Fargate 容量提供者,請指定FARGATEFARGATE_SPOT容量提供者。 AWS Fargate 容量提供者適用於所有帳戶,只需要與叢集建立關聯即可使用。

此 PutClusterCapacityProviders API作業可用來在建立叢集之後更新叢集的可用容量提供者清單。

capacityProvider

類型:字串

必要:是

容量提供者的簡短名稱或完整 Amazon 資源名稱 (ARN)。

weight

類型:整數

有效範圍:介於 0 到 1,000 之間的整數。

必要:否

加權值會指定應使用指定容量提供者其已啟動任務總數的相對百分比。

例如,假設您的策略包含兩個容量提供者,且兩者的加權值都是一。當基本條件符合時,工作會平均分配給兩個容量提供者。使用相同的邏輯,假設您指定 A 的權重為 capacityProvider 1,capacityProviderB 的權重為 4。然後,對於使用 A 運行的每個任務,四capacityProvider個任務使用 capacityProviderB

base

類型:整數

有效範圍:介於 0 到 100,000 之間的整數。

必要:否

基礎值指定至少要在指定容量提供者上執行多少任務數量。容量提供者策略中只有一個容量提供者可以定義基礎。

任務定義

taskDefinition

類型:字串

必要:否

要在family服務中執行的任務定義的 and revision (family:revisionARN) 或完整 Amazon 資源名稱 ()。如果 revision 未指定,則會使用指定系列的最新 ACTIVE 修訂版。

在使用循環更新 (ECS) 部署控制器時,必須指定任務定義。

平台作業系統

platformFamily

類型:字串

必要:有條件

預設:Linux

此參數是在 Fargate 託管的 Amazon ECS 服務所必需的。

對於 Amazon 上託管的 Amazon ECS 服務,此參數將被忽略EC2。

執行服務的容器上的作業系統。有效值為 LINUXWINDOWS_SERVER_2019_FULLWINDOWS_SERVER_2019_COREWINDOWS_SERVER_2022_FULLWINDOWS_SERVER_2022_CORE

為服務指定的每個任務的 platformFamily 值必須與服務 platformFamily 值相符。例如,如果您將 platformFamily 設定為 WINDOWS_SERVER_2019_FULL,則所有任務的 platformFamily 值都必須為 WINDOWS_SERVER_2019_FULL

平台版本

platformVersion

類型:字串

必要:否

您服務中任務正在其上執行的平台版本。平台版本僅會為使用 Fargate 啟動類型的任務指定。如果尚未指定,預設會使用最新版本 (LATEST)。

AWS Fargate 平台版本用於指 Fargate 任務基礎結構的特定運行時環境。在您執行任務或建立服務時指定 LATEST 平台版本,即可取得任務所能使用的最新平台版本。當您擴展服務規模時,這些任務會收到於服務的目前部署上所指定的平台版本。如需詳細資訊,請參閱Amazon 的 Fargate 平台版本 ECS

注意

未針對使用EC2啟動類型的工作指定平台版本。

叢集

cluster

類型:字串

必要:否

要在其上執行服務的叢集的簡短名稱或完整 Amazon 資源名稱 (ARN)。若您未指定叢集,即假設您會使用 default 叢集。

服務名稱

serviceName

類型:字串

必要:是

您的服務名稱。可以包含最多可達 255 個字元 (大小寫)、數字、連字號和底線。叢集中不得有相同的服務名稱,但一個區域內或多個區域間的多個叢集中可以有類似的服務名稱。

排程策略

schedulingStrategy

類型:字串

有效值:REPLICA | DAEMON

必要:否

使用的排程策略。如果未指定排程策略,則會使用 REPLICA 策略。如需詳細資訊,請參閱Amazon ECS 服務

現已推出兩個服務排程器策略概念:

  • REPLICA - 複本排程策略會置放並在整個叢集中維持所需的任務數量。根據預設,服務排程器會將任務分散至各個可用區域。您可以使用任務置放策略和限制條件,來自訂任務置放決策。如需詳細資訊,請參閱複本策略

  • DAEMON - 常駐程式排程策略會在每個符合您於叢集中所指定所有任務置放限制條件的作用中容器執行個體上,準確地部署一個任務。使用這項策略時,不需指定所需的任務數量、任務置放策略或使用 Service Auto Scaling 政策。如需詳細資訊,請參閱守護進程策

    注意

    Fargate 任務不支援 DAEMON 排程策略。

所需計數

desiredCount

類型:整數

必要:否

於指定的任務定義中,要放置在您服務上並保持執行的實例數量。

如果使用 REPLICA 排程策略,則需要此參數。如果該服務使用 DAEMON 排程策略,則此參數是選擇性的。

部署組態

deploymentConfiguration

類型:物件

必要:否

選用的部署參數,可控制在部署期間執行多少任務以及停止和啟動任務的順序。

maximumPercent

類型:整數

必要:否

如果服務使用滾動更新 (ECS) 部署類型,則 maximumPercent 參數代表在部署期間,服務中允許處於 RUNNINGSTOPPINGPENDING 狀態的任務數量上限。以百分比表示 desiredCount 即無條件捨去至最接近的整數。您可以使用此參數來定義部署批次大小。例如,如果您的服務使用 REPLICA 服務排程器、有四個任務的 desiredCount,且 maximumPercent 值為 200%,則排程器可能先啟動四項新任務,再停止四項舊任務。前提是有執行此操作所需的叢集資源。使用 REPLICA 服務排程器的服務,其預設 maximumPercent 值為 200%。

如果您的服務使用 DAEMON 服務排程器類型,maximumPercent 應該維持 100%。這是預設值。

部署期間的任務最大數量等於 desiredCount 乘以 maximumPercent/100,無條件捨去到最接近的整數值。

如果服務使用藍色/綠色 (CODE_DEPLOY) 或EXTERNAL部署類型和使用EC2啟動類型的工作,則最大百分比值會設定為預設值。此值可用來定義容器執行個體處於RUNNING狀態時,服務中保持在狀態的工作數目上限。DRAINING

注意

您無法為使用藍/綠 (CODE_DEPLOY) 或EXTERNAL部署類型且具有使用EC2啟動類型的工作的服務指定自訂maximumPercent值。

如果服務中的任務使用 Fargate 啟動類型,則不使用百分比上限值,雖然在描述服務時會傳回此值。

minimumHealthyPercent

類型:整數

必要:否

如果服務使用滾動更新 (ECS) 部署類型,則 minimumHealthyPercent 表示部署期間必須保持在 RUNNING 狀態的服務任務數量下限。這表示為無條件進位到最接近整數的 desiredCount 的百分比。您可以使用此參數,而無須使用額外的叢集容量進行部署。例如,如果您的服務有四項任務的 desiredCount,且 minimumHealthyPercent 為 50%,則排程器可能先停止兩項現有的任務以釋出叢集容量,再啟動兩項新的任務。

對於使用負載平衡器的服務,請考慮下列事項:

  • 如果服務中任務內的所有必要容器都通過了運作狀態檢查,則服務就會被視為狀態良好。

  • 如果工作沒有已定義運作狀態檢查的必要容器,則服務排程器會在任務達到 RUNNING 狀態時等待 40 秒,然後再將任務計入運作狀態最低百分比總計。

  • 如果任務有一或多個已定義運作狀態檢查的必要容器,服務排程器會等待任務達到正常狀態,然後將其計算為運作狀態最低百分比總計。當任務內的所有必要容器都通過其運作狀態檢查時,工作就會被視為狀態良好。服務排程器可以等待的時間,是由容器運作狀態檢查設定所決定。如需詳細資訊,請參閱運作狀態檢查

對於使用負載平衡器的服務,請考慮下列事項:

  • 如果任務沒有定義運作狀態檢查的必要容器,則服務排程器會等待負載平衡器目標群組運作狀態檢查回傳狀況良好狀態,然後將任務計算為良好狀態最低百分比總計。

  • 如果工作具有已定義運作狀態檢查的必要容器,服務排程器會等待工作達到正常狀態,以及負載平衡器目標群組運作狀態檢查回傳狀況良好狀態,然後再將工作計算為最低良好狀態百分比總計。

minimumHealthyPercent 的複本服務預設值是 100%。使用服務排程之DAEMON服務的預設minimumHealthyPercent值為 0% (代表 AWS SDKs、APIs和 50%) AWS Management Console。 AWS CLI

部署期間運作良好任務的最低數量等於 desiredCount 乘以 minimumHealthyPercent/100,無條件進位到最接近的整數值。

如果服務使用藍色/綠色 (CODE_DEPLOY) 或EXTERNAL部署類型,而且正在執行使用EC2啟動類型的工作,則健全狀況下限百分比值會設定為預設值。此值可用來定義當容器執行個體處於RUNNING狀態時,服務中保持在狀態下的工作數目上限。DRAINING

注意

您無法為使用藍/綠 (CODE_DEPLOY) 或EXTERNAL部署類型且具有使用EC2啟動類型的工作的服務指定自訂maximumPercent值。

若服務使用的是藍/綠 (CODE_DEPLOY) 或 EXTERNAL 部署類型,並且執行使用 Fargate 啟動類型的任務,則不使用運作良好百分比下限值,雖然描述服務時會傳回此值。

部署控制器

deploymentController

類型:物件

必要:否

用於服務的部署控制器。如果沒有指定部署控制器,則使用 ECS 控制器。如需詳細資訊,請參閱Amazon ECS 服務

type

類型:字串

有效值:ECS | CODE_DEPLOY | EXTERNAL

必要:是

要使用的部署控制器類型。部署控制器有三種類型:

ECS

輪流更新 (ECS) 部署類型涉及以最新版本替換目前執行的容器版本。Amazon 在滾動式更新期間從服務新ECS增或移除的容器數量是透過調整服務部署期間允許的運作狀態良好任務的最小和最大數目來控制,如中所指定deploymentConfiguration

CODE_DEPLOY

藍/綠 (CODE_DEPLOY) 部署類型使用支援的藍/綠部署模型 CodeDeploy,可讓您在將生產流量傳送至服務之前,先驗證服務的新部署。

EXTERNAL

當您想要使用任何第三方部署控制器完全控制 Amazon ECS 服務的部署程序時,請使用外部部署類型。

任務置放

placementConstraints

類型: 物件陣列

必要:否

您服務的任務要使用的置放限制物件陣列。每項任務您最多可以指定 10 項限制。此限制包含任務定義中的限制以及執行時間指定的限制。若您使用的是 Fargate 啟動類型,則不支援任務置放限制條件。

type

類型:字串

必要:否

限制類型。使用 distinctInstance 以確保特定群組中的每個任務執行於不同的容器執行個體。使用 memberOf,以將選擇限制於特定群組或有效的待選項目。任務定義並不支援 distinctInstance 值。

expression

類型:字串

必要:否

限制所套用的叢集查詢語言運算式。如果限制條件類型為 distinctInstance,則無法指定運算式。如需詳細資訊,請參閱建立運算式以定義 Amazon ECS 任務的容器執行個體

placementStrategy

類型: 物件陣列

必要:否

您服務的任務要使用的置放策略物件。每項服務您最多可以指定四項策略規則。

type

類型:字串

有效值:random | spread | binpack

必要:否

置放策略類型。random 置放策略會將任務隨機置放於各個可用的待選項目。spread 置放策略根據 field 參數,以平均分散的方式置放於各個可用的待選項目。binpack 策略會根據以 field 參數指定的結果,將任務置放於資源最少的可用待選項目。例如,如果您在記憶體上進行 binpack,任務會放置在剩餘記憶體最少,但仍足以執行任務的執行個體上。

field

類型:字串

必要:否

套用置放策略的欄位。若是 spread 置放策略,有效的值為 instanceId (或擁有相同效果的 host),或任何平台以及套用至 attribute:ecs.availability-zone 等容器執行個體的自訂屬性。若是 binpack 置放策略,有效值為 cpumemory。若是 random 置放策略,此欄位並不使用。

標籤

tags

類型: 物件陣列

必要:否

您套用到服務以協助您分類和組織的中繼資料。每個標籤皆包含由您定義的一個金鑰與一個選用值。刪除服務時,也會一併刪除標籤。服務最多可套用 50 個標籤。如需詳細資訊,請參閱標記 Amazon ECS 資源

key

類型:字串

長度限制:長度下限為 1。長度上限為 128。

必要:否

組成標籤的鍵值組的一部分。索引鍵是一般標籤,作用就像更特定標籤值的類別。

value

類型:字串

長度限制:長度下限為 0。長度上限為 256。

必要:否

組成標籤的鍵值組的選用部分。值就像標籤類別 (索引鍵) 內的描述項。

enableECSManagedTags

類型:布林值

有效值:true | false

必要:否

指定是否對服務中的任務使用 Amazon ECS 受管標籤。如未指定任何值,則預設值為 false。如需詳細資訊,請參閱使用標籤進行帳單

propagateTags

類型:字串

有效值:TASK_DEFINITION | SERVICE

必要:否

指定是否將標籤從任務定義或服務複製到服務中的任務。如果沒有指定值,則不會複製標籤。標籤只能在建立服務期間複製到服務內的任務。若要在建立服務或建立工作後將標籤新增至任務,請使用TagResourceAPI動作。

網路組態

networkConfiguration

類型:物件

必要:否

服務的網路組態。使用 awsvpc 網路模式的任務定義需要此參數,才能接收其自己的彈性網路介面,其他網路模式不支援此參數。如果使用 Fargate 啟動類型,則需要 awsvpc 網路模式。如需 Amazon EC2 啟動類型聯網的詳細資訊,請參閱適用於EC2啟動類型的 Amazon ECS 任務聯網選項。如需 Fargate 啟動類型之網路的詳細資訊,請參閱 Fargate 工作網路。

awsvpcConfiguration

類型:物件

必要:否

代表任務或服務之子網路和安全群組的物件。

subnets

類型:字串陣列

必要:是

與任務或服務相關聯的子網路。根據 awsvpcConfiguration 限制僅能指定 16 個子網路。

securityGroups

類型:字串陣列

必要:否

與任務或服務相關聯的安全群組。如果您未指定安全性群組,則會使用的預設安全性群組。VPC根據 awsvpcConfiguration 限制僅能指定五個安全群組。

assignPublicIP

類型:字串

有效值:ENABLED | DISABLED

必要:否

無論任務的彈性網路介面是否收到公有 IP 地址。如果未指定任何值,則會使用 DISABLED 的預設值。

healthCheckGracePeriodSeconds

類型:整數

必要:否

任務進入狀態後,Amazon ECS 服務排程器應忽略健康狀態不良的 Elastic Load Balancing 目標運作狀態檢查、容器運作狀態檢查和 Route 53 運作RUNNING狀態檢查的時間 (以秒為單位)。這僅在您的服務已設定為使用負載平衡器時才會有效。如果您的服務已定義負載平衡器,且您未指定運作狀態檢查寬限期值,這時將會使用 0 的預設值。

如果您的服務工作需要一段時間才能開始並回應健康狀態檢查,您可以指定最多 2,147,483,647 秒的健全狀況檢查寬限期,ECS服務排程器會忽略健全狀況檢查狀態。此寬限期可防止ECS服務排程器將工作標示為不健康狀態,並在有時間上線之前將其停止。

如果您不使用 Elastic Load Balancing,建議您在任務定義運作狀態檢查參數中使用 startPeriod。有關詳情,請參閱使用容器運ECS作狀態檢查確定 Amazon 任務運作狀態

loadBalancers

類型: 物件陣列

必要:否

用來代表您的服務所使用之負載平衡器的負載平衡器物件。針對使用 Application Load Balancer 或 Network Load Balancer 的任務,您最多僅能連接五個目標群組到一個服務。

建立服務之後,負載平衡器組態無法從 AWS Management Console變更。您可以使用 AWS Copilot AWS CloudFormation、 AWS CLI 或SDK僅修改ECS滾動式部署控制器的負載平衡器組態,而不能修改 AWS CodeDeploy 藍/綠或外部。當您新增、更新或移除負載平衡器組態時,Amazon 會使用更新的 Elastic Load Balancing 組態ECS啟動新的部署。這會導致任務向負載平衡器註冊和取消註冊。我們建議您在更新 Elastic Load Balancing 組態之前,先在測試環境中驗證。如需如何修改組態的相關資訊,請參閱 Amazon 彈性容器服務API參考UpdateService中的。

對於「應用程式負載平衡器」和「網路負載平衡器」,此物件必須包含負載平衡器目標群組ARN、容器名稱 (如容器定義中所顯示),以及要從負載平衡器存取的容器連接埠。當此服務的任務置於容器執行個體,該容器執行個體和連接埠組合就會註冊為指定之目標群組中的目標。

targetGroupArn

類型:字串

必要:否

與服務相關聯的 Elastic Load Balancing 目標群組的完整 Amazon 資源名稱 (ARN)。

只有在使用應ARN用程式負載平衡器或 Network Load Balancer 時,才會指定目標群組。

loadBalancerName

類型:字串

必要:否

要與服務建立關聯的負載平衡器名稱。

如果您使用 Application Load Balancer 或 Network Load Balancer,請略去負載平衡器名稱參數。

containerName

類型:字串

必要:否

要與負載平衡器建立關聯的容器 (這會出現在容器定義中) 名稱。

containerPort

類型:整數

必要:否

要與負載平衡器建立關聯之容器的連接埠。此連接埠必須對應至服務中任務所使用之任務定義中的 containerPort。對於使用EC2啟動類型的工作,容器執行個體必須允許連接埠對應hostPort的輸入流量。

role

類型:字串

必要:否

可讓 Amazon ECS 代表您撥打負載平衡器呼叫ARN的簡短名稱或完整IAM角色。只有在您對服務使用具有單一目標群組的負載平衡器,且您的任務定義沒有使用 awsvpc 網路模式時,才允許此參數。如果您指定 role 參數,您還必須以 loadBalancers 參數指定負載平衡器物件。

如果您指定的角色具有以外的路徑/,則您必須指定完整角色 ARN (建議您這樣做),或在角色名稱前面加上路徑。例如,如果名稱為 bar 的角色有路徑 /foo/,則您可指定 /foo/bar 為角色名稱。若要取得更多資訊,請參閱《IAM使用指南》中的易記名稱和路徑

重要

如果您的帳戶已建立 Amazon ECS 服務連結角色,則除非您在此處指定角色,否則依預設會為您的服務使用該角色。若您的任務定義使用 awsvpc 網路模式,則服務連結角色為必要項目,此時您便不應在此處指定角色。如需詳細資訊,請參閱在 Amazon 使用服務連結角色 ECS

serviceConnectConfiguration

類型:物件

必要:否

可讓此服務探索及連線至服務,並可供命名空間內其他服務探索及連線的組態。

如需詳細資訊,請參閱使用服務 Connect 以簡短名稱連接 Amazon ECS 服務

enabled

類型:布林值

必要:是

指定是否要搭配此服務使用 Service Connect。

namespace

類型:字串

必要:否

與服務 Connect 搭配使用的 AWS Cloud Map 命名空間的簡短名稱或完整 Amazon 資源名稱 (ARN)。命名空間必須與 Amazon ECS 服務和叢集位於相 AWS 區域 同。命名空間的類型不會影響 Service Connect。如需有關的詳細資訊 AWS Cloud Map,請參閱開AWS Cloud Map 發人員指南中的使用服務

services

類型: 物件陣列

必要:否

Service Connect 服務物件的陣列。這些是其他 Amazon ECS 服務用來連線到此服務的名稱和別名 (也稱為端點)。

「用戶端」Amazon ECS 服務不需要此欄位,該服務屬於命名空間的成員,僅連線至命名空間內的其他服務。以接受傳入請求的前端應用程式為例,這些請求由連接到服務的負載平衡器傳入或透過其他方式傳入。

物件會從工作定義中選取連接埠、指派 AWS Cloud Map 服務名稱,以及用戶端應用程式參照此服務的別名陣列 (也稱為端點) 和連接埠。

portName

類型:字串

必要:是

portName必須符合此 Amazon ECS 服務任務定義中其中一個portMappings來自所有容器的容器。name

discoveryName

類型:字串

必要:否

discoveryName是 Amazon 為此 Amazon AWS Cloud Map 服務ECS創建的新ECS服務的名稱。此名稱在 AWS Cloud Map 命名空間中必須不重複。

若沒有指定此欄位,則使用 portName

clientAliases

類型: 物件陣列

必要:否

此 Service Connect 服務的用戶端別名清單。您可以使用這些別名,指派用戶端應用程式可使用的名稱。您可以在此清單中擁有的用戶端別名數量上限為 1。

每個別DNS名 (「端點」) 都是其他 Amazon ECS 服務 (「用戶端」) 可用來連線到此服務的名稱和連接埠號碼。

每個名稱和連接埠組合在命名空間內必須不重複。

這些名稱在用戶端服務的每個任務中設定,而不是在 AWS Cloud Map中設定。DNS解析這些名稱的要求不會離開工作,也不會計入每個 elastic network interface 每秒DNS要求的配額。

port

類型:整數

必要:是

Service Connect Proxy 的接聽連接埠號碼。此連接埠可在相同命名空間內的所有任務中使用。

若要避免在用戶端 Amazon ECS 服務中變更應用程式,請將其設定為用戶端應用程式預設使用的相同連接埠。

dnsName

類型:字串

必要:否

dnsName 是您在用戶端任務應用程式中用來連線到此服務的名稱。名稱必須是有效的DNS標籤。

如果未指定欄位,則預設值為 discoveryName.namespace。如果未指定 discoveryName,則會使用來自任務定義的 portName

若要避免在用戶端 Amazon ECS 服務中變更應用程式,請將其設定為與用戶端應用程式預設使用的名稱相同。例如,一些常見名稱為 databasedb,或資料庫的小寫名稱,例如 mysqlredis

ingressPortOverride

類型:整數

必要:否

(選用) Service Connect Proxy 接聽所用的連接埠號碼。

使用此欄位的值可略過代理流量 (在此應用程式的任務定義中指定) portMapping 中指定的連接埠號碼上的流量,然後在 Amazon VPC 安全群組中使用它,以允許流量進入此 Amazon ECS 服務的 Proxy。

awsvpc 模式中,預設值是在此應用程式任務定義中指定之 portMapping 所指定的容器連接埠號碼。在 bridge 模式中,預設值是 Service Connect Proxy 的動態暫時性連接埠。

logConfiguration

類型:LogConfiguration物件

必要:否

這會定義 Service Connect Proxy 日誌的發佈位置。在非預期事件期間使用日誌進行偵錯。此組態會在此 Amazon ECS 服務的每個任務的服務 Connect 代理容器中設定logConfiguration參數。未在任務定義中指定 Proxy 容器。

建議您使用與此 Amazon ECS 服務任務定義的應用程式容器相同的日誌組態。對於 FireLens,這是應用程式容器的記錄組態。它不是使用fluent-bit或容器映像的 FireLens 日誌路由fluentd 器容器。

serviceRegistries

類型: 物件陣列

必要:否

您的服務探索組態詳細資訊。如需詳細資訊,請參閱使用服務探索以DNS名稱連接 Amazon ECS 服務

registryArn

類型:字串

必要:否

服務註冊表的 Amazon 資源名稱(ARN)。目前支援的服務登錄為 AWS Cloud Map。如需詳細資訊,請參閱 AWS Cloud Map 開發人員指南中的使用服務

port

類型:整數

必要:否

服務探索服務指定SRV記錄時所使用的連接埠值。如果同時使用awsvpc網路模式和SRV記錄,則需要此欄位。

containerName

類型:字串

必要:否

容器名稱值用於您的「服務探索」服務。該值已於任務定義中指定。如果服務任務指定的任務定義是使用 bridgehost 網路模式,您必須透過任務定義指定 containerNamecontainerPort 組合。如果您的服務作業所指定的作業定義使用awsvpc網路模式,且使用類型SRVDNS記錄,您必須指定 containerName AND containerPort 組合或port值,但不能同時指定兩者。

containerPort

類型:整數

必要:否

用於您的「服務探索」服務的連接埠值。該值已於任務定義中指定。如果服務任務指定的任務定義是使用 bridgehost 網路模式,您必須透過任務定義指定 containerNamecontainerPort 組合。如果您的服務作業指定的作業定義使用awsvpc網路模式且使用了類型SRVDNS記錄,則您必須指定 containerName AND containerPort 組合或port值,但不能同時指定兩者。

用戶端字符

clientToken

類型:字串

必要:否

由您提供的唯一且區分大小寫的識別符,以確保請求的等冪性。最多可以有 32 ASCII 個字元。

磁碟區組態

volumeConfigurations

類型:物件

必要:否

將用於為服務管理的工作建立磁碟區的組態。會針對服務中的每個工作建立一個磁碟區。只有在任務定義configuredAtLaunch中標記為的磁碟區才能使用此物件來配置。將 Amazon EBS 資料磁碟區附加到由服務管理的任務時,需要此物件。如需詳細資訊,請參閱 Amazon EBS 磁碟區

name

類型:字串

必要:是

建立或更新服務時所設定的磁碟區名稱。允許最多 255 個字母(大寫和小寫),數字,底線(_)和連字符(-)。此值必須符合工作定義中指定的磁碟區名稱。

managedEBSVolume

類型:物件

必要:否

Amazon EBS 磁碟區的磁碟區組態,這些磁碟區會在建立或更新服務時連接到由服務管理的任務。

encrypted

類型:布林值

必要:否

有效值:true|false

指定是否將連接至服務管理的任務的 Amazon EBS 磁碟區加密。如果您已預設為帳戶開啟 Amazon EBS 加密,則會覆寫此設定,且磁碟區將加密。如需有關預設EBS加密的詳細資訊,請參閱 Amazon EC2 使用者指南中的預設加密。

kmsKeyId

類型:字串

必要:否

用於 Amazon EBS 加密的 AWS Key Management Service (AWS KMS) 金鑰識別碼。如果未指定此參數,則會使 AWS KMS key 用您EBS的 Amazon。如果指定 KmsKeyId,加密狀態必須是 true

您可以使用下列任何一項來指定KMS金鑰:

  • 金鑰識別碼 — 例如,1234abcd-12ab-34cd-56ef-1234567890ab

  • 金鑰別名 — 例如,alias/ExampleAlias

  • 索引鍵 ARN — 例如,arn:aws:kms:us-east-1:012345678910:key/1234abcd-12ab-34cd-56ef-1234567890ab.

  • 別名 ARN — 例如,arn:aws:kms:us-east-1:012345678910:alias/ExampleAlias

重要

AWS 以非同步方式驗證KMS金鑰。因此,如果您指定的 ID、別名或ARN無效,動作可能會看起來成功,但最終會失敗。如需詳細資訊,請參閱疑難排解 Amazon EBS 磁碟區附件問題

volumeType

類型:字串

必要:否

有效值:gp2gp3| io1 | io2 | sc1 | st1 | standard

EBS磁碟區類型。如需有關磁碟區類型的詳細資訊,請參閱 Amazon EC2使用者指南中的 Amazon EBS 磁碟區類型。預設磁碟區類型為 gp3

注意

針對standard為附加到 Fargate 任務而設定的 Amazon EBS 磁碟區不支援磁碟區類型。

sizeInGiB

類型:整數

必要:否

有效範圍:介於 1 和 16,384 之間的整數

EBS磁碟區的大小 (以吉位元組 (GiB) 為單位。如果您未提供快照 ID 來設定附件的磁碟區,則必須提供大小值。如果您使用快照設定附件的磁碟區,預設值為快照大小。然後,您可以指定大於或等於快照大小的大小。

對於gp2gp3磁碟區類型,有效範圍是 1-16,384。

對於io1io2磁碟區類型,有效範圍是 4-16,384。

對於st1sc1磁碟區類型,有效範圍是 125-16,384。

對於standard磁碟區類型,有效範圍是 1-1,024。

snapshotId

類型:字串

必要:否

現有EBS磁碟區的快照識別碼,用來建立附加至ECS工作的新磁碟區。

iops

類型:整數

必要:否

每秒的 I/O 作業數目 (IOPS)。對於gp3io1、和io2磁碟區,這代表IOPS為磁碟區佈建的數目。對於gp2磁碟區,此值代表磁碟區的基準效能,以及磁碟區累積 I/O 積分以進行成組分解的速率。這是 io1io2 磁碟區的必要參數。gp2st1、或standard磁碟區不支援此參數。sc1

對於gp3磁碟區,有效的值範圍為 3,000 到 16,000。

對於io1磁碟區,有效的值範圍是 100 到 64,000。

對於io2磁碟區,有效的值範圍是 100 到 64,000。

throughput

類型:整數

必要:否

為附加至服務所管理之工作的磁碟區佈建輸送量。

重要

此參數僅支援gp3磁碟區。

roleArn

類型:字串

必要:是

基礎設施 ARN (ARN) 角色的 Amazon 資源 AWS Identity and Access Management (IAM),可為您的任務提供 Amazon ECS 許可管理 Amazon EBS 資源的權限。如需詳細資訊,請參閱Amazon ECS 基礎設IAM施

tagSpecifications

類型:物件

必要:否

要套用至服務受管 Amazon EBS 磁碟區的標籤規格。

resourceType

類型:字串

必要:是

有效值:volume

建立時要標記的資源類型。

tags

類型: 物件陣列

必要:否

您套用至磁碟區的中繼資料,以協助您對其進行分類和整理。每個標籤都包含一個鍵和一個可選值,這兩個值都是您定義的。 AmazonECSCreated並且AmazonECSManaged是由 Amazon ECS 代表您添加的保留標籤,因此您最多可以指定 48 個自己的標籤。刪除磁碟區時,也會刪除標籤。如需詳細資訊,請參閱標記 Amazon ECS 資源

key

類型:字串

長度限制:長度下限為 1。長度上限為 128。

必要:否

組成標籤的鍵值對的一部分。索引鍵是一般標籤,作用就像更特定標籤值的類別。

value

類型:字串

長度限制:長度下限為 0。長度上限為 256。

必要:否

組成標籤的鍵值對的可選部分。值就像標籤類別 (索引鍵) 內的描述項。

propagateTags

類型:字串

有效值:TASK_DEFINITION | SERVICE | NONE

必要:否

指定要將標籤從工作定義還是將服務複製到磁碟區。如NONE果指定或未指定值,則不會複製標籤。

fileSystemType

類型:字串

必要:否

有效值:xfs|ext3|ext4

磁碟區上檔案系統的類型。磁碟區的檔案系統類型決定資料在磁碟區中儲存和擷取的方式。對於從快照建立的磁碟區,您必須指定與建立快照時磁碟區所使用的相同檔案系統類型。如果文件系統類型不匹配,則任務將無法啟動。附加至 Linux 工作的磁碟區的預設值為XFS

服務定義範本

以下顯JSON示 Amazon ECS 服務定義的表示方式。

Amazon EC2 推出類型

{ "cluster": "", "serviceName": "", "taskDefinition": "", "loadBalancers": [ { "targetGroupArn": "", "loadBalancerName": "", "containerName": "", "containerPort": 0 } ], "serviceRegistries": [ { "registryArn": "", "port": 0, "containerName": "", "containerPort": 0 } ], "desiredCount": 0, "clientToken": "", "launchType": "EC2", "capacityProviderStrategy": [ { "capacityProvider": "", "weight": 0, "base": 0 } ], "platformVersion": "", "role": "", "deploymentConfiguration": { "deploymentCircuitBreaker": { "enable": true, "rollback": true }, "maximumPercent": 0, "minimumHealthyPercent": 0, "alarms": { "alarmNames": [ "" ], "enable": true, "rollback": true } }, "placementConstraints": [ { "type": "distinctInstance", "expression": "" } ], "placementStrategy": [ { "type": "binpack", "field": "" } ], "networkConfiguration": { "awsvpcConfiguration": { "subnets": [ "" ], "securityGroups": [ "" ], "assignPublicIp": "DISABLED" } }, "healthCheckGracePeriodSeconds": 0, "schedulingStrategy": "REPLICA", "deploymentController": { "type": "EXTERNAL" }, "tags": [ { "key": "", "value": "" } ], "enableECSManagedTags": true, "propagateTags": "TASK_DEFINITION", "enableExecuteCommand": true, "serviceConnectConfiguration": { "enabled": true, "namespace": "", "services": [ { "portName": "", "discoveryName": "", "clientAliases": [ { "port": 0, "dnsName": "" } ], "ingressPortOverride": 0 } ], "logConfiguration": { "logDriver": "journald", "options": { "KeyName": "" }, "secretOptions": [ { "name": "", "valueFrom": "" } ] } }, "volumeConfigurations": [ { "name": "", "managedEBSVolume": { "encrypted": true, "kmsKeyId": "", "volumeType": "", "sizeInGiB": 0, "snapshotId": "", "iops": 0, "throughput": 0, "tagSpecifications": [ { "resourceType": "volume", "tags": [ { "key": "", "value": "" } ], "propagateTags": "NONE" } ], "roleArn": "", "filesystemType": "" } } ] }

Fargate 啟動類型

{ "cluster": "", "serviceName": "", "taskDefinition": "", "loadBalancers": [ { "targetGroupArn": "", "loadBalancerName": "", "containerName": "", "containerPort": 0 } ], "serviceRegistries": [ { "registryArn": "", "port": 0, "containerName": "", "containerPort": 0 } ], "desiredCount": 0, "clientToken": "", "launchType": "FARGATE", "capacityProviderStrategy": [ { "capacityProvider": "", "weight": 0, "base": 0 } ], "platformVersion": "", "platformFamily": "", "role": "", "deploymentConfiguration": { "deploymentCircuitBreaker": { "enable": true, "rollback": true }, "maximumPercent": 0, "minimumHealthyPercent": 0, "alarms": { "alarmNames": [ "" ], "enable": true, "rollback": true } }, "placementStrategy": [ { "type": "binpack", "field": "" } ], "networkConfiguration": { "awsvpcConfiguration": { "subnets": [ "" ], "securityGroups": [ "" ], "assignPublicIp": "DISABLED" } }, "healthCheckGracePeriodSeconds": 0, "schedulingStrategy": "REPLICA", "deploymentController": { "type": "EXTERNAL" }, "tags": [ { "key": "", "value": "" } ], "enableECSManagedTags": true, "propagateTags": "TASK_DEFINITION", "enableExecuteCommand": true, "serviceConnectConfiguration": { "enabled": true, "namespace": "", "services": [ { "portName": "", "discoveryName": "", "clientAliases": [ { "port": 0, "dnsName": "" } ], "ingressPortOverride": 0 } ], "logConfiguration": { "logDriver": "journald", "options": { "KeyName": "" }, "secretOptions": [ { "name": "", "valueFrom": "" } ] } }, "volumeConfigurations": [ { "name": "", "managedEBSVolume": { "encrypted": true, "kmsKeyId": "", "volumeType": "", "sizeInGiB": 0, "snapshotId": "", "iops": 0, "throughput": 0, "tagSpecifications": [ { "resourceType": "volume", "tags": [ { "key": "", "value": "" } ], "propagateTags": "NONE" } ], "roleArn": "", "filesystemType": "" } } ] }

您可以使用下列 AWS CLI 命令建立此服務定義範本。

aws ecs create-service --generate-cli-skeleton