

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

# 更新 Amazon ECS 服務
<a name="update-service-console-v2"></a>

建立服務之後，有時可能需要更新服務參數，例如任務數量。

更新使用 Amazon ECS 斷路器的服務時，Amazon ECS 會建立服務部署與服務修訂版。這些資源可用於檢視服務歷史記錄的詳細資訊。如需詳細資訊，請參閱[使用 Amazon ECS 服務部署檢視服務歷史記錄](service-deployment.md)。

## 先決條件
<a name="update-service-prerequisites"></a>

更新服務之前，請先確認部署類型可以變更哪些服務參數。如需可變更參數的完整清單，請參閱[更新 Amazon ECS 服務參數](update-service-parameters.md)。

## 程序
<a name="update-service-procedure"></a>

------
#### [ Console ]

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

1. 在**叢集**頁面上，選擇叢集。

1. 在「叢集詳細資訊」頁面上的**服務**區段中，選取服務旁的核取方塊，然後選擇**更新**。

1. 若要讓服務啟動新部署，請選取 **Force new deployment** (強制執行新部署)。

1. 在**任務定義**中，選擇任務定義系列和修訂。
**重要**  
主控台會驗證所選任務定義系列與修訂版是否與定義的運算組態相容。如果您收到警告，請確認已選取任務定義相容性與運算組態。

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

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

1. 針對 **Min running tasks** (執行中任務下限)，輸入部署期間必須維持在 `RUNNING` 狀態的服務任務數量下限，它是所需任務數量的百分比 (無條件進位到最接近的整數)。如需詳細資訊，請參閱[部署組態](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service_definition_parameters.html#sd-deploymentconfiguration)。

1. 針對 **Max running tasks** (執行中任務上限)，輸入部署期間允許的處於 `RUNNING` 或 `PENDING` 狀態的服務任務數目上限，它是所需任務數量的百分比 (無條件捨去到最接近的整數)。

1. 若要設定服務的任務部署方式，請展開**部署選項**區段，然後設定選項。

   1. 在**部署控制器類型**欄位中，指定服務部署控制器。Amazon ECS 主控台支援下列控制器類型：`ECS`。

   1. 在**部署策略**欄位中，選擇 Amazon ECS 用來部署新版本服務的策略。

   1. 根據**部署策略**的選擇，執行下列動作：    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonECS/latest/developerguide/update-service-console-v2.html)

   1. 若要為生命週期階段執行 Lambda 函式，請在**部署 lifecycle hook** 下為每個唯一的 Lambda 函式執行下列動作：

      1. 選擇**新增**。

         針對每個要執行的唯一函式重複此步驟。

      1. 在 **Lambda 函式**欄位中輸入函式名稱。

      1. 在**角色**欄位中，選擇您在先決條件中建立的具有藍/綠部署許可的角色。

         如需詳細資訊，請參閱[Amazon ECS 藍/綠部署中 Lambda 函式所需的許可](blue-green-permissions.md)。

      1. 在**生命週期階段**欄位中選取 Lambda 函式執行的階段。

      1.  (選用) 在**勾點詳細資訊**欄位中，輸入提供勾點相關資訊的鍵值對。

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

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

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

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

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

1. 若要變更運算選項，請展開**運算組態**區段，然後執行下列動作：

   1. 對於 上的服務 AWS Fargate，對於**平台版本**，請選擇新版本。

   1. 對於使用容量提供者策略的服務，請針對**容量提供者策略**，執行下列動作：
      + 若要新增其他容量提供者，請選擇 **Add more** (新增更多)。然後，針對 **Capacity provider** (容量提供者)，選擇容量提供者。
      + 若要移除容量提供者，請選擇容量提供者右側的 **Remove** (移除)。

      使用 Auto Scaling 群組容量提供者的服務無法更新為使用 Fargate 容量提供者。使用 Fargate 容量提供者的服務無法更新為使用 Auto Scaling 群組容量提供者。

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/update-service-console-v2.html)

1. (選用) 若要使用 Service Connect，請選取 **Turn on Service Connect** (開啟 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. 如果任務使用的資料磁碟區與部署時的組態相容，則可透過展開**磁碟區**區段對磁碟區進行設定。

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

1. (選用) 為協助識別您的服務，請展開 **Tags** (標籤) 區段，然後設定標籤。
   + [新增標籤] 選擇**新增標籤**，並執行下列動作：
     + 在**金鑰**欄位中，輸入金鑰名稱。
     + 在**值**中，進入索引鍵值。
   + [移除標籤] 在標籤旁邊，選擇 **移除標籤**。

1. 選擇**更新**。

------
#### [ AWS CLI ]
+ 執行 `update-service`。如需有關執行 命令的資訊，請參閱《 AWS Command Line Interface 參考》中的 [update-service](https://docs.aws.amazon.com/cli/latest/reference/ecs/update-service.html)。

  下列 `update-service` 範例會將服務 `my-http-service` 所需的任務計數更新為 2。

  將 *user-input* 取代為實際值。

  ```
  aws ecs update-service \
      --cluster MyCluster \
      --service my-http-service \
      --desired-count 2
  ```

------

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

追蹤部署，並檢視 Amazon ECS 斷路器服務的服務歷史記錄。如需詳細資訊，請參閱[使用 Amazon ECS 服務部署檢視服務歷史記錄](service-deployment.md)。