使用 AWS Systems Manager 維護 Windows RDS 自動停止和啟動 Amazon 資料庫執行個體 - AWS 方案指引

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

使用 AWS Systems Manager 維護 Windows RDS 自動停止和啟動 Amazon 資料庫執行個體

由 Ashita Dsilva 建立 (AWS)

環境:生產

技術:管理與治理;成本管理;資料庫

AWS 服務:AWSSystems Manager;Amazon RDS

Summary

此模式示範如何使用 AWS Systems Manager 維護 Windows ,在特定排程 (例如,在工作時間之外關閉資料庫執行個體以降低成本RDS) 自動停止和啟動 Amazon Relational Database Service (Amazon ) 資料庫執行個體。

AWS Systems Manager 自動化提供 AWS-StopRdsInstanceAWS-StartRdsInstance Runbook,以停止和啟動 Amazon RDS 資料庫執行個體。這表示您不需要使用 AWS Lambda 函數撰寫自訂邏輯或建立 Amazon CloudWatch Events 規則。

Systems Manager 提供兩種排程任務的功能:State Manager 和維護 Windows 。State Manager 會為您的 Amazon Web Services (AWS) 帳戶中的資源設定並維護所需的狀態組態,一次或依特定排程進行設定。維護 Windows 會在特定時段內,對帳戶中的資源執行任務。雖然您可以將此模式的方法與 State Manager 或維護時段搭配使用,但我們建議您使用維護時段,因為它可以根據指派的優先順序執行一或多個任務,也可以執行 AWS Lambda 函數和 AWS Step Functions 任務。如需 State Manager 和維護 Windows 的詳細資訊,請參閱 Systems Manager 文件中的在 State Manager 和維護 Windows 之間進行選擇

此模式提供詳細步驟,以設定兩個使用 cron 表達式來停止然後啟動 Amazon RDS 資料庫執行個體的個別維護時段。 

先決條件和限制

先決條件

  • 作用中 AWS 帳戶。

  • 您要在特定排程上停止和啟動的現有 RDS Amazon 資料庫執行個體。

  • 所需排程的 Cron 表達式。例如,表達式會在每週一、週二、週三、週四和週五的 09:00 cron(0 9 ? * MON-FRI *)執行任務。如需詳細資訊,請參閱 Systems Manager 文件中的維護時段的 Cron 和速率表達式。

  • 熟悉 Systems Manager。

  • 啟動和停止RDS執行個體的許可。如需詳細資訊,請參閱 Epics 區段。

限制

  • Amazon RDS 資料庫執行個體一次最多可停止七天。七天後,資料庫執行個體會自動重新啟動,以確保收到任何必要的維護更新。

  • 您無法停止作為僅供讀取複本或具有僅供讀取複本的資料庫執行個體。

  • 您無法在多可用區組態中停止 Amazon RDS for SQL Server 資料庫執行個體。

  • 服務配額適用於 Maintenance Windows 和 Systems Manager Automation。如需服務配額的詳細資訊,請參閱 AWS 一般參考 文件中的AWS Systems Manager 端點和配額。 

  • 有些 AWS 服務 並非所有 都提供 AWS 區域。如需區域可用性,請參閱AWS 服務 依區域 。如需特定端點,請參閱服務端點和配額頁面,然後選擇服務的連結。

架構

下圖顯示自動停止和啟動 Amazon RDS 資料庫執行個體的工作流程。

自動停止和啟動 Amazon RDS 資料庫執行個體的工作流程

工作流程有下列步驟:

1. 建立維護時段並使用 cron 運算式來定義 Amazon RDS 資料庫執行個體的停止和啟動排程。

2. 使用 AWS-StopRdsInstanceAWS-StartRdsInstance Runbook 將 Systems Manager Automation 任務註冊至維護時段。

3. 為您的 Amazon RDS 資料庫執行個體使用標籤型資源群組,向維護時段註冊目標。

技術堆疊

  • AWS CloudFormation

  • AWS Identity and Access Management (IAM)

  • Amazon RDS

  • Systems Manager

自動化和擴展

您可以標記所需的 Amazon RDS 資料庫執行個體、建立包含所有已標記資料庫RDS執行個體的資源群組,以及將此資源群組註冊為維護時段的目標,以同時停止和啟動多個 Amazon 資料庫執行個體。

工具

史詩

任務描述所需的技能

設定 Systems Manager Automation IAM的服務角色。

登入 AWS Management Console 並建立 Systems Manager Automation 的服務角色。您可以使用下列兩種方法之一來建立此服務角色:

Systems Manager Automation 工作流程會使用服務角色來對 Amazon RDS 資料庫執行個體執行開始和停止動作,RDS藉此叫用 Amazon。

服務角色必須使用下列內嵌政策進行設定,該政策具有啟動和停止 Amazon RDS 資料庫執行個體的許可:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "RdsStartStop", "Effect": "Allow", "Action": [ "rds:StopDBInstance", "rds:StartDBInstance" ], "Resource": "<RDS_Instance_ARN>" }, { "Sid": "RdsDescribe", "Effect": "Allow", "Action": "rds:DescribeDBInstances", "Resource": "*" } ] }

請確定您使用 Amazon 資料庫執行個體的 Amazon Resource Name (ARN) RDS <RDS_Instance_ARN>取代 。

如果您不熟悉使用IAM政策和角色,請遵循 Amazon 排程RDS停止和開始使用 AWS Systems Manager部落格文章的解決方案概觀一節中的指示。

