hero_picture
Cover Image for 特定のスナップショットで絞りRDS S3エクスポートをAWS Eventbridgeで受け取る

特定のスナップショットで絞りRDS S3エクスポートをAWS Eventbridgeで受け取る

こんにちは、クラウドソリューション事業部の本田です。一気に寒くなりました。皆様いかがお過ごしでしょうか、体調には気をつけていきましょう。前回、Amazon EventBridgeでRDS S3エクスポートの完了通知を受け取るという記事を書きました。ただこちらアカウント内で全て発生したイベントを拾ってしまうので、そりゃそうなんですが実際使うとなると特定のスナップショットで絞らないといけないですよね。実際に使うことも考えて早速絞る方法を設定していきます。

イベント内容を確認する

設定していく前にですが、RDSのエクスポートタスクが完了した際にどのようなイベントが飛んでいるのか確認したいと思います。Lambdaで拾って中身を確認すると以下のような内容になっていました。

1{
2  version: '0',
3  id: 'xxxxxxx-xxxx-xxx-xxxx-xxxxxxxxxxxx',
4  'detail-type': 'RDS DB Cluster Snapshot Event',
5  source: 'aws.rds',
6  account: 'xxxxxxxxxxxx',
7  time: '2022-12-02T07:43:47Z',
8  region: 'ap-northeast-1',
9  resources: [
10    'arn:aws:rds:ap-northeast-1:xxxxxxxxxxxx:cluster-snapshot:test011'
11  ],
12  detail: {
13    EventCategories: [ 'notification' ],
14    SourceType: 'CLUSTER_SNAPSHOT',
15    SourceArn: 'arn:aws:rds:ap-northeast-1:xxxxxxxxxxxx:cluster-snapshot:test011',
16    Date: '2022-12-02T07:43:47.927Z',
17    Message: 'Export task completed',
18    SourceIdentifier: 'test011',
19    EventID: 'RDS-EVENT-0164'
20  }
21}

アカウント情報など一部隠しておりますが、上記のようなデータが取得できました。個人的にはエクスポートタスクを実行した時に指定するエクスポートタスクIDが入っていて欲しいかったです。。。こちらがあればより絞り込みができたと思いますが、resources、SourceArnかSourceIdentifierで絞り込みができるかなと思いますので、今回はSourceIdentifierで絞りこむことにしました。ちなみにこちらのイベント内容は、Amazon RDSのAurora MySQLのクラスタースナップショットをtest011という名前で手動で作成したものをS3へエクスポートした際のものです。手動ではなくRDSの自動スナップショットを対象とした場合は、SourceIdentifierに入る名前が異なりますので注意が必要です。

イベントを設定する

手動で作成したスナップショットを絞る対象とするパターンと、自動で作成されたスナップショットを対象とするパターンそれぞれ記載します。

手動で作成したスナップショットを対象とするパターン

以下のような書き方で実現することができました。

1{
2  "source": ["aws.rds"],
3  "detail-type": ["RDS DB Cluster Snapshot Event"],
4  "detail": {
5    "EventID": ["RDS-EVENT-0164"],
6    "SourceIdentifier":"test011"
7  }
8}

SourceIdentifierのところを作成されるスナップショット名に変えてください。

自動で作成されたスナップショットを対象とするパターン

以下のような書き方で実現することができました。

1{
2  "source": ["aws.rds"],
3  "detail-type": ["RDS DB Cluster Snapshot Event"],
4  "detail": {
5    "EventID": ["RDS-EVENT-0164"],
6    "SourceIdentifier":[ { "prefix": "rds:test011" } ]
7  }
8}

prefixを使うことで前方一致にしています。というのも自動でスナップショットを取得した際に、スナップショット名の後ろに-yyyy-mm-dd-hh-mmが付くようになります。また自動で取得した際には、先頭がrds:で始まりますので、ここをRDSのクラスター名などにしているとうまく一致しないということになりますので注意が必要です。

最後に

当たり前ではありますが、IAMのポリシーなどと同じく絞れるものは絞り最低限にしておきたいですね。絞るのを忘れてた〜っと気づいた方がいましたら、こちらを参考に絞っていただければと思います。

それではまた!