

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

# 透過取代任務來部署 Amazon ECS 服務
<a name="deployment-type-ecs"></a>

如果建立的服務使用的是*滾動更新* (`ECS`) 部署類型，Amazon ECS 服務排程器會使用新任務取代目前執行中的任務。Amazon ECS 在滾動更新期間從服務新增或移除的任務數量是由服務部署組態控制。

Amazon ECS 使用下列參數來決定任務數量：
+ `minimumHealthyPercent` 代表在滾動部署期間或容器執行個體耗盡時，應為服務執行且運作狀態良好的任務數量下限，以服務所需任務數量的百分比表示。此值會向上捨入。例如，如果最小運作狀態良好的百分比為 `50`，且所需的任務計數為 4，則排程器可以先停止兩項現有的任務，再開始兩項新的任務。同樣地，如果最小運作狀態良好的百分比為 75%，而所需的任務計數為 2，則排程器無法停止任何任務，因為產生的值也是 2。
+ `maximumPercent` 代表在滾動部署期間或容器執行個體耗盡時，應為服務執行的任務數量上限，以服務所需任務數量的百分比表示。此值會向下捨去。例如，如果最大百分比為 ，`200`而所需的任務計數為 4，則排程器可以在停止四個現有任務之前啟動四個新任務。同樣地，如果最大百分比為 `125`，且所需的任務計數為 3，則排程器無法停止任何任務，因為產生的值也是 3。

在滾動部署期間，當任務運作狀態不佳時，Amazon ECS 會取代它們，以維護您服務的 `minimumHealthyPercent` 並保護可用性。運作狀態不佳的任務會使用其所屬的相同服務修訂來取代。這可確保來源修訂版中運作狀態不佳的任務替換與目標修訂版中的任務失敗無關。當`maximumPercent`設定允許時，排程器會在停止運作狀態不佳的任務之前啟動替代任務。如果 `maximumPercent` 參數限制排程器先啟動取代任務，排程器會一次停止一個運作狀態不佳的任務，以在啟動取代任務之前釋放容量。

