如何將 Instance Scheduler 與 CloudFormation 搭配使用來排程 EC2 執行個體?
我想將 AWS Instance Scheduler 與 AWS CloudFormation 搭配使用,來排程 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體。
簡短描述
使用 CloudFormation 範本來自動化部署AWS Instance Scheduler。
**重要:**如果您對具有加密 Amazon Elastic Block Store (Amazon EBS) 的 EC2 執行個體使用 Instance Scheduler,則無法啟動執行個體。若要啟動執行個體,您必須授予 Instance Scheduler 主要使用者角色,該角色使用金鑰政策來加密或解密 EBS 磁碟區。您必須將金鑰政策新增至 AWS Key Management Service (KMS) 金鑰,以允許主要使用者角色使用此金鑰。
解決方法
安裝 Instance Scheduler
如果您尚未執行此操作,請遵循指示安裝 Instance Scheduler 命令列介面 (CLI)。
為確認安裝成功,請執行下列命令:
$ scheduler-cli --version
使用 Instance Scheduler 範本建立 CloudFormation 堆疊
此堆疊會部署 AWS Lambda 函數、Amazon DynamoDB 資料表、Amazon EventBridge 規則以及 Amazon CloudWatch 自訂指標。
- 開啟 AWS 管理主控台。
- 使用 Instance Scheduler 範本開啟 CloudFormation。或者,前往步驟 1.啟動 Instance Scheduler 中樞堆疊頁面,然後選擇啟動解決方案。
**注意:**依預設,範本會在美國東部 (維吉尼亞北部) 區域啟動。 - 在導覽列中,選取您要在其中啟動堆疊範本的 AWS 區域,然後選擇下一步。
- 對於堆疊名稱,命名您的堆疊。
- 對於 Instance Scheduler TagName,您可以將預設值保留為 Schedule,或予以自訂。
- 對於頻率,選擇執行排程器的頻率 (以分鐘為單位)。例如,您可以選擇 5 分鐘。
注意:頻率是 EventBridge 再次為 Instance Scheduler 啟動 Lambda 函數之前所經過的分鐘數。如果您有大量的執行個體,請使用可能的最高頻率以避免限流。如果頻率經常不足以滿足您的需求,您可以在稍後調整頻率屬性。 - 對於啟用 CloudWatch 指標,選擇是。
- 對於啟用 CloudWatch 日誌,選擇是。
- (選用) 對於已啟動標籤,輸入 state=started。
- (選用) 對於已停止****標籤,輸入 state=stopped。
- 對於跨帳戶排程,提供跨帳戶角色參數。為次要帳戶中的每個角色輸入 ARN,並用逗號分隔。如果您不使用跨帳戶排程,請將該參數保留空白。
- 對於所有其他參數,根據您的需求自訂堆疊。
- 選擇下一步。
- 在選項頁面上,選擇下一步。
- 檢閱您的設定,然後選取我確認 AWS CloudFormation 可能會建立 IAM 資源。
- 選擇建立。
建立期間
若要建立期間,您可以使用 Instance Scheduler CLI、DynamoDB 主控台或自訂資源。如需有關時間期間的詳細資訊,請參閱開始和停止時間。
下列範例說明如何建立執行個體:
- 星期一至五上午 9 點開始,下午 5 點停止
- 星期六上午 9 點開始,中午 12 點停止
對於此範例,您必須建立兩個期間。對於您自己的案例,建立適當的期間數。
使用 Instance Scheduler CLI
連線至 Instance Scheduler CLI,然後執行下列命令:
$ scheduler-cli create-period --stack your\_stack\_name --region eu-west-1 --name mon-fri-9-5 --begintime 9:00 --endtime 16:59 --weekdays mon-fri $ scheduler-cli create-period --stack your\_stack\_name --region eu-west-1 --name sat-9-12 --begintime 9:00 --endtime 11:59 --weekdays sat
**注意:**將 your_stack_name 取代為您在步驟 4 中選擇的堆疊名稱,並將 eu-west-1 取代為您自己的區域。
使用 DynamoDB 主控台
- 開啟 DynamoDB 主控台。
- 選擇資料表,然後選擇組態資料表。
**注意:**Instance Scheduler 範本會自動建立兩個 DynamoDB 資料表:狀態和組態。狀態資料表會儲存範本停止和啟動的執行個體狀態。組態資料表可讓您指定要求的期間和排程。 - 選擇探索資料表項目。
- 選擇建立項目。
- 選擇 JSON 檢視,然後使用下列 JavaScript 物件標記法 (JSON) 範本:
{ "type": { "S": "period" }, "name": { "S": "mon-fri-9-5" }, "begintime": { "S": "9:00" }, "endtime": { "S": "16:59" }, "weekdays": { "SS": \[ "mon-fri" \] } }
**注意:**前面的 JSON 範本會建立第一個期間。對第二個期間使用類似的 JSON 範本。確保根據您的要求編輯範本。
建立排程
若要建立排程,您可以使用 Instance Scheduler CLI、DynamoDB 主控台或自訂資源。
使用 Instance Scheduler CLI
執行下列命令:
$ scheduler-cli create-schedule --stack your\_stack\_name --name m-f9-5-sat9-12 --region eu-west-1 --periods mon-fri-9-5,sat-9-12 --timezone UTC
使用 DynamoDB 主控台
- 開啟 DynamoDB 主控台。
- 選擇資料表,然後選擇組態資料表。
- 選擇探索資料表項目。
- 選擇建立****項目。
- 選擇 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 主控台。
- 選擇要標記的已停止執行個體。
- 選擇標籤檢視,然後選擇管理標籤。
- 選擇新增標籤。
- 對於鍵,輸入 Schedule。
- 對於值,輸入 running。
- 選擇儲存。
- 重新整理 Amazon EC2 主控台,然後等待 Lambda 函數啟動。
注意:當 Lambda 函數啟動並執行而無錯誤時,視您正在測試的排程而定,執行個體狀態會顯示為執行中。在 CloudWatch 主控台中,您可以檢查 Lambda 指標是否有調用和錯誤。 - 開啟 DynamoDB 主控台。
- 選擇資料表,然後選擇狀態資料表。
- 選擇探索資料表項目並確認已啟動標記的執行個體。狀態資料儲存在狀態表中。
**重要:**根據使用的 Lambda 函數的頻率和持續時間,會對您收取額外費用。對於您建立的 DynamoDB 資料表或 EventBridge 規則,也可能會對您收取額外費用。
對於跨帳戶排程: 在次要帳戶中啟動遠端堆疊
若要使用 Instance Scheduler 在次要帳戶中排定執行個體,請部署 aws-instance-scheduler-remote CloudFormation 範本。此範本會建立角色,允許主要帳戶中的 Instance Scheduler 管理次要帳戶中的執行個體。
**注意:**您必須提供角色的 ARN 作為主要帳戶中 Instance Scheduler 堆疊的參數。確保使用正確的參數建立或更新 Instance Scheduler 堆疊。
- 開啟次要帳戶的 AWS 管理主控台,然後啟動 aws-instance-scheduler-remote CloudFormation 範本。您也可以下載範本以供將來使用。
**注意:**依預設,範本會在美國東部 (維吉尼亞北部) 區域啟動。 - 在導覽列中,選取您要在其中啟動堆疊範本的 AWS 區域,然後選擇下一步。
- 在選取範本頁面上,確認您選取了正確範本,然後選擇下一步。
- 在指定詳細資訊頁面上,為遠端堆疊指派名稱。
- 在參數下,檢閱並修改主要帳戶參數。輸入主要帳戶的帳號。
- 選擇下一步。
- 在選項頁面上,選擇下一步。
- 檢閱您的設定,然後選取我確認 AWS CloudFormation 可能會建立 IAM 資源。
- 選擇建立。
- 選擇堆疊輸出標籤,然後複製 CrossAccountRole 值。
- 從主要帳戶選擇您的 CloudFormation 堆疊,然後選擇更新。
- 在更新堆疊 頁面上,選擇使用目前的範本。
- 在跨帳戶角色參數中,貼上 CrossAccountRole 值。
- 選擇下一步,然後選取我確認 AWS CloudFormation 可能會建立 IAM 資源。
- 選擇更新堆疊。
相關內容
- 已提問 1 年前lg...
- 已提問 1 年前lg...
- 已提問 2 年前lg...
- 已提問 3 個月前lg...