

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

# 更新 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. 根據**部署策略**的選擇，執行下列動作：


<table>
<thead>
  <tr><th>部署策略</th><th>步驟</th><th></th></tr>
</thead>
<tbody>
  <tr><td><b>滾動更新</b></td><td> <ol><li> 在<b>執行中任務百分比下限</b>欄位中，請指定必須在服務部署期間執行的任務百分比值下限。如需詳細資訊，請參閱<a href="deployment-type-ecs.md">透過取代任務來部署 Amazon ECS 服務</a>。 </li><li> 在<b>執行中任務百分比上限</b>欄位中，請指定可以在服務部署期間執行的任務百分比值上限。如需詳細資訊，請參閱<a href="deployment-type-ecs.md">透過取代任務來部署 Amazon ECS 服務</a>。 </li></ol></td><td></td></tr>
  <tr><td><b>藍/綠</b></td><td>在<b>封裝時間</b>欄位中，指定藍色與綠色服務修訂版應同時執行的持續時間 (以分鐘為單位)。如需詳細資訊，請參閱<a href="deployment-type-blue-green.md">Amazon ECS 藍/綠部署</a>。</td><td></td></tr>
</tbody>
</table>


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

      1. 選擇**新增**。

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

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

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

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

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

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

1. 在**部署組態**下，若要在目標服務修訂達到完整所需計數之前完成部署，請設定早期成功條件。您也可以選擇 Amazon ECS 何時清除來源服務修訂版上的任務。

   1. 開啟**早期成功條件**。

   1. 針對**運作狀態百分比**，輸入在 Amazon ECS 完成部署之前，必須在目標服務修訂版上執行且運作狀態良好的任務百分比。

   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. 選擇政策類型。在**擴展政策類型**下，選擇下列其中一個選項。


<table>
<thead>
  <tr><th>使用此政策類型</th><th>執行此作業</th><th></th></tr>
</thead>
<tbody>
  <tr><td>目標追蹤</td><td> <ol><li> 針對 <b>Scaling policy type</b> (擴展政策類型)，選擇 <b>Target tracking</b> (目標追蹤)。 </li><li> 針對 <b>Policy name</b> (政策名稱)，輸入政策的名稱。 </li><li> 針對 <b>ECS service metric</b> (ECS 服務指標)，選擇下列其中一項指標。 <ul><li>  <b>ECSServiceAverageCPUUtilization</b> – 服務的平均 CPU 使用率。 </li><li> <b>ECSServiceAverageMemoryUtilization</b> – 服務的平均記憶體使用率。 </li><li> <b>ALBRequestCountPerTarget</b> – Application Load Balancer 目標群組中每個目標的已完成請求數。 </li></ul> </li><li> 針對 <b>Target value</b> (目標值)，輸入服務為選取的指標保持的值。 </li><li> 在<b>橫向擴充冷卻時間</b>欄位中，輸入一個橫向擴充活動 (新增任務) 完成之後、另一個橫向擴充活動開始之前，必須經過的時間 (以秒為單位)。 </li><li> 在<b>縮減冷卻時間</b>欄位中，輸入一個縮減活動 (移除任務) 完成之後、另一個縮減活動開始之前，必須經過的時間 (以秒為單位)。 </li><li> 若要防止政策執行縮減活動，請選取 <b>Turn off scale-in</b> (關閉縮減)。 </li><li> • (選用) 如果希望擴展政策在流量增加時進行橫向擴充，但不需要在流量減少時縮減，請選取<b>關閉縮減</b>。 </li></ol></td><td></td></tr>
  <tr><td>步驟擴展 </td><td> <ol><li> 針對 <b>Scaling policy type</b> (擴展政策類型)，選擇 <b>Step scaling</b> (步驟擴展)。 </li><li> 在 <b>Policy Name</b> (政策名稱) 輸入政策的名稱。 </li><li> 針對 <b>Alarm name (警示名稱)</b>，輸入警示的唯一名稱。 </li><li> 針對 <b>Amazon ECS service metric</b> (Amazon ECS 服務指標)，選擇用於警示的指標。 </li><li> 針對 <b>Statistic</b> (統計資料)，選擇警示統計資料。 </li><li> 針對 <b>Period</b> (期間)，選擇警示的期間。 </li><li> 針對 <b>Alarm condition</b> (警示條件)，選擇如何比較選取的指標與定義的閾值。 </li><li> 針對 <b>Threshold to compare metrics</b> (比較閾值與指標) 和 <b>Evaluation period to initiate alarm</b> (啟動警示的評估期)，輸入用於警示的閾值以及評估閾值的時間長度。 </li><li> 在 <b>Scaling actions</b> (擴展動作) 下，執行下列動作： <ul><li> 在<b>動作</b>欄位中，選取是為服務新增、移除還是設定特定的所需計數。 </li><li> 如果選擇新增或移除任務，請在<b>值</b>欄位中，輸入啟動擴展動作時要新增或移除的任務數量 (或現有任務的百分比)。如果您選擇設定所需的計數，請輸入任務數量。對於 <b>Type</b> (類型)，選取 <b>Value</b> (值) 是整數或是現有所需計數的百分比值。 </li><li>  針對 <b>Lower bound</b> (下限) 和 <b>Upper bound</b> (上限)，輸入步驟擴展調整的下界限和上界限。根據預設，新增政策的下限為警示閾值，而上限為無限大正數 (+) 值。根據預設，移除政策的上限為警示閾值，而下限為無限小負數 (-) 值。 </li><li> (選用) 新增其他擴展選項。選擇<b>新增擴展動作</b>，然後重複<b>擴展動作</b>步驟。 </li><li> 在<b>冷卻時間</b>欄位中，輸入等待上一個擴展活動生效的時間 (以秒為單位)。對於新增政策，這是橫向擴充活動結束之後，擴展政策封鎖縮減活動並限制一次可以橫向擴充多少項任務的時間。對於移除政策，這是一個縮減活動結束之後、另一個縮減活動開始之前必須經過的時間。 </li></ul> </li></ol> </td><td></td></tr>