**重要**  
設定最小運作狀態良好的百分比或最大百分比時，您應確定排程器在部署初始化時，可以停止或啟動至少一項任務。如果您的服務部署因無效的部署組態而停滯，將傳送服務事件簡訊。如需詳細資訊，請參閱[服務 (*service-name*) 在部署期間因服務部署組態而無法停止或啟動任務。更新 minimumHealthyPercent 或 maximumPercent 值，然後再試一次。](service-event-messages-list.md#service-event-messages-7)。

滾動部署有兩種方法，有助於快速識別服務部署何時失敗：
+ [Amazon ECS 部署斷路器如何偵測失敗](deployment-circuit-breaker.md)
+ [CloudWatch 警示如何偵測 Amazon ECS 部署失敗](deployment-alarm-failure.md)

可以單獨使用或一起使用這些方法。同時使用兩種方法時，只要符合任一失敗方法的失敗條件，就會將部署設定為失敗。

請遵循下列準則來協助判斷要使用的方法：
+ 斷路器 – 當您想要在任務無法啟動而停止部署時，請使用此方法。
+ CloudWatch 警示 – 當您想要根據應用程式指標停止部署時，請使用此方法。

這兩種方法都支援復原至先前的服務修訂版。

## 容器映像解析
<a name="deployment-container-image-stability"></a>

依預設，Amazon ECS 會將任務定義中指定的容器映像標籤解析為容器映像摘要。如果您建立的服務執行並維護單一任務，則該任務將用於建立任務中容器的映像摘要。如果您建立的服務執行並維護多項任務，則服務排程器在部署期間啟動的第一項任務將用於建立這些任務中容器的映像摘要。

如果三次或多次嘗試建立容器映像摘要失敗，則部署將在不進行映像摘要解析的情況下繼續。如果啟用了部署斷路器，則部署將額外標記為失敗並得到復原。

建立容器映像摘要之後，Amazon ECS 會使用摘要來啟動任何其他所需的任務，以及進行任何未來的服務更新。這會導致服務中的所有任務始終執行相同的容器映像，從而確保軟體的版本一致性。

您可以使用容器定義中的 `versionConsistency` 參數，為任務中的每個容器設定此行為。如需詳細資訊，請參閱[versionConsistency](task_definition_parameters.md#ContainerDefinition-versionconsistency)。

**注意**  
低於 `1.31.0` 的 Amazon ECS 代理程式版本不支援映像摘要解析。`1.31.0` 至 `1.69.0` 的代理程式版本僅支援解析推送至 Amazon ECR 儲存庫之映像的摘要。`1.70.0` 或更高版本的代理程式版本支援解析所有映像的摘要。
用於映像摘要解析的最低 Fargate Linux 平台版本為 `1.3.0`。用於映像摘要解析的最低 Fargate Windows 平台版本為 `1.0.0`。
Amazon ECS 不會擷取 Amazon ECS 管理的邊車容器摘要，例如 Amazon GuardDuty 安全代理程式或 Service Connect Proxy。
若要在具有多項任務的服務中降低與容器映像解析相關聯的潛在延遲，請在 EC2 容器執行個體上執行 Amazon ECS 代理程式 `1.83.0` 或更高版本。若要避免潛在延遲，請在任務定義中指定容器映像摘要。
如果您建立所需任務計數為零的服務，則在您觸發另一次所需任務計數大於零的服務部署之前，Amazon ECS 無法建立容器摘要。
若要建立更新後的映像摘要，您可以強制執行新部署。更新後的摘要將用於啟動新任務，不會影響已在執行的任務。如需有關強制執行新部署的詳細資訊，請參閱 *Amazon ECS API reference* 中的 [forceNewDeployment](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_UpdateService.html#ECS-UpdateService-request-forceNewDeployment)。
使用 EC2 容量提供者時，如果在初始部署期間沒有足夠的容量來啟動任務，軟體版本一致性可能會失敗。為確保即使容量有限也能維持版本一致性，請在任務定義容器組態中明確設定 `versionConsistency: "enabled"`，而不是依賴預設行為。這會導致 Amazon ECS 等待容量變為可用，然後再繼續部署。

# Amazon ECS 服務參數最佳實務
<a name="service-options"></a>

為確保應用程式零停機時間，部署程序如下：

1. 啟動新的應用程式容器，同時讓現有容器保持執行狀態。

1. 檢查新容器是否正常運作。

1. 停止舊容器。

 根據部署組態與叢集中可用、未預留的空間量，可能需要多次重複此程序才能完成以新任務取代所有舊任務的工作。

可以使用下列兩種服務組態選項來修改任務數量：
+ `minimumHealthyPercent`：100% (預設)

  服務在部署期間必須保持在 `RUNNING` 狀態的任務數量下限。此值是無條件進位到最接近整數的 `desiredCount` 的百分比。此參數可讓您不使用額外的叢集容量進行部署。
+ `maximumPercent`：200% (預設)

   服務在部署期間允許保持在 `RUNNING` 或 `PENDING` 狀態的任務數量上限。此值是無條件捨去到最接近整數的 `desiredCount` 的百分比。

**範例：預設組態選項**

假設下列服務具有六項任務，部署在總共可容納八項任務的叢集中。預設服務組態選項不允許部署低於六個所需任務的 100%。

部署程序如下：

1. 目標是取代六項任務。

1. 排程器會啟動兩項新任務，因為預設設定要求必須有六項執行中任務。

   現在有六項現有任務與兩項新任務。

1. 排程器會停止兩項現有任務。

   現在有四項現有任務與兩項新任務。

1. 排程器會再啟動兩項新任務。

   現在有四項現有任務與四項新任務。

1. 排程器會關閉兩項現有任務。

   現在有兩項現有任務與四項新任務。

1. 排程器會再啟動兩項新任務。

   現在有兩項現有任務與六項新任務

1. 排程器會關閉最後兩項現有任務。

   現在有六項新任務。

在上述範例中，如果使用選項的預設值，則需要等待 2.5 分鐘，才能啟動每項新任務。此外，負載平衡器可能必須等待 5 分鐘，舊任務才能停止。

**範例：修改 `minimumHealthyPercent`**

您可以將 `minimumHealthyPercent` 值設定為 50%，以加速部署。

假設下列服務具有六項任務，部署在總共可容納八項任務的叢集中。部署程序如下：

1. 目標是取代六項任務。

1. 排程器會停止三項現有任務。

   仍有三項現有任務在執行中，符合 `minimumHealthyPercent` 值。

1. 排程器會啟動五項新任務。

   現在有三項現有任務與五項新任務。

1. 排程器會停止剩餘的三項現有任務。

   現在有五項新任務

1. 排程器會啟動最後一項新任務。

   現在有六項新任務。

**範例：修改叢集可用空間**

您也可以新增額外的可用空間，以便執行更多任務。

假設下列服務具有六項任務，部署在總共可容納十項任務的叢集中。部署程序如下：

1. 目標是取代現有任務。

1. 排程器會停止三項現有任務，

   現在有三項現有任務。

1. 排程器會啟動六項新任務。

   現在有三項現有任務與六項新任務

1. 排程器會停止三項現有任務。

   現在有六項新任務。

**建議**

如果任務閒置一段時間且使用率不高，請針對服務組態選項使用下列值。
+ `minimumHealthyPercent`：50%
+ `maximumPercent`：200% 

# 建立 Amazon ECS 滾動更新部署
<a name="create-service-console-v2"></a>

建立服務，以在叢集中同時執行並維持指定數量的任務定義執行個體。如果您有任務產生故障或停止，Amazon ECS 服務排程器就會根據您的任務定義啟動另一個執行個體來取而代之。這有助於維持服務中所需的任務數量。

建立服務之前，請先決定下列組態參數：
+ 分發任務有兩種運算選項。
  + **capacity provider strategy** (容量供應商策略)，使 Amazon ECS 將您的任務分發至一個或多個容量供應商。

    如果想要在 Amazon ECS 受管執行個體上執行工作負載，必須使用容量提供者策略選項。
  + **啟動類型**便於 Amazon ECS 直接在 Fargate 或註冊至叢集的 EC2 執行個體上啟動任務。

    如果想要在 Amazon ECS 受管執行個體上執行工作負載，必須使用容量提供者策略選項。
+ 使用 `awsvpc` 網路模式的任務定義或被設定使用負載平衡器的服務必須有聯網組態。根據預設，主控台會在預設的 Amazon VPC 中選擇預設的 Amazon VPC，以及全部子網路和預設安全群組。
+ 置放策略，預設任務置放策略會將任務均勻分佈到可用區域。

  建議使用可用區域重新平衡，以協助確保服務的高可用性。如需詳細資訊，請參閱[在可用區域之間平衡 Amazon ECS 服務](service-rebalancing.md)。
+ 當您使用 **Launch Type** (啟動類型) 進行服務部署時，服務預設會在叢集 VPC 的子網路中啟動。
+ 針對 **capacity provider strategy** (容量提供者策略)，主控台預設會選取運算選項。以下說明主控台用來選擇預設值的順序：
  + 若您的叢集定義了預設容量提供者策略，則會選取該叢集。
  + 如果叢集未定義預設容量提供者策略，但您已將 Fargate 容量提供者新增至叢集，則系統會選取使用 `FARGATE` 容量提供者的自訂容量提供者策略。
  + 如果叢集未定義預設容量提供者策略，但您已將一個或多個 Auto Scaling 群組容量提供者新增至叢集，則系統會選取**使用自訂 (進階)** 選項，並且您需要手動定義策略。
  + 若您的叢集未定義預設容量提供者策略，也沒有為叢集新增容量提供者，則會選擇 Fargate 啟動類型。
+ 部署失敗偵測的預設選項是搭配**失敗時復原**選項使用 **Amazon ECS 部署斷路器**選項。

  如需詳細資訊，請參閱[Amazon ECS 部署斷路器如何偵測失敗](deployment-circuit-breaker.md)。
+ 決定是否希望 Amazon ECS 自動增加或減少服務中所需的任務數量。如需相關資訊，請參閱[自動擴展您的 Amazon ECS 服務](service-auto-scaling.md)。
+ 如果您需要應用程式連線到在 Amazon ECS 中執行的其他應用程式，請確定適合您架構的選項。如需詳細資訊，請參閱[互連 Amazon ECS 服務](interconnecting-services.md)。
+ 建立使用 Amazon ECS 斷路器的服務時，Amazon ECS 會建立服務部署與服務修訂版。這些資源可用於檢視服務歷史記錄的詳細資訊。如需詳細資訊，請參閱[使用 Amazon ECS 服務部署檢視服務歷史記錄](service-deployment.md)。

  如需有關如何使用 建立服務的資訊 AWS CLI，請參閱《 *AWS Command Line Interface 參考*[https://docs.aws.amazon.com/cli/latest/reference/ecs/create-service.html](https://docs.aws.amazon.com/cli/latest/reference/ecs/create-service.html)》中的 。

  如需有關如何使用 建立服務的資訊 AWS CloudFormation，請參閱*AWS CloudFormation 《 使用者指南*[https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-service.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-service.html)》中的 。

## 使用預設選項建立服務
<a name="create-default-service"></a>

您可以使用主控台來快速建立並部署服務。服務具有下列組態：
+ 在與叢集關聯的 VPC 和子網路中部署
+ 部署一項任務
+ 使用滾動部署
+ 搭配預設容量供應商使用容量供應商策略
+ 使用部署斷路器偵測故障，並將選項設定為在失敗時自動回復部署

若要使用預設參數部署服務，請遵循下列步驟。

**建立服務 (Amazon ECS 主控台)**

1. 開啟主控台，網址為 [https://console.aws.amazon.com/ecs/v2](https://console.aws.amazon.com/ecs/v2)。

1. 在導覽頁面中，選擇**叢集**)。

1. 在**叢集**頁面上，選擇要建立服務的叢集。

1. 在 **Services** (服務) 索引標籤上，選擇 **Create** (建立)。

   **建立服務**頁面隨即顯示。

1. 在**服務詳細資訊**下，執行下列動作：

   1. 在**任務定義**欄位中，選擇要使用的任務定義系列與修訂版。

   1. 針對 **Service name** (服務名稱)，輸入服務的名稱。

1. 若要使用 ECS Exec 來偵錯服務，請在**對組態進行疑難排解**下，選取**開啟 ECS Exec**。

1. 在**部署組態**下，執行下列動作：

   1. 針對 **Desired tasks** (所需任務)，輸入要在服務中啟動並維護的任務數。

1. (選用) 為協助識別您的服務和任務，請展開 **Tags** (標籤) 區段，然後設定標籤。

   若要讓 Amazon ECS 使用叢集名稱和任務定義標籤，自動標記所有新啟動的任務，請選取 **Turn on Amazon ECS managed tags** (開啟 Amazon ECS 受管標籤)，然後選取 **Task definitions** (任務定義)。

   若要讓 Amazon ECS 使用叢集名稱和服務標籤，自動標記所有新啟動的任務，請選取 **Turn on Amazon ECS managed tags** (開啟 Amazon ECS 受管標籤)，然後選取 **Service** (服務)。

   新增或移除標籤。
   + [新增標籤] 選擇**新增標籤**，然後執行下列操作︰
     + 在**索引鍵**中，輸入索引鍵名稱。
     + 在**值**中，進入索引鍵值。
   + [移除標籤] 在標籤旁邊，選擇 **移除標籤**。

## 使用定義的參數建立服務
<a name="create-custom-service"></a>

若要使用定義的參數建立服務，請遵循下列步驟。

**建立服務 (Amazon ECS 主控台)**

1. 開啟主控台，網址為 [https://console.aws.amazon.com/ecs/v2](https://console.aws.amazon.com/ecs/v2)。

1. 決定您要從中啟動服務的資源。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonECS/latest/developerguide/create-service-console-v2.html)

   **建立服務**頁面隨即顯示。

1. 在服務詳細資訊下，執行下列動作：

   1. 在**任務定義**欄位中輸入要使用的任務定義。然後，在**修訂版**欄位中選擇要使用的修訂版。

   1. 針對 **Service name** (服務名稱)，輸入服務的名稱。

1. 在**現有叢集**欄位中選擇叢集。

   選擇**建立叢集**以在新叢集上執行任務

1. 選擇任務在叢集基礎結構中的分佈方式。在**運算組態**下選擇選項。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonECS/latest/developerguide/create-service-console-v2.html)

1. 若要使用 ECS Exec 來偵錯服務，請在**對組態進行疑難排解**下，選取**開啟 ECS Exec**。

1. 在**部署組態**下，執行下列動作：

   1. 針對 **Service type** (服務類型)，選擇服務排程策略。
      + 若要讓排程器在每個活動容器執行個體上準確部署一個任務，且滿足所有任務置放限制條件，請選擇 **Daemon** (常駐程式)。
      + 若要讓排程器在叢集中置放並維持所需的任務數量，請選擇 **Replica** (複寫)。

   1. 如果您選擇 **Replica** (複寫)，針對 **Desired tasks** (所需任務)，輸入要在服務中啟動並維護的任務數。

   1. 如果選擇**複本**，若要讓 Amazon ECS 監控可用區域間的任務分佈，並在出現不平衡時重新分佈，請在**可用區域服務重新平衡**下，選取**可用區域服務重新平衡**。

   1. 在**運作狀態檢查寬限期**欄位中輸入時間量 (以秒為單位)，這是服務排程器在任務首次啟動後忽略運作狀態不良的 Elastic Load Balancing、VPC Lattice 與容器運作狀態檢查的時間。如果您未指定運作狀態檢查寬限期間值，則會使用預設值 0。

   1. 決定服務的部署類型。展開**部署選項**區段，然後指定下列參數。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonECS/latest/developerguide/create-service-console-v2.html)

   1. 若要設定 Amazon ECS 如何偵測並處理部署失敗，請展開 **Deployment failure detection** (部署失敗偵測)，然後選擇您的選項。

      1. 若要在任務無法啟動時停止部署，請選取 **Use the Amazon ECS deployment circuit breaker** (使用 Amazon ECS 部署斷路器)。

         在部署斷路器將部署設定為失敗狀態時，若要讓軟體自動將部署復原至上次完成的部署狀態，請選取**失敗時復原**。

      1. 若要根據應用程式指標停止部署，請選取**使用 CloudWatch 警示**。然後，從**CloudWatch 警示名稱**欄位中選擇警示。要建立新的警示，請前往 CloudWatch 主控台。

         在 CloudWatch 警示將部署設定為失敗狀態時，若要讓軟體自動將部署復原至上次完成的部署狀態，請選取**失敗時復原**。

1. 如果任務定義使用 `awsvpc` 網路模式，可展開**聯網**區段以指定自訂網路組態，然後執行下列動作：

   1. 針對 **VPC**，選擇要使用的 VPC。

   1. 針對**子網路**，在 VPC 中選擇一個或多個子網路，而任務排程器在放置任務時會考慮該 VPC。

   1. 針對 **Security groups** (安全群組)，您可以選取現有的安全群組，或建立新的安全群組。若要使用現有的安全群組，選擇該安全群組並移至下一個步驟。若要建立新的安全群組，請選擇 **建立新安全群組**。您必須指定安全群組名稱、描述，然後為該安全群組新增一條或更多傳入規則。

   1. 針對 **Public IP** (公有 IP)，選擇是否為任務的彈性網路界面 (ENI) 自動指派公有 IP 地址。

      AWS Fargate 在公有子網路中執行時，任務可以指派公有 IP 地址，以便他們有網際網路的路由。無法使用此欄位將公有 IP 指派給 EC2 任務。如需詳細資訊，請參閱 [Fargate 的 Amazon ECS 任務聯網選項](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/fargate-task-networking.html)，以及[為 Amazon ECS 任務配置網路介面](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking-awsvpc.html)。

1. (選用) 若要使用 Service Connect 與服務互連，請展開 **Service Connect** 區段，然後指定下列項目：

   1.  選取**開啟 Service Connect**。

   1. 在 **Service Connect configuration** (Service Connect 組態) 下，指定用戶端模式。
      + 如果服務執行的網路用戶端應用程式只需要連線至命名空間中的其他服務，請選擇**僅用戶端**。
      + 如果服務執行的是網路或 Web 服務應用程式，且需要為此服務提供端點，並連線至命名空間中的其他服務，請選擇 **Client and server** (用戶端和伺服器)。

   1. 若要使用非預設叢集命名空間的命名空間，請在 **Namespace** (命名空間) 欄位中選擇服務命名空間。這可以是在您的 中在相同 AWS 區域 中分別建立的命名空間， AWS 帳戶 或是使用 AWS Resource Access Manager () 與您的帳戶共用的相同區域中的命名空間AWS RAM。如需共用 AWS Cloud Map 命名空間的詳細資訊，請參閱《 *AWS Cloud Map 開發人員指南*》中的[跨帳戶 AWS Cloud Map 命名空間共用](https://docs.aws.amazon.com/cloud-map/latest/dg/sharing-namespaces.html)。

   1. (選用) 指定日誌組態。選取**使用日誌收集**。預設選項會將容器日誌傳送至 CloudWatch 日誌。其他日誌驅動程式選項是使用 AWS FireLens 設定。如需詳細資訊，請參閱[將 Amazon ECS 日誌傳送至 AWS 服務或 AWS Partner](using_firelens.md)。

      下方更詳細地描述了每個容器日誌目的地。
      + **Amazon CloudWatch** – 將任務設定為將容器日誌傳送至 CloudWatch Logs。系統會提供預設日誌驅動程式選項，用來代表您建立 CloudWatch 日誌群組。若要指定不同的日誌群組名稱，請變更驅動程式選項值。
      + **Amazon Data Firehose** – 將任務設定為將容器日誌傳送至 Firehose。系統會提供預設日誌驅動程式選項，用來將日誌傳送至 Firehose 傳送串流。若要指定不同的交付串流名稱，請變更驅動程式選項值。
      + **Amazon Kinesis Data Streams** – 將任務設定為將容器日誌傳送至 Amazon Kinesis Data Streams。系統會提供預設日誌驅動程式選項，用來將日誌傳送至 Kinesis Data Streams 串流。若要指定不同的串流名稱，請變更驅動程式選項值。
      + **Amazon OpenSearch Service** – 將任務設定為將容器日誌傳送至 OpenSearch Service 網域。務必提供日誌驅動程式選項。
      + **Amazon S3**：將任務設定為將容器日誌傳送至 Amazon S3 儲存貯體。系統會提供預設日誌驅動程式選項，但您必須指定有效的 Amazon S3 儲存貯體名稱。

   1. （選用） 若要啟用存取日誌，請遵循下列步驟：

      1. 展開**存取日誌組態**。針對**格式**，選擇 **JSON** 或 `TEXT`。

      1. 若要在存取日誌中包含查詢參數，請選取**包含查詢參數**。

1. (選用) 若要使用服務探索與服務互連，請展開**服務探索**區段，然後執行下列動作。

   1. 選取**使用服務探索**。

   1. 若要使用新的命名空間，請在**設定命名空間**下選擇**建立新的命名空間**，然後提供命名空間名稱與描述。若要使用現有命名空間，請選擇**選取現有的命名空間**，然後選擇要使用的命名空間。

   1. 提供服務探索服務資訊，例如服務的名稱與描述。

   1. 若要讓 Amazon ECS 定期執行容器層級運作狀態檢查，請選取**啟用 Amazon ECS 任務運作狀態傳播**。

   1. 針對 **DNS record type** (DNS 紀錄類型)，選擇您要為服務建立的 DNS 紀錄類型。Amazon ECS 服務探索僅支援 **A** 與 **SRV** 記錄，這取決於任務定義指定的網路模式。如需有關此類記錄類型的詳細資訊，請參閱 *Amazon Route 53 開發人員指南*中的[支援的 DNS 紀錄類型](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/ResourceRecordTypes.html)。
      + 如果服務任務指定的任務定義使用的是 `bridge` 或 `host` 網路模式，僅支援類型 **SRV** 記錄。選擇容器名稱和連接埠組合以與該紀錄建立關聯。
      + 如果服務任務指定的任務定義使用的是 `awsvpc` 網路模式，選取 **A** 或 **SRV** 紀錄類型。如果選擇 **A**，請跳到下一步驟。如果選取 **SRV**，指定可找到該服務的連接埠，或是容器名稱和連接埠組合，以與該記錄建立關聯。

      針對 **TTL**，輸入 DNS 解析器和網頁瀏覽器快取記錄集的時間 (以秒為單位)。

1. (選用) 若要使用 VPC Lattice，請展開 **VPC Lattice** 與服務互連，然後執行下列動作：

   1. 選取**開啟 VPC Lattice**

   1. 在**基礎結構角色**欄位中，選擇對應的基礎結構角色。

      如果尚未建立角色，請選擇**建立基礎結構角色**。

   1. 在**目標群組**下，選擇一個或多個目標群組。您需要選擇至少一個目標群組，最多可以選擇五個。選擇**新增目標群組**以新增額外的目標群組。針對選擇的每個目標群組，選擇**連接埠名稱**、**通訊協定**與**連接埠**。

      若要刪除目標群組，請選擇**移除**。
**注意**  
若要新增現有的目標群組，需要使用 AWS CLI。如需如何使用 新增目標群組的指示 AWS CLI，請參閱《* AWS Command Line Interface 參考*》中的 [register-targets](https://docs.aws.amazon.com/cli/latest/reference/vpc-lattice/register-targets.html)。
雖然 VPC Lattice 服務可以有多個目標群組，但每個目標群組只能新增至一項服務。

   1. 若要完成 VPC Lattice 組態，請在接聽程式預設動作中或在 VPC Lattice 主控台的現有 VPC Lattice 服務的規則中包含新目標群組。如需詳細資訊，請參閱 [VPC Lattice 服務的接聽程式規則](https://docs.aws.amazon.com/vpc-lattice/latest/ug/listener-rules.html)。

1. (選用) 若要設定服務的負載平衡器，請展開 **Load balancing** (負載平衡) 區段。

   選擇負載平衡器。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonECS/latest/developerguide/create-service-console-v2.html)

1. (選用) 若要設定服務自動擴展功能，請展開**服務自動擴展**區段，然後指定下列參數。若要使用預測自動擴展功能 (該功能可查看過去從流量流程載入的資料)，請在建立服務後進行設定。如需詳細資訊，請參閱[使用歷史模式透過預測擴展來擴展 Amazon ECS 服務](predictive-auto-scaling.md)。

   1. 若要使用服務自動擴展，請選取 **Service auto scaling** (服務自動擴展)。

   1. 在**任務數量下限**欄位中，輸入供服務自動擴展功能使用的任務數量下限。所需的計數不會低於此計數。

   1. 在**任務數量上限**中，輸入供服務自動擴展功能使用的任務數量上限。所需的計數不會高於此計數。

   1. 選擇政策類型。在**擴展政策類型**下，選擇下列其中一個選項。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonECS/latest/developerguide/create-service-console-v2.html)

1. (選用) 若要使用預設以外的任務置放策略，請展開**任務置放**，然後從下列選項中選擇。

    如需詳細資訊，請參閱[Amazon ECS 如何在容器執行個體上置放任務](task-placement.md)。
   + **AZ 平衡分散** - 在可用區域及可用區域中的容器執行個體之間分散任務。
   + **AZ 平衡 BinPack** - 使用最低可用記憶體，在可用區域及可用區域中的容器執行個體之間分散任務。
   + **BinPack** - 根據最低可用的 CPU 或記憶體數分散任務。
   + **每個主機一個任務** - 在每個容器執行個體上最多置放一個服務的任務。
   + **自訂** – 定義自己的任務置放策略。

   如果選擇**自訂**，則請定義置放任務的演算法，以及在任務置放期間考慮的規則。
   + 在**策略**下，針對**類型**和**欄位**，選擇演算法以及要用於演算法的實體。

     您最多可新增 5 項策略。
   + 在 **Constraint** (限制條件)，針對 **Type** (類型) 和 **Expression** (運算式)，選擇要用於限制條件的規則與屬性。

     例如，若要設定限制條件，以將任務置放在 T2 執行個體上，針對**運算式**，請輸入 **attribute:ecs.instance-type =\$1 t2.\$1**。

     您最多可新增 10 個限制條件。

1. 如果任務使用的資料磁碟區與部署時的組態相容，則可透過展開**磁碟區**區段對磁碟區進行設定。

   磁碟區名稱與磁碟區類型會在建立任務定義修訂版時設定，且無法在服務建立期間變更。若要更新磁碟區名稱與類型，必須建立新的任務定義修訂版，並使用新修訂版建立服務。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonECS/latest/developerguide/create-service-console-v2.html)

1. 若要使用 ECS Exec 來偵錯服務，請在**對組態進行疑難排解**下，選取**開啟 ECS Exec**。

1. (選用) 為協助識別您的服務和任務，請展開 **Tags** (標籤) 區段，然後設定標籤。

   若要讓 Amazon ECS 使用叢集名稱和任務定義標籤，自動標記所有新啟動的任務，請選取 **Turn on Amazon ECS managed tags** (開啟 Amazon ECS 受管標籤)，然後針對 **Propagate tags from** (傳播標籤來源)，選取 **Task definitions** (任務定義)。

   若要讓 Amazon ECS 使用叢集名稱和服務標籤，自動標記所有新啟動的任務，請選取 **Turn on Amazon ECS managed tags** (開啟 Amazon ECS 受管標籤)，然後針對 **Propagate tags from** (傳播標籤來源)，選取 **Service** (服務)。

   新增或移除標籤。
   + [新增標籤] 選擇**新增標籤**，然後執行下列操作︰
     + 在**索引鍵**中，輸入索引鍵名稱。
     + 在**值**中，進入索引鍵值。
   + [移除標籤] 在標籤旁邊，選擇**移除標籤**。

1. 選擇**建立**。

## 後續步驟
<a name="create-service-next-steps"></a>

下列是建立服務後的其他動作。
+ 設定預測自動擴展功能，該功能可查看過去從流量流程載入的資料。如需詳細資訊，請參閱[使用歷史模式透過預測擴展來擴展 Amazon ECS 服務](predictive-auto-scaling.md)。
+ 追蹤部署，並檢視 Amazon ECS 斷路器服務的服務歷史記錄。如需詳細資訊，請參閱[使用 Amazon ECS 服務部署檢視服務歷史記錄](service-deployment.md)。