Amazon RDS でスナップショット作成完了時に Slack に通知させてみた

2024.01.16

こんにちは、森田です。

本記事では、Amazon RDS でスナップショットの作成が完了した際に Slack に通知する方法をご紹介いたします。

やりたいこと

以下のような構成で、Amazon RDS のスナップショットの作成完了をトリガーにSlack通知を行います。

やってみる

Slack の設定

事前に Slack の Webhook URL を取得します。

Slack App の作成

任意の名前で作成を行います。

Webhook URL の作成

Slack App内のIncoming Webhooksを選択します。

以下のように新規の Webhook URL の作成を行います。

作成後、Webhook URL をコピーします。

EventBridgeの作成

マネジメントコンソールからイベントルールを作成します。

任意の名前を入力し、イベントパターンを持つルールを選択して、次へ進めます。

イベントパターン

イベントソースをAWS イベントを選択し、イベントパターンを設定します。

以下は、RDS DB での手動、自動スナップショット作成完了のイベントパターンとなります。

DB Snapshot Event

{
  "source": ["aws.rds"],
  "detail-type": ["RDS DB Snapshot Event"],
  "detail.EventID": ["RDS-EVENT-0091", "RDS-EVENT-0042"]
}

クラスタースナップショットイベントを取得する場合には以下のイベントパターンとなります。

Cluster Snapshot Event

{
  "source": ["aws.rds"],
  "detail-type": ["RDS DB Cluster Snapshot Event"],
  "detail.EventID": ["RDS-EVENT-0075", "RDS-EVENT-0169"]
}

詳しくは以下をご参照ください。

ターゲット

ターゲットタイプをEventBridge API の宛先を選択して、新しいAPI送信先を作成します。

API 送信先エンドポイント には、Slackで取得した Webhook URL を指定し、HTTPメソッドをPOSTとします。

続いて、接続タイプを作成します。

以下のように認証タイプにAPIキーを選択して、キー名をContent-type、値をapplication/jsonを指定します。

続いて、追加設定をクリックして、入力トランスフォーマーを選択します。

入力パスには、以下のように取得したいイベント情報を指定します。

入力パス

{
  "Message": "$.detail.Message",
  "SourceArn": "$.detail.SourceArn"
}

テンプレートには、API実行時のデータを指定します。

テンプレート

{
  "text":"<Message>\n<SourceArn>"
}

上記設定後、EventBridgeの作成を完了させます。

動作確認

新規にDBインスタンスの作成を行います。

DBインスタンス作成時に自動スナップショットを指定すると以下のようにSlackに通知が行われます。

自動スナップショット完了通知

取得でスナップショット作成した場合も以下のように通知が行われます。

手動スナップショット完了通知

さいごに

実行ログとして残したい場合などで本構成が活用できるかと思います。

Lambdaなしで簡単に構築できますので、ぜひお試しください。