View a markdown version of this page

AWS Systems Manager メンテナンスウィンドウを使用して Amazon RDS DB インスタンスを自動的に停止および起動する - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS Systems Manager メンテナンスウィンドウを使用して Amazon RDS DB インスタンスを自動的に停止および起動する

Ashita Dsilva (Amazon Web Services)

概要

このパターンは、 AWS Systems Manager メンテナンスウィンドウを使用して、特定のスケジュールで Amazon Relational Database Service (Amazon RDS) DB インスタンスを自動的に停止および開始する方法 (例: 営業時間外に DB インスタンスをシャットダウンしてコストを削減する) を示しています。この目的で、Systems Manager は一般的なユースケースでコスト効率に優れています。

AWS Systems Manager Automation は、AWS-StopRdsInstanceAmazon RDS DB インスタンスを停止および起動するための および AWS-StartRdsInstanceランブックを提供します。つまり、 AWS Lambda 関数を使用してカスタムロジックを記述したり、Amazon CloudWatch Events ルールを作成したりする必要はありません。

Systems Manager は、タスクをスケジュールするための 2 つの機能、State ManagerMaintenance Windows を提供します。State Manager は、Amazon Web Services (AWS) アカウント内のリソースに必要な状態設定を 1 回だけ、または特定のスケジュールで設定、管理します。Maintenance Windows は、特定の時間枠にアカウント内のリソースに対してタスクを実行します。このパターンのアプローチはステートマネージャーまたはメンテナンスウィンドウで使用できますが、割り当てられた優先度に基づいて 1 つ以上のタスクを実行でき、 AWS Lambda 関数と AWS Step Functions タスクを実行できるため、メンテナンスウィンドウを使用することをお勧めします。State Manager と Maintenance Windows の詳細については、Systems Manager ドキュメントの「State Manager または Maintenance Windows の選択」を参照してください。

このパターンでは、cron 式を使用して Amazon RDS DB インスタンスを停止してから起動する 2 つのメンテナンスウィンドウを個別に設定する詳細な手順を示しています。 

前提条件と制限

前提条件

  • アクティブ AWS アカウント。

  • 特定のスケジュールで停止して開始したい既存の Amazon RDS DB インスタンス。

  • 必要なスケジュールの Cron 式。例えば、式 cron(0 9 ? * MON-FRI *) は毎週月曜日、火曜日、水曜日、木曜日、金曜日の午前 9 時にタスクを実行します。詳細は、「Systems Manager のドキュメント」の「メンテナンスウィンドウの関連付けに使用する cron 式および rate 式」を参照してください。

  • Systems Manager に精通しています。

  • RDS インスタンスを起動および停止するアクセス許可。詳細については、「エピック」セクションを参照してください。

制限事項

  • Amazon RDS DB インスタンスは一度に最大 7 日間停止できます。7 日後、DB インスタンスは自動的に再起動し、必要なメンテナンスアップデートを確実に受け取ることができます。

  • リードレプリカである DB インスタンス、またはリードレプリカを持つ DB インスタンスを停止することはできません。

  • マルチ AZ 設定では Amazon RDS for SQL Server DB インスタンスを停止できません。

  • Service Quotas は、Maintenance Windows と Systems Manager Automation に適用されます。サービスクォータの詳細については、 AWS 全般のリファレンス ドキュメントのAWS Systems Manager 「エンドポイントとクォータ」を参照してください。 

  • 一部の AWS のサービス は、すべてで利用できるわけではありません AWS リージョン。利用可能なリージョンについては、「AWS のサービス (リージョン別)」を参照してください。特定のエンドポイントについては、「サービスエンドポイントとクォータ」ページを参照して、サービスのリンクを選択します。

アーキテクチャ

次の図では、Amazon RDS DB インスタンスを自動的に停止して開始するワークフローを示します。

自動的に Amazon RDS DB インスタンスを停止して開始するワークフロー

ワークフローには次の手順があります。

1. メンテナンスウィンドウを作成し、cron 式を使用して Amazon RDS DB インスタンスの停止と開始のスケジュールを定義します。

2. AWS-StopRdsInstance または AWS-StartRdsInstance ランブックを使用して Systems Manager 自動化タスクをメンテナンスウィンドウに登録します。

3. Amazon RDS DB インスタンスのタグベースのリソースグループを使用して、メンテナンスウィンドウにターゲットを登録します。

テクノロジースタック

  • AWS CloudFormation

  • AWS Identity and Access Management (IAM)

  • Amazon RDS

  • Systems Manager

自動化とスケール

必要な Amazon RDS DB インスタンスにタグを付け、タグ付けされたすべての DB インスタンスを含むリソースグループを作成し、このリソースグループをメンテナンスウィンドウのターゲットとして登録することで、複数の Amazon RDS DB インスタンスを同時に停止および起動できます。

ツール

  • AWS CloudFormation は、 AWS リソースのモデル化とセットアップに役立つサービスです。

  • AWS Identity and Access Management (IAM) は、 AWS リソースへのアクセスを安全に制御するのに役立つウェブサービスです。

  • Amazon Relational Database Service (Amazon RDS) は、 AWS クラウドでリレーショナルデータベースを簡単にセットアップし、運用し、スケーリングすることのできるウェブサービスです。

  • AWS Resource Groups は、 AWS リソースをグループに整理し、リソースにタグを付け、グループ化されたリソースのタスクを管理、モニタリング、自動化するのに役立ちます。

  • AWS Systems Manager は、インフラストラクチャを表示および制御するために AWS のサービス 使用できる です AWS。このパターンでは、次の Systems Manager の機能を使用します。

    • AWS Systems Manager 自動化により、Amazon Elastic Compute Cloud (Amazon EC2) インスタンスやその他の AWS リソースの一般的なメンテナンスおよびデプロイタスクが簡素化されます。

    • AWS Systems Manager メンテナンスウィンドウは、インスタンスで破壊的になり得るアクションを実行するスケジュールを定義するのに役立ちます。

エピック

タスク説明必要なスキル

Systems Manager Automation の IAM サービスロールを設定します。

にサインイン AWS マネジメントコンソール し、Systems Manager Automation のサービスロールを作成します。次の 2 つのメソッドのいずれかを使用して、このサービスロールを作成できます。

Systems Manager 自動化ワークフローは、サービスロールを使用して Amazon RDS DB インスタンスで開始アクションと停止アクションを実行することで Amazon RDS を呼び出します。

サービスロールは、Amazon RDS DB インスタンスを起動および停止する権限を持つ以下のインラインポリシーで設定する必要があります。

{ "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": "*" } ] }

必ず <RDS_Instance_ARN> を Amazon RDS DB インスタンスの Amazon リソースネーム (ARN) で置き換えます。

IAM ポリシーとロールの使用に慣れていない場合は、「Schedule Amazon RDS stop and start using AWS Systems Manager」の「Solution Overview」セクションの指示に従ってください。

重要

サービスロールの ARN を必ず記録してください。

AWS 管理者
タスク説明必要なスキル

Amazon RDS DB インスタンスにタグを付けます

Amazon RDS コンソールを開き、リソースグループに追加する Amazon RDS DB インスタンスにタグを付けます。タグは AWS リソースに割り当てられたメタデータであり、キーと値のペアで構成されます。[アクション][タグキー] として使用し、[StartStop][値] として使用することをお勧めします。

詳細については、Amazon RDS ドキュメントの「タグの追加、リスト化、削除」を参照してください。

AWS 管理者

タグを付加した Amazon RDS DB インスタンス用のリソースグループを作成します。

AWS Resource Groups コンソールを開き、Amazon RDS DB インスタンス用に作成したタグに基づいてリソースグループを作成します。

[グループ化基準] で、必ずリソースタイプに [AWS:: RDS:: DBInstance] を選択し、タグのキーと値のペア (「Action-StartStop」など) を指定してください。これにより、サービスは Amazon RDS DB インスタンスのみをチェックし、このタグを持つその他のリソースはチェックしないことが保証されます。リソースグループの名前は必ず記録してください。

詳細と詳細な手順については、 AWS Resource Groups ドキュメントの「タグベースのクエリを構築する」および「グループを作成する」を参照してください。 

AWS 管理者
タスク説明必要なスキル

メンテナンスウィンドウを作成します。

  1. Systems Manager コンソールを開き、[Maintenance Windows] を選択し、[メンテナンスウィンドウの作成] を選択します。メンテナンスウィンドウの名前 (「StopRdsInstance」など) を入力し、説明を入力して、[未登録のターゲットを許可する] のチェックを外します。

  2. [CRON/Rate 式] を選択し、Amazon RDS DB インスタンスを停止するタイミングを定義するスケジュール式を指定します。[期間]1 を入力し、[タスクの開始を停止する]0 を入力します。デフォルトでは、タイムゾーンは UTC です。cron 式で定義したタイムスタンプに基づいて、タイムゾーンを変更してメンテナンスウィンドウを開始できます。

  3. [Create maintenance window] を選択します。メンテナンスウィンドウのページに戻り、メンテナンスウィンドウの状態は [有効] になります。

重要

DB インスタンスを停止するタスクは開始するとほぼ瞬時に実行され、メンテナンスウィンドウ全体には適用されません。このパターンでは、タスクの開始期間開始タスクの停止の最小値が提供されます。これは、これらがメンテナンス時間枠に必要なパラメータであるためです。

詳細と詳細な手順については、Systems Manager ドキュメントの「コンソールを使用してメンテナンスウィンドウを作成する」を参照してください。

AWS 管理者

ターゲットをメンテナンスウィンドウに割り当てます。

  1. Systems Manager コンソールで、[Maintenance Windows] を選択し、[アクション] を選択し、[ターゲットを登録] を選択します。

  2. [ターゲット] 領域[リソースグループを選択] を指定し、アカウント内の既存のリソースグループの名前を選択します。

  3. リソースタイプについては、AWS:: RDS:: DBInstance を選択し、次に [ターゲットを登録] を選択します。

詳細と詳細な手順については、Systems Manager ドキュメントの「コンソールを使用してメンテナンスウィンドウにターゲットを割り当てる」を参照してください。

AWS 管理者

メンテナンスウィンドウにタスクを割り当てるには

  1. Systems Manager コンソール[Maintenance Windows] を選択し、次にメンテナンスウィンドウを選択します。[アクション] を選択し、[オートメーションの登録] タスクを選択します。

  2. [ドキュメント] には、[AWS-StopRDS インスタンス] を選択します。

  3. [ターゲット] セクションで、[登録済みターゲットグループの選択] を選択し、現在のメンテナンスウィンドウに登録したメンテナンスウィンドウターゲットを選択します。

  4. レートコントロールでは、[同時実行数][エラーしきい値] に 100% を指定します。レートコントロールの値は、タスクの同時実行性とエラーしきい値の要件に応じて変更できます。詳細については、Systems Manager ドキュメントの「オートメーションを大規模に制御する」を参照してください。

  5. [IAM サービスロール]セクションの [サービスロール]では、このボックスを空白のままにするか、独自のカスタムロールを作成します。ボックスを空白のままにすると、Systems Manager はサービスにリンクされたロール AWSServiceRoleForAmazonSSM を自動的に作成し、ロールをタスクに関連付けます。独自のカスタムロールを作成するには、「コンソールを使用したメンテナンスウィンドウへのアクセスの制御」を参照してから、そのカスタムロールをタスクに関連付けます。

  6. [入力パラメータ] セクションで、ランブックの次のパラメータを指定します。

    • InstanceId: {{RESOURCE_ID}}

      注記

      InstanceId の場合、疑似パラメータを使用して Amazon RDS DB リソース ID を ARN から抽出します。疑似パラメータの詳細については、Systems Manager ドキュメントの「疑似パラメータについて」を参照してください。

    • AutomationAssumeRole: Systems Manager オートメーション用に作成したサービスロールの ARN を指定します。

  7. [オートメーションの登録] タスクを選択します。

重要

サービスロールオプションでは、メンテナンスウィンドウでタスクを実行するために必要なサービスロールを定義します。ただし、このロールは、以前に Systems Manager Automation 用に作成したサービスロールと同じではありません。

詳細と詳細な手順については、Systems Manager ドキュメントの「コンソールを使用してメンテナンスウィンドウにタスクを割り当てる」を参照してください。

AWS 管理者
タスク説明必要なスキル

Amazon RDS DB インスタンスを起動するメンテナンスウィンドウを設定します。

Amazon RDS DB インスタンスを停止するメンテナンスウィンドウを設定する」の手順を繰り返し、スケジュールされた時間に Amazon RDS DB インスタンスを起動する別のメンテナンスウィンドウを設定します。

重要

DB インスタンスを起動するようにメンテナンスウィンドウを設定するときは、次の変更を行う必要があります。

  • メンテナンスウィンドウには新しい名前 (「StartRDSInstance」など) を使用してください。

  • cron 式を DB インスタンスの起動に使用したい cron 式に置き換えてください。

  • [タスク]AWS-StopRdsInstance ランブックを AWS-StartRdsInstance に置き換えます。

AWS 管理者

関連リソース