

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

# 使用排程動作來擴展 Amazon ECS 服務
<a name="service-autoscaling-schedulescaling"></a>

透過排程擴展，您可以建立排程動作，根據所預測的負載變動，在特定時間增加或減少任務數量，針對應用程式設定自動擴展。如此一來，您便能主動調整應用程式規模，以符合負載變動預測。

藉由這些排定的擴展動作，您可將費用和效能調整到最佳狀態。應用程式將擁有足夠數量的任務來處理週間的流量高峰，但在其他時段不會過度佈建任務數量。

您可以搭配利用排程擴展和擴展政策，以主動和被動的方式處理規模擴展作業，同時享有這兩種方法的好處。執行排定的擴展動作後，擴展政策可以繼續決定是否進一步擴展任務數量。這有助於確保您擁有足夠數量的任務來處理應用程式負載。當應用程式擴展以滿足需求時，目前的容量必須處於排程動作所設定的任務數量上下限之內。

可以使用 AWS CLI設定排程擴展。如需有關排程擴展的詳細資訊，請參閱 *Application Auto Scaling User Guide* 中的 [Scheduled Scaling](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-scheduled-scaling.html)。

# 為 Amazon ECS 服務自動擴展功能建立排程動作
<a name="scheduled-action-create-policy"></a>

您建立排程動作時，Amazon ECS 會根據日期與時間增加或減少服務執行的任務數量。

## 主控台
<a name="scheduled-action-policy-aws-console"></a>

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

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

1. 在「叢集詳細資訊」頁面上的**服務**區段中，選擇所需服務。

   服務資訊頁面隨即顯示。

1. 選擇**服務自動擴展**。

   服務自動擴展頁面隨即顯示。

1. 如果您尚未設定服務自動擴展功能，請選擇**設定任務數量**。

   **Amazon ECS 服務任務計數**區段隨即顯示。

   在 **Amazon ECS 服務任務計數**下，選擇**使用服務自動擴展來調整服務所需的任務計數**。

   **任務計數**區段隨即顯示。

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

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

   1. 選擇**儲存**。

      政策頁面隨即顯示。

1. 選擇**排程動作**，然後選擇**建立**。

   **建立排程動作**頁面隨即顯示。

1. 在**名稱**欄位中輸入唯一的名稱。

1. 對於 **Time zone** (時區)，選擇時區。

   所有列出的時區都來自 IANA 時區資料庫。如需詳細資訊，請參閱 [List of tz database time zones](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones)。

1. 在**開始時間**欄位中，輸入動作開始的**日期**與**時間**。

   如果選擇週期性排程，開始時間會定義週期性序列中第一個排程作業的執行時間。

1. 針對 **Recurrence** (週期)，選擇其中一個可用選項。
   + 若要依週期性排程進行擴展，請選擇 Amazon ECS 執行排程動作的頻率。
     + 如果選擇以**速率**開始的選項，則會為您建立 Cron 表達式。
     + 如果選擇 **Cron**，請輸入指定何時執行動作的 Cron 表達式。
   + 若僅擴展一次，請選擇**一次**。

1. 在**任務調整**下，執行下列動作：
   + 在**下限**欄位中，輸入服務應執行的任務數量下限。
   + 在**上限**欄位中，輸入服務應執行的任務數量上限。

1. 選擇**建立排程動作**。

## CLI
<a name="scheduled-action-aws-cli"></a>

使用 設定服務的排程擴展政策 AWS CLI ，如下所示。將每個*使用者輸入預留位置*替換為自己的資訊。

**範例：僅擴展一次**  
搭配 `--start-time "YYYY-MM-DDThh:mm:ssZ"` 以及 `--MinCapacity` 與 `--MaxCapacity` 選項之一或兩者，使用下列 [put-scheduled-action](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/put-scheduled-action.html) 命令。

```
aws application-autoscaling put-scheduled-action --service-namespace ecs \
  --resource-id service/my-cluster/my-service \
  --scheduled-action-name my-one-time-schedule \
  --start-time 2021-01-30T12:00:00 \
  --scalable-target-action MinCapacity=3,MaxCapacity=10
```

**範例：依據週期性排程排定擴展**  
使用下列 [put-scheduled-action](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/put-scheduled-action.html) 命令。將 *user input* 取代為實際值。

```
aws application-autoscaling put-scheduled-action --service-namespace ecs \
  --resource-id service/my-cluster/my-service \
  --scheduled-action-name my-recurring-action \
  --schedule "rate(5 hours)" \
  --start-time 2021-01-30T12:00:00 \
  --end-time 2021-01-31T22:00:00 \
  --scalable-target-action MinCapacity=3,MaxCapacity=10
```

指定的週期性排程會根據 UTC 時區執行。若要指定不同的時區，請包含 `--time-zone` 選項與 IANA 時區的名稱，如下列範例所示。

```
--time-zone "America/New_York"
```

如需詳細資訊，請參閱 [List of tz database time zones](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones)。