Amazon EventBridgeのRDSイベントメッセージが結構便利だった話

AWS

2024.12.8

Topics

はじめに

この記事はNHN テコラスAdvent Calendar 2024の8日目の記事です。

今年もテックブログを書く機会を頂けましたので、今年検証に苦労したRDS-EVENTでのLambdaの起動についてご紹介したいと思います。

RDSのイベントメッセージとは

RDSの動作が行われた時や完了したときなどに発行されます。

参考 :
Amazon RDS イベントカテゴリとイベントメッセージ
Aurora の Amazon RDS イベントカテゴリとイベントメッセージ

私の場合は、RDSのデータを別AWSアカウントのS3に置きたいという要件に対してAmazon EventBridgeとAWS Lambdaを組み合わせて利用しました。

設定例

1. ルールの作成

Amazon EventBridge -> ルール -> ルールを作成 から作成します。

2. イベントパターンの設定

イベントソースは AWSイベントまたはEventBridgeパートナーイベント を設定します。

3. メソッドの設定

作成のメソッドでは、パターンフォームを利用する もしくは カスタムパターン(JSONエディタ) を利用します。

{“prefix”: “”}の書き方で指定することで、指定した文字列で始まる内容に絞るといった動作になります。

パターンフォームの場合はClusterのイベントすべて、Snapshotのイベントすべてといった形で設定ができ、カスタムパターンではもっと詳細にどのClusterが起動した場合といったような形で設定ができるようになります。
いくつか私が利用したパターンでどのような設定をしたのかをご紹介したいと思います。

特定のAurora Clusterの自動バックアップが完了したタイミングでEventBridgeを起動

{
  "source": ["aws.rds"],
  "detail.EventID": ["RDS-EVENT-0169"],
  "detail.SourceIdentifier": [
    {"prefix": "rds:{cluster名}"}
  ]
}

特定ClusterスナップショットからのS3エクスポートが完了したタイミングでEventBridgeを起動

{
  "source": ["aws.rds"],
  "detail.EventID": ["RDS-EVENT-0164"],
  "detail.SourceIdentifier": [
    {"prefix": "rds:{cluster名}"}
  ]
}

特定ClusterからのS3エクスポートが完了したタイミングでEventBridgeを起動

{
  "source": ["aws.rds"],
  "detail.EventID": ["RDS-EVENT-0236"],
  "detail.SourceIdentifier": [{
    "prefix": "{cluster名}"
  }]
}

Aurora Clusterすべてを対象に、Clusterが起動したタイミングでEventBridgeを起動

{
  "source": ["aws.rds"],
  "detail.EventID": ["RDS-EVENT-0161"]
}

4. ターゲットの設定

設定したイベントが発生したときに何を起動したいかを選択してください。

5. タグの設定

6. ルールの保存

設定内容に間違いがなければルールの保存を実行してください。

注意点

指定したいイベントによって、EventIDとprefixの指定方法が異なりますので注意が必要です。
例えば、S3エクスポートで起動させたい場合でも、AuroraClusterを指定するかスナップショットを指定するかでprefixの指定が異なっているなどが詰まったポイントでした。

おわりに

今後RDS-EVENTを使ってなにか設定する人の工数削減ができたらいいなと思います。

テックブログ新着情報のほか、AWSやGoogle Cloudに関するお役立ち情報を配信中!

waka

2022年に中途入社した人です。好きなAWSサービスはLambdaです。

Recommends

こちらもおすすめ

Special Topics

注目記事はこちら