重要 :請務必記錄服務角色ARN的 。

AWS 管理員
任務描述所需的技能

標記 Amazon RDS 資料庫執行個體。

開啟 Amazon RDS主控台,並標記您要新增至資源群組的 Amazon 資料庫執行個體。 RDS標籤是指派給 AWS 資源的中繼資料,由索引鍵值對組成。建議您使用動作 作為標籤金鑰,並使用 StartStop 作為

如需詳細資訊,請參閱 Amazon RDS 文件中的新增、列出和移除標籤

AWS 管理員

為您的標記 Amazon RDS 資料庫執行個體建立資源群組。

開啟AWS Resource Groups 主控台,並根據您為 Amazon RDS 資料庫執行個體建立的標籤建立資源群組。

分組條件 下,請確定您AWSDBInstance為資源類型選擇 ::RDS:::,然後提供標籤的鍵值對 (例如「動作StartStop」)。這可確保服務只會檢查 Amazon RDS 資料庫執行個體,而不是具有此標籤的其他資源。請務必記錄資源群組的名稱。

如需詳細資訊和詳細步驟,請參閱在 AWS Resource Groups 文件中建立標籤型查詢和建立群組。 

AWS 管理員
任務描述所需的技能

建立維護時段。

  1. 開啟 Systems Manager 主控台 ,選擇維護 Windows ,然後選擇建立維護時段 。提供維護時段的名稱 (例如 "StopRdsInstance"),輸入描述,然後取消核取允許未註冊的目標

  2. 選擇 CRON/Rate 表達式並提供排程表達式,以定義何時應停止 Amazon RDS 資料庫執行個體。輸入 1 表示持續時間,輸入 0forStop 表示啟動任務 。根據預設,時區會顯示 UTC。您可以根據 cron 表達式中定義的時間戳記,變更時區以啟動維護時段。

  3. 選擇 Create maintenance window (建立維護時段)。系統會將您返回維護時段頁面,且您的維護時段狀態為已啟用。

重要 :停止資料庫執行個體的任務會在啟動時幾乎立即執行,而且不會跨越維護時段的整個期間。此模式提供持續時間停止啟動任務的最小值,因為它們是維護時段的必要參數。

如需詳細資訊和詳細步驟,請參閱 Systems Manager 文件中的建立維護時段 (主控台)

AWS 管理員

將目標指派給維護時段。

  1. Systems Manager 主控台 上,選擇維護 Windows ,選擇動作 ,然後選擇註冊目標

  2. 目標區域中,指定選擇資源群組,然後選擇帳戶中現有資源群組的名稱。

  3. 針對資源類型 ,選擇 AWS::RDS::,DBInstance然後選擇註冊目標

如需詳細資訊和詳細步驟,請參閱 Systems Manager 文件中的將目標指派給維護時段 (主控台)

AWS 管理員

將任務指派給維護時段。

  1. Systems Manager 主控台 上,選擇維護 Windows ,然後選擇您的維護時段。選擇動作 ,然後選擇註冊自動化任務

  2. 針對文件 ,選擇 AWS-StopRdsInstance

  3. 目標區段中,選擇選取已註冊的目標群組 然後選擇您向目前維護時段註冊的維護時段目標。

  4. ForRate 控制項 ,請針對並行錯誤閾值 指定 100%。您可以根據任務並行和錯誤閾值的需求變更速率控制值。如需詳細資訊,請參閱 Systems Manager 文件中的關於並行和錯誤閾值

  5. IAM服務角色區段中,針對服務角色 ,將此方塊保留空白或建立您自己的自訂角色。如果您將方塊保留空白,Systems Manager 會自動建立服務連結角色,AWSServiceRoleForAmazonSSM 然後將角色與任務建立關聯。若要建立您自己的自訂角色,請參閱建立維護時段 (主控台) 的自訂服務角色,然後將該自訂角色與任務建立關聯。

  6. 輸入參數區段中,指定 Runbook 的下列參數:

    • InstanceId: {{RESOURCE_ID}}

      注意:對於 InstanceId,虛擬參數用於從 擷取 Amazon RDS 資料庫資源 IDARN。若要進一步了解虛擬參數,請參閱 Systems Manager 文件中的關於虛擬參數

    • AutomationAssumeRole:提供您為 Systems Manager Automation 建立之服務角色ARN的 。

  7. 選擇註冊自動化任務

重要:服務角色選項定義維護時段執行任務所需的服務角色。不過,此角色與您先前為 Systems Manager Automation 建立的服務角色不同。

如需詳細資訊和詳細步驟,請參閱 Systems Manager 文件中的將任務指派給維護時段 (主控台)

AWS 管理員
任務描述所需的技能

設定維護時段以啟動 Amazon RDS 資料庫執行個體。

重複設定維護時段中的步驟,以停止 Amazon RDS 資料庫執行個體史詩級設定另一個維護時段,以在排程時間啟動 Amazon RDS 資料庫執行個體。

重要 :當您設定維護時段以啟動資料庫執行個體時,必須進行下列變更:

  • 針對維護時段使用新名稱 (例如 "StartRdsInstance")。

  • 將 cron 表達式取代為您要用來啟動資料庫執行個體的 cron 表達式。

  • 在任務 AWS-StartRdsInstance中將 AWS-StopRdsInstance Runbook 取代為 。

AWS 管理員

相關資源