</tbody>
</table>


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

   磁碟區名稱與磁碟區類型會在建立任務定義修訂版時設定，且無法在更新服務時變更。若要更新磁碟區名稱與類型，必須建立新的任務定義修訂版，並使用新的修訂版來更新服務。


<table>
<thead>
  <tr><th>設定此磁碟區類型</th><th>執行此作業</th><th></th></tr>
</thead>
<tbody>
  <tr><td>Amazon EBS</td><td> <ol><li> 在 <b>EBS 磁碟區類型</b>欄位中，選擇要連接至任務的 EBS 磁碟區類型。 </li><li> 在<b>大小 (GiB)</b> 欄位中，輸入磁碟區大小的有效值 (以 GiB 為單位)。您可以指定磁碟區大小 (大小下限 1 GiB，大小上限 16,384 GiB)。除非提供快照 ID，否則需要此值。 </li><li> 在 <b>IOPS</b> 欄位中，輸入磁碟區應提供的輸入/輸出操作次數 (IOPS) 上限。此值僅可針對 <code>io1</code>、<code>io2</code> 與 <code>gp3</code> 磁碟區類型設定。 </li><li> 在 <b>輸送量 (MiB/s)</b> 欄位中，輸入磁碟區應提供的輸送量 (以 MiBps 或 MiB/s 為單位)。此值僅可針對 <code>gp3</code> 磁碟區類型設定。 </li><li> 在<b>快照 ID</b> 欄位中，若想從快照建立磁碟區，請選擇現有的 Amazon EBS 磁碟區快照或輸入快照的 ARN。您也可以不選擇或不輸入快照 ID，建立新的空白磁碟區。 </li><li> 如果指定了<b>快照 ID</b>，則可指定<b>磁碟區初始化速率 (MiB/s)</b>。輸入一個介於 100 至 300 MiB/s 之間的值，該值將決定從使用<b>快照 ID</b> 指定的快照在建立磁碟區時載入資料的速度。 </li><li> 在<b>檔案系統類型</b>欄位中，選擇用於磁碟區上資料儲存與擷取的檔案系統類型。您可以選擇作業系統預設值或特定檔案系統類型。Linux 的預設值為 <code>XFS</code>。對於從快照建立的磁碟區，您必須指定與建立快照時磁碟區所使用的相同檔案系統類型。如果有檔案系統類型不相符，則任務將無法啟動。 </li><li> 在<b>基礎結構角色</b>欄位中，選擇具有必要許可的 IAM 角色，以允許 Amazon ECS 管理任務的 Amazon EBS 磁碟區。您可以將 <code>AmazonECSInfrastructureRolePolicyForVolumes</code> 受管政策連接至該角色，也可參照該政策建立並連接自己的政策，該政策需具有符合特定需求的許可。如需有關必要許可的詳細資訊，請參閱 <a href="infrastructure_IAM_role.md">Amazon ECS 基礎結構 IAM 角色</a>。 </li><li> 若想依預設設定使用 Amazon EBS 加密，請在<b>加密</b>欄位中選擇<b>預設值</b>。如果您的帳戶已<a href="https://docs.aws.amazon.com/ebs/latest/userguide/encryption-by-default.html">預設設定加密</a>，則會使用設定中指定的 AWS Key Management Service (AWS KMS) 金鑰來加密磁碟區。如果選擇<b>預設</b>，但未開啟 Amazon EBS 預設加密，則磁碟區將取消加密。 <br />如果您選擇<b>自訂</b>，您可以為磁碟區加密指定 AWS KMS key 您選擇的 。 <br />如果選擇<b>無</b>，除非您已設定為預設加密，或者從加密快照建立磁碟區，否則磁碟區將不會加密。 </li><li> 如果您已選擇<b>自訂</b><b>加密</b>，則必須指定要使用 AWS KMS key 的 。在 <b>KMS 金鑰</b>欄位中選擇 AWS KMS key 或輸入金鑰 ARN。如果您選擇使用對稱客戶受管金鑰來加密磁碟區，請確定您已在 AWS KMS key 政策中定義正確的許可。如需詳細資訊，請參閱 <a href="https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ebs-volumes.html?icmpid=docs_ecs_hp-deploy#ebs-kms-encryption">Amazon EBS 磁碟區的資料加密</a>。 </li><li> (選用) 在<b>標籤</b>下，您可以透過從任務定義或服務傳播標籤或提供自己的標籤，將標籤新增至 Amazon EBS 磁碟區。 <br /> 如果要從任務定義傳播標籤，請在<b>傳播標籤來源</b>欄位中選擇<b>任務定義</b>。如果要從服務傳播標籤，請在<b>傳播標籤來源</b>欄位中選擇<b>服務</b>。如果選擇<b>不傳播</b>，或者未選擇任何值，則不會傳播標籤。 <br />如果要提供自己的標籤，請選擇<b>新增標籤</b>，然後為每個新增的標籤提供鍵與值。 <br />如需有關標記 Amazon EBS 磁碟區的詳細資訊，請參閱<a href="https://docs.aws.amazon.com/AmazonECS/latest/developerguide/specify-ebs-config.html#ebs-volume-tagging">標記 Amazon EBS 磁碟區</a>。 </li></ol></td><td></td></tr>
</tbody>
</table>


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)。