

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

# 自動化停止和啟動排程
<a name="windows-ec2-schedules"></a>

## 概觀
<a name="windows-ec2-schedules-overview"></a>

[上的執行個體排程器 AWS](https://aws.amazon.com/solutions/implementations/instance-scheduler-on-aws/)可以透過自動啟動和停止 [Amazon EC2](https://aws.amazon.com/ec2/) 和 [Amazon Relational Database Service (Amazon RDS) ](https://aws.amazon.com/rds/)執行個體，協助您降低營運成本。如果您讓所有執行個體持續以完全使用率執行，最終可能會支付未使用的資源費用。開啟執行個體排程器 AWS 可讓您在不需要執行個體的時段內關閉執行個體，例如非上班時間、週末或用量低的其他時段。這可能會導致長期大幅節省成本。

上的執行個體排程器 AWS 也提供跨帳戶執行個體排程、自動標記，以及使用命令列界面或[AWS Systems Manager](https://aws.amazon.com/systems-manager/)維護時段來設定排程或期間的功能。這些功能可協助您更有效且準確地跨不同的專案或團隊追蹤和分配成本。

## 案例研究
<a name="windows-ec2-schedules-studies"></a>

考慮生產環境中在 AWS 上使用執行個體排程器的公司範例，以每天在營業時間外自動停止執行個體。如果該公司以完全使用率保留其所有執行的執行個體，則這些執行個體最多可以節省 70% 的成本，而這些執行個體只在正常上班時間才需要。下表顯示每週使用率如何從 168 小時減少為 50 小時。



![\[每週使用率降低圖表\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/optimize-costs-microsoft-workloads/images/instance_scheduler_case_study.png)


考慮另一個範例。電力公用事業公司 Jamaica Public Service Company Limited (JPS) 將其資料庫遷移至 Amazon RDS。現在，JPS 使用 Amazon EC2 託管 API 服務並執行其他應用程式。對於 JPS， 上的執行個體排程器 AWS 成為管理非生產環境的關鍵工具。JPS 使用 上的執行個體排程器 AWS 來降低開發成本，並根據團隊需求和工作排程管理 EC2 執行個體。這有助於 JPS 將成本降低 40%。如需詳細資訊，請參閱 AWS 案例研究 [Jamaica Public Service 有效率地遷移至雲端，使用 AWS 執行個體排程器將成本降低 40%](https://aws.amazon.com/solutions/case-studies/jamaica-public-service-case-study/#:~:text=%E2%80%9CMigrating%20to%20AWS%20has%20minimized,EC2%20and%20Amazon%20RDS%20instances.)。

## 成本最佳化案例
<a name="windows-ec2-schedules-costopt"></a>

下列範例案例有助於說明在 上使用執行個體排程器的成本優勢 AWS。在此案例中，新加坡一家主要零售公司在 Amazon EC2 上部署兩個 Windows 環境。行銷團隊會使用稱為工作負載 A 的第一個環境，在商店開放時分析即時的商店內交易。第二個環境稱為工作負載 B，保留給會計團隊，僅在正常上班時間內運作。考慮到目前的使用模式，這兩個環境 （全年無休） 目前的操作排程並不理想，並且需要最佳化以降低公司的營運成本。

下圖顯示最佳化之前的每月成本。

![\[最佳化之前的每月成本\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/optimize-costs-microsoft-workloads/images/instance_scheduler_workloadA_arch.png)


例如，3 月有 31 天，其中 23 天是工作日。如果行銷團隊在 上使用執行個體排程器 AWS ，並且僅在需要時才操作其執行個體 （即每月 321 小時，而不是每月 730 小時），他們可能會每月節省 932.52 美元。這相當於降低 56% 的營運成本。會計團隊也會遇到顯著的優勢，其執行個體使用時間從每月 730 小時降至 230 小時。這會降低 1，140 USD 或 68.5%。公司每月可節省總計 2，072.52 USD （相當於 62% 的折扣） 或每年 24，870.24 USD。

下圖顯示最佳化後的每月成本。

![\[最佳化後的每月成本\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/optimize-costs-microsoft-workloads/images/instance_scheduler_workloadB_arch.png)


**注意**  
此範例的定價由 [AWS 定價計算工具](https://calculator.aws/) 2023 年 3 月使用 決定。

## 成本最佳化建議
<a name="windows-ec2-schedules-costopt-rec"></a>

本節說明如何根據 AWS 上一個*成本最佳化案例*一節涵蓋的範例案例來部署和設定執行個體排程器。建議您在 上使用執行個體排程器，採取下列後續步驟來最佳化成本 AWS：

1. 啟動執行個體排程器堆疊

1. 設定期間

1. 設定排程

1. 標記 執行個體

下列架構圖顯示執行個體排程器堆疊 AWS 雲端 在 中建立的內容。

![\[執行個體排程器堆疊架構\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/optimize-costs-microsoft-workloads/images/instance_scheduler_cfn_arch.png)


圖表顯示下列工作流程步驟：

1.  AWS CloudFormation 範本會以您定義的間隔設定 Amazon CloudWatch 事件。此事件會叫用 AWS Lambda 函數。在組態期間，您可以定義 AWS 區域 和 帳戶。您也可以定義 上的執行個體排程器 AWS 用來將排程與適用的 Amazon EC2 執行個體、Amazon RDS 執行個體和叢集建立關聯的自訂標籤。

1. 排程組態值存放在 Amazon DynamoDB 中，Lambda 函數會在每次執行時擷取這些值。然後，您可以將自訂標籤套用至適用的執行個體。

1. 在執行個體排程器的初始組態期間，您可以定義標籤索引鍵來識別適用的 Amazon EC2 和 Amazon RDS 執行個體。當您建立排程時，您指定的名稱會用作標籤值，以識別您要套用至已標記資源的排程。

### 啟動執行個體排程器堆疊
<a name="schedules-costopt-launch1"></a>

本節說明如何啟動執行個體排程器的 CloudFormation 堆疊 AWS。

**注意**  
您需負擔在執行執行個體排程器 AWS 服務 時使用的 成本 AWS。自 2023 年 1 月起，在 `us-east-1` 區域中使用預設設定執行此解決方案的成本約為每月 9.90 USD 的 Lambda 費用，或者如果您有 Lambda 免費方案每月用量額度，則費用會較低。如需詳細資訊，請參閱 AWS 解決方案程式庫中[AWS 實作指南上執行個體排程器](https://docs.aws.amazon.com/solutions/latest/instance-scheduler-on-aws/cost.html)*的成本*一節。

若要啟動執行個體排程器堆疊，請完成下列步驟。

1. 登入 [AWS 管理主控台](https://console.aws.amazon.com/)，然後選擇 [啟動解決方案](https://us-east-1.console.aws.amazon.com/cloudformation/home?region=us-east-1#/stacks/create?templateURL=https://s3.amazonaws.com/solutions-reference/instance-scheduler-on-aws/latest/instance-scheduler-on-aws.template) （可下載範本） 以啟動 `instance-scheduler-on-aws.template` CloudFormation 範本。
**注意**  
您也可以將[下載範本](https://s3.amazonaws.com/solutions-reference/instance-scheduler-on-aws/latest/instance-scheduler-on-aws.template)作爲自有實作的起點。

1. 根據預設，範本會在美國東部 （維吉尼亞北部） 區域啟動。若要在不同區域中啟動執行個體排程器，請使用主控台導覽列中的區域選擇器。
**注意**  
此範例使用亞太區域 （新加坡） 區域。

1. 在 **建立堆疊**頁面的**先決條件 - 準備範本**區段中，確認已選取**範本就緒**選項。在**範本來源區段**中，確認已選取 **Amazon S3 URL** 選項。

1. 確認正確的範本 URL 位於 **Amazon S3 URL **文字方塊中，然後選擇 **下一步**。

1. 在 **指定堆疊詳細資訊**頁面上，為您的解決方案堆疊指派名稱。如需有關命名字元限制的資訊，請參閱《 AWS Identity and Access Management (IAM) 文件》中的 IAM [和 STS 限制](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html) 。本指南中範例的堆疊名稱稱為 `MyInstanceScheduler`。
**注意**  
堆疊名稱不能包含超過 28 個字元。

1. 在 **參數**下，檢閱範本的參數，並視需要修改。

1. 選擇**下一步**。在 **Configure stack options** (設定堆疊選項) 頁面，選擇 **Next** (下一步)。

1. 在 **檢閱**頁面上，檢閱並確認設定。選取確認範本將建立 IAM 資源的方塊。

1. 選擇**建立**以部署堆疊。

### 設定期間
<a name="schedules-costopt-periods2"></a>

部署 CloudFormation 範本之後，解決方案會建立 DynamoDB 資料表，其中包含範例期間規則和排程，您可以用來做為建立自訂期間規則和排程的參考。如需期間組態範例，請參閱 文件上執行個體排程器 AWS 中[的範例](https://docs.aws.amazon.com/solutions/latest/instance-scheduler-on-aws/sample-schedules.html)排程。

若要完成此案例的步驟，您必須產生對應於每個工作負載的期間，並滿足其特定需求。例如：

```
Period 1 (Workload A):
    Name: retail-hours
    Days: Monday to Sunday
    Hours: 1100 - 2300
Period 2 (Workload B):
    Name: office-hours
    Days: Monday to Friday
    Hours: 0800 - 1800
```

若要設定期間，請完成下列步驟：

1. 登入 [DynamoDB 主控台](https://console.aws.amazon.com/dynamodb/home)，並確保您位於您在 上為執行個體排程器啟動 CloudFormation 範本的相同區域 AWS。

1. 在導覽窗格中，選擇**資料表**，然後選取名為 **ConfigTable** 的資料表。

1. 選擇**探索資料表****項目**。

1. 若要建立上班時間的期間，請選取**上班時間**項目的**期間**。

1. 在**編輯項目**頁面上，將**開始時間**的值變更為 **0800**，**結束時間**變更為 **1800**。保留工作日的預設值。
**注意**  
**開始時間**和**結束時間**值決定何時應啟動和停止執行個體，而**工作日**值則決定此排程套用的星期幾 （此範例為週一至週五）。

1. 選擇**儲存變更**。

1. 若要複製**辦公時間**期間並使用它來建立新的零售時間期間，請選取**辦公時間**項目的**期間**。然後，從**動作**功能表中，選擇**複製項目**。

1. 修改屬性以符合您的需求。下列屬性用於滿足範例案例的需求：

   ```
   type: period
   name: retail-hours
   begintime: 11:00
   description: Retail hours
   endtime: 23:00
   weekdays: mon-sun
   ```

1. 選擇 **Create item** (建立項目)。

1. 在 DynamoDB **ConfigTable** 中，識別您剛在項目清單中列出的兩個期間。

### 設定排程
<a name="schedules-costopt-schedules3"></a>

在開啟執行個體排程器的情況下 AWS，排程是指一或多個期間和相關時區的應用程式。然後，這些排程會以標籤的形式指派給您的執行個體。本節說明如何建立兩個排程 （如下所示），以適應兩個範例工作負載的不同時間模式，然後將排程與您在上一節中建立的期間建立關聯。

```
Schedule 1:
    Name: singapore-office-hours
    Period: office-hours
    Timezone: Asia/Singapore
Schedule 2:
    Name: singapore-retail-hours
    Period: retail-hours
    Timezone: Asia/Singapore
```

若要建立和設定排程，請完成下列步驟：

1. 登入 [DynamoDB 主控台](https://console.aws.amazon.com/dynamodb/home)，並確保您位於您在 上為執行個體排程器啟動 CloudFormation 範本的相同區域 AWS。

1. 在導覽窗格中，選擇**資料表**，然後選取名為 **ConfigTable** 的資料表。

1. 選擇**探索資料表****項目**。

1. 若要複製英國上班時間排程，並用它來為您的上班時間 （新加坡上班時間，在此範例中） 建立新的排程，請選取 **uk-office-hours **項目的**排程**。然後，從**動作**功能表中，選擇**複製項目**。

1. 修改屬性以符合您的需求。下列屬性用於滿足範例案例的需求：

   ```
   type: schedule
   name: singapore-office-hours
   description: Office hours in Singapore
   periods: office-hours
   timezone: Asia/Singapore
   ```

1. 選擇 **Create item** (建立項目)。

1. 重複步驟 4-6，使用下列屬性值建立新加坡零售時數的排程：

   ```
   type: schedule
   name: singapore-retail-hours
   description: Retail hours in Singapore
   periods: retail-hours
   timezone: Asia/Singapore
   ```

1. 在 DynamoDB **ConfigTable** 中，識別您建立的兩個排程和兩個期間。

### 標記 執行個體
<a name="schedules-costopt-tag4"></a>

建立排程之後，您必須使用標籤將排程配置給您想要使用的特定執行個體。您可以使用 中的標籤編輯器[AWS Resource Groups](https://docs.aws.amazon.com/ARG/latest/userguide/resource-groups.html)來產生標籤，並將標籤指派給您的 Amazon EC2 執行個體。

1. 登入 [AWS 管理主控台](https://console.aws.amazon.com/)，並確保您位於先前啟動 CloudFormation 範本的相同區域。

1. 開啟[資源群組主控台](https://console.aws.amazon.com/resource-groups)。在導覽窗格中，展開**標記**，然後選擇**標籤編輯器**。

1. 在**尋找要標記的資源**區段中，針對**區域**選擇您的區域。針對**資源類型**，選擇 Amazon EC2 或 Amazon RDS。此案例著重於工作負載 A 中的 Amazon EC2 執行個體。行銷團隊正在使用新加坡區域中的工作負載 A。此工作負載的資源已標記**部門**金鑰和**行銷**值。您可以使用此標籤來搜尋執行個體。

1. 選擇**搜尋資源**。

1. 從搜尋結果清單中選擇您要包含在排程中的執行個體，然後選擇**管理所選資源的標籤**。

1. 在**編輯所有所選資源的標籤**區段中，選擇**新增標籤**，將執行個體排程器排程標籤新增至 EC2 執行個體。您可以使用符合**排程的標籤索引鍵和值 **（先前在 DynamoDB 中建立）。

1. 對於**標籤索引鍵**，新增**排程**。在**標籤值**** **中輸入 **singapore-retail-hours**。

1. 選擇**檢閱和套用標籤變更**。

1. 若要將標籤套用至您選取的所有 EC2 執行個體，請選擇**將變更套用至所有選取的**執行個體。

1. 針對您想要套用的任何其他排程重複步驟 3–9。

### 驗證結果
<a name="schedules-costopt-validate5"></a>

我們建議您使用 [AWS Cost Explorer](https://www.youtube.com/watch?v=UfPqrkoUFiQ) 來衡量在 上使用執行個體排程器的成本效益 AWS。您可以使用 Cost Explorer 執行下列動作：
+ 檢視和分析與 EC2 執行個體相關的成本，包括執行個體排程器管理的執行個體。
+ 依標籤篩選 Cost Explorer 檢視，讓您可以專注於特定工作負載，並使用執行個體排程器取得節省成本的精細檢視。
+ 深入了解使用執行個體排程器對財務的影響。
+ 識別進一步成本最佳化的機會，並做出資料驅動型決策，以最佳化您的 AWS 支出。

下表說明使用執行個體排程器最佳化前七天 （週一至週日） 內操作工作負載 A 和工作負載 B 的成本。

**工作負載 A 和 B 的合併總費用**

![\[工作負載 A 和 B 的合併總費用\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/optimize-costs-microsoft-workloads/images/validate_scenario1_ab.png)


**工作負載 A 費用**

![\[工作負載 A 的費用\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/optimize-costs-microsoft-workloads/images/validate_scenario1_a.png)


**工作負載 B 費用**

![\[工作負載 B 的費用\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/optimize-costs-microsoft-workloads/images/validate_scenario1_b.png)


在此案例中，Cost Explorer 會顯示實作執行個體排程器所產生的成本降低 AWS。下表說明最佳化後七天 （週一至週日） 內工作負載 A 和工作負載 B 的操作成本。

**工作負載 A 和 B 的合併總費用**

![\[工作負載 A 和 B 的合併總費用\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/optimize-costs-microsoft-workloads/images/validate_scenario2_ab.png)


**工作負載 A 費用**

![\[工作負載 A 的費用\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/optimize-costs-microsoft-workloads/images/validate_scenario2_a.png)


**工作負載 B 費用**

![\[工作負載 B 的費用\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/optimize-costs-microsoft-workloads/images/validate_scenario2_b.png)


## 其他資源
<a name="windows-ec2-schedules-resources"></a>
+ [自動化啟動和停止 AWS 執行個體](https://docs.aws.amazon.com/solutions/latest/instance-scheduler-on-aws/solution-overview.html) ( AWS 文件上的執行個體排程器）
+ [返回基本概念：使用執行個體排程器控制 Amazon EC2 和 Amazon RDS 資源成本 ](https://www.youtube.com/watch?v=UsC5ZNcZl9k)(YouTube)
+ [標記您的 AWS 資源](https://docs.aws.amazon.com/tag-editor/latest/userguide/tagging.html) （標記 AWS 資源使用者指南）
+ [使用 分析您的成本 AWS Cost Explorer](https://docs.aws.amazon.com/cost-management/latest/userguide/ce-what-is.html)(AWS 帳單與成本管理 文件）