📚

CDKでRDSの起動・停止を自動化!EventBridgeスケジューラーとStep Functionsステートマシーンを活用した効率的な管理

2024/12/13に公開

AWS CDKを使ってRDSのクラスターやDBインスタンスを指定のタイミングで起動・停止し、その結果をメール通知する仕組みを構築しました。本記事では、構築したCDKスタックのポイントを解説します。

ユースケース概要

  • タグによる対象リソースの特定
    指定したタグをもとに、管理対象のRDSクラスターやDBインスタンスを検索します。

  • リソースの起動・停止の自動化
    EventBridgeスケジューラーを活用して、定期的に起動や停止を実行します。

  • 操作結果の通知
    操作が成功した際にはSNSトピックを通じてメールで通知を行います。ただし、問題が発生した場合のメール送信には未対応です。

ステートマシーンの図

以下に、実装したステートマシーンのフロー図を追加予定です。この図では、RDSリソースの検索、起動・停止、SNS通知の流れを視覚的に確認できます。

CDKスタックの構成

このスタックは下記の要素で構成されています。

  1. タグを利用したRDSリソースの検索
    ResourceGroupsTaggingAPIを使用し、指定のタグが付与されたRDSクラスターやDBインスタンスを動的に取得します。

  2. EventBridgeスケジューラーによる起動・停止
    EventBridgeスケジューラーを使用して、指定の時間に自動的に起動や停止を実行するタスクをスケジュールします。

  3. SNSを利用したメール通知
    SNSトピックを作成し、正常に起動または停止が完了した場合にメールで通知を行います。

実装のポイントと注意点

  • タグ管理の徹底
    適切なタグ付けが前提となるため、環境ごとに一貫性のあるタグルールを適用してください。

  • EventBridgeスケジューラーの活用
    複数のスケジュールを柔軟に設定することで、リソースの動作時間を最適化できます。

  • 通知の活用
    問題が発生した場合に早期に対応できるよう、メール通知の設定を確認してください。ただし、現時点では問題発生時のメール送信には未対応であるため、手動での確認や別途通知手段の検討が必要です。

公開しているリソースについて

このコンストラクタスタックは、以下で公開しています。詳細なコードや利用方法は、こちらからご確認いただけます。
View on Construct Hub

おわりに

この仕組みを導入することで、手動でRDSリソースを管理する手間を省きつつ、コスト最適化も実現できます。AWS CDKを使えば、インフラ管理の自動化がさらに簡単に行えるので、是非活用してみてください!

Discussion