

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

# 建立 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)。