Ongoing service disruptions
For the most recent update on ongoing service disruptions affecting the AWS Middle East (UAE) Region (ME-CENTRAL-1), refer to the AWS Health Dashboard. For information on AWS Service migration, see How do I migrate my services to another region?
如何將 Instance Scheduler 與 CloudFormation 搭配使用來排程 EC2 執行個體?
我想將 AWS Instance Scheduler 與 AWS CloudFormation 搭配使用,來排程 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體。
解決方法
**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請參閱對 AWS CLI 錯誤進行疑難排解。此外,請確保您使用的是最新的 AWS CLI 版本。
若要自動部署 AWS Instance Scheduler,請使用 CloudFormation 範本。
**注意:**如果您將 Amazon EC2 執行個體的 Instance Scheduler 與加密的 Amazon Elastic Block Store (Amazon EBS) 一起使用,那麼您的執行個體將無法啟動。您必須將金鑰政策新增至 AWS Key Management Service (AWS KMS) 金鑰,以允許金鑰使用者角色使用此金鑰。
安裝 Instance Scheduler
安裝Instance Scheduler。然後,若要確認是否成功安裝,請執行以下命令:
$ scheduler-cli --version
使用 Instance Scheduler 範本建立 CloudFormation 堆疊
若要部署 AWS Lambda 函式、Amazon DynamoDB 表、Amazon EventBridge 規則和 Amazon CloudWatch 自訂指標,請完成下列步驟:
- 開啟 AWS Management Console (AWS 管理主控台)。
- 使用 Instance Scheduler 範本開啟 CloudFormation 主控台。預設情況下,該範本會在美國東部 (維吉尼亞北部) 區域啟動。或者,前往步驟 1.啟動 Instance Scheduler 中樞堆疊頁面,然後選擇 Launch Solution (啟動解決方案)。
在導覽列中,選取您想要使用範本啟動堆疊的 AWS 區域,然後選擇 Next (下一步)。
在 Stack name (堆疊名稱),請為您的堆疊命名。
在 Instance Scheduler TagName,您可以保留預設值 Schedule,也可以對其進行自訂。
在 Frequency (頻率),選擇執行排程器的頻率 (以分鐘為單位)。例如,您可以選擇 5 分鐘。
注意:頻率是 EventBridge 再次為 Instance Scheduler 啟動 Lambda 函數之前所經過的分鐘數。如果您有大量的執行個體,請使用可能的最高頻率以避免限流。如果頻率經常不足以滿足您的需求,您可以在稍後調整頻率屬性。
在 Enable CloudWatch Metrics (啟用 CloudWatch 指標),選擇 Yes (是)。
在 Enable CloudWatch Logs (啟用 CloudWatch Logs),選擇 Yes (是)。
(選用) 在 Started tags (已啟動標籤),輸入 state=started。
(選用) 在 Stopped tags (已停止標記),輸入 state=stopped。
對於跨帳戶排程,請提供跨帳戶角色參數。輸入次要帳戶中每個角色的 Amazon Resource Name (ARN),並以逗號分隔。如果您不使用跨帳戶排程,請將參數保持為空。 - 選擇 Next (下一步)。
- 在 Options (選項) 頁面上,選擇 Next (下一步)。
- 檢查您的設定,然後選擇 I acknowledge that AWS CloudFormation might create IAM resources (我確認 AWS CloudFormation 可能會建立 IAM 資源)。
- 選擇 Create (建立)。
建立期間
若要建立期間,您可以使用 Instance Scheduler CLI、DynamoDB 主控台或自訂資源。如需時間期間的詳細資訊,請參閱開始和停止時間。
使用 Instance Scheduler CLI
連線到 Instance Scheduler CLI,然後執行以下 create-period AWS CLI 命令:
$ scheduler-cli create-period --stack your_stack_name --region aa-example-1 --name mon-fri-9-5 --begintime 9:00 --endtime 16:59 --weekdays mon-fri $ scheduler-cli create-period --stack your_stack_name --region aa-example-1 --name sat-9-12 --begintime 9:00 --endtime 11:59 --weekdays sat
**注意:**將 your_stack_name 替換為您在步驟 2 中選擇的堆疊名稱,並將 aa-example-1 替換為您的區域。
使用 DynamoDB 主控台
若要建立期間,請完成以下步驟:
- 開啟 DynamoDB console (DynamoDB 主控台)。
- 選擇 Tables (資料表),然後選取組態資料表。
**注意:**Instance Scheduler 範本會自動建立狀態和組態 DynamoDB 表。狀態資料表會儲存範本停止和啟動的執行個體狀態。您可以透過組態資料表指定滿足您需求的期間和排程。 - 選擇 Explore Table Items (探索資料表項目)。
- 選擇 Create Item (建立項目)。
- 選擇 JSON 檢視,然後使用以下 JSON 範本:
**注意:**前面的 JSON 範本會建立第一個期間。對第二個時期使用類似的 JSON 範本。將 mon-fri-9-5 替換為您的期間名稱,將 9:00 替換為您的開始時間,並將 16:59 替換為您的結束時間。{ "type": { "S": "period" }, "name": { "S": "mon-fri-9-5" }, "begintime": { "S": "9:00" }, "endtime": { "S": "16:59" }, "weekdays": { "SS": [ "mon-fri" ] } }
建立排程
若要建立排程,您可以使用 Instance Scheduler CLI、DynamoDB 主控台或自訂資源。
使用 Instance Scheduler CLI
若要建立排程,請執行以下 create-schedule CLI 命令:
$ scheduler-cli create-schedule --stack your_stack_name --name m-f9-5-sat9-12 --region aa-example-1 --periods mon-fri-9-5,sat-9-12 --timezone UTC
**注意:**將 your_stack_name 替換為您的堆疊名稱,將 aa-example-1 替換為您的區域,並將 mon-fri-9-5,sat-9-12 替換為您的排程。
使用 DynamoDB 主控台
若要建立排程,請完成以下步驟:
- 開啟 DynamoDB console (DynamoDB 主控台)。
- 選擇 Tables (資料表),然後選取組態資料表。
- 選擇 Explore Table Items (探索資料表項目)。
- 選擇 Create Item (建立項目)。
- 選擇 JSON 檢視,然後使用以下 JSON 範本:
{ "type": { "S": "schedule" }, "name": { "S": "m-f9-5-sat9-12" }, "timezone": { "S": "UTC" }, "periods": { "SS": [ "mon-fri-9-5" ] } }
標記執行個體並測試排程
標籤執行個體
在將 CloudFormation 堆疊與 Instance Scheduler 搭配使用時,您必須定義 Instance Scheduler TagName 參數。此參數的預設值為 Schedule。
Instance Scheduler 會監控執行個體上的標籤。如果執行個體標記索引鍵與定義的排程器標記相符,則 Instance Scheduler 將套用為執行個體標記值設定的排程。例如,標籤的索引鍵設定為 Schedule,值設定為 m-f9-5-sat9-12。在此範例中,執行個體在星期一至星期五從上午 9 點開始,下午 5 點停止。在星期六,該執行個體也在上午 9 點開始,中午 12 點停止。
注意:標籤索引鍵和值區分大小寫。如果您在執行期間之外手動啟動執行個體,則 Instance Scheduler 不會停止執行執行個體。如果您在執行期間手動停止執行個體,則 Instance Scheduler 也不會啟動該執行個體,除非您強制執行該排程。如需詳細資訊,請參閱排程定義。
使用預先定義的排程
除了自訂排程之外,您還可以使用組態資料表中任何預先定義的排程。下列步驟會測試名為 running 的預先定義排程:
- 開啟 Amazon EC2 console (Amazon EC2 主控台)。
- 選擇要標記的已停止執行個體。
- 選擇標籤檢視,然後選擇管理標籤。
- 選擇新增標籤。
- 對於鍵,輸入 Schedule。
- 對於值,輸入 running。
- 選擇 Save (儲存)。
- 重新整理 Amazon EC2 主控台,然後等待 Lambda 函式啟動。
注意:如果 Lambda 函式啟動,並運作正常且沒有錯誤,則 Instance State (執行個體狀態) 會顯示為執行中。這取決於您測試的排程。在 CloudWatch 主控台中,您可以檢查 Lambda 調用和錯誤的 CloudWatch 指標。 - 開啟 DynamoDB console (DynamoDB 主控台)。
- 選擇 Tables (資料表),然後選取狀態資料表。
- 選擇 Explore Table Items (探索資料表項目),然後確認已啟動標記的執行個體。
**重要:**根據您使用 Lambda 函式的頻率和持續時間,您可能需要支付額外費用。您也可能需要為您建立的 DynamoDB 資料表或 EventBridge 規則支付額外費用。
跨帳戶排程
若要使用 Instance Scheduler 在次要帳戶中排程執行個體,請部署 aws-instance-scheduler-remote CloudFormation 範本。此範本會建立角色,允許主要帳戶中的 Instance Scheduler 管理次要帳戶中的執行個體。
**注意:**您必須提供角色的 ARN 作為主要帳戶中 Instance Scheduler 堆疊的參數。確保使用正確的參數建立或更新 Instance Scheduler 堆疊。
若要在次要帳戶中啟動遠端堆疊,請完成下列步驟:
-
開啟次要帳戶的 AWS 管理主控台,然後啟動 aws-instance-scheduler-remote CloudFormation 範本。您也可以下載範本以供將來使用。
**注意:**預設情況下,此範本會在美國東部 (維吉尼亞北部) 區域啟動。
-
在導覽列中,選取您想要使用範本啟動堆疊的區域,然後選擇 Next (下一步)。
-
在 Select Template (選取範本) 頁面上, 確認您選取的範本是否正確,然後選擇 Next (下一步)。
-
在指定詳細資訊頁面上,為遠端堆疊指派名稱。
-
在 Parameters (參數) 下,檢查並修改主要帳戶參數。輸入主要帳戶的帳號。
-
選擇 Next (下一步)。
-
在 Options (選項) 頁面上,選擇 Next (下一步)。
-
檢查您的設定,然後選擇 I acknowledge that AWS CloudFormation might create IAM resources (我確認 AWS CloudFormation 可能會建立 IAM 資源)。
-
選擇 Create (建立)。
-
選擇堆疊 Outputs (輸出) 標籤,然後複製 CrossAccountRole 值。
-
從主要帳戶中,選取您的 CloudFormation 堆疊,然後選擇 Update (更新)。
-
在 Update stack (更新堆疊) 頁面上,選擇 Use current template (使用目前範本)。
-
在 Cross-account roles (跨帳戶角色) 參數中,貼上 CrossAccountRole 值。
-
選擇 Next (下一步),然後選擇 I acknowledge that AWS CloudFormation might create IAM resources (我確認 AWS CloudFormation 可能會建立 IAM 資源)。
-
選擇 Update Stack (更新堆疊)。
相關內容
- 已提問 2 年前
- 已提問 2 年前

