🏸
「AWS RDSをダンプしてSQLファイルをS3保存」をCDK7行で実現する
はじめに
皆さんはリレーショナルデータベース(AWSですとRDS, Aurora)のバックアップ管理をどのように行っていますか?
RDSの標準機能としてスナップショットを使うのが無難ですが、正直ダンプしてSQLファイルで管理できると楽だなあ..って筆者はよく思っています。
ただ、その際には踏み台EC2にアクセスして手動でダンプしたり、定期的なダンプのためのスクリプトを書いたり、、やや手間です。
今回は、そんな手間を省きつつも柔軟性を持たせるために作られた、AWS CDK向けのライブラリ、「cdk-rds-dump」をご紹介します。
cdk-rds-dumpとは?
「cdk-rds-dump」は、AWS CDK向けのConstructsライブラリで、以下の要素を一気に構築してくれます。
- RDSをdumpするlambda
- secrets managerからの接続情報取得も可能 - dumpしたSQLファイルを保存するS3バケット
- lambdaを定期実行するEvent Bridge
これにより、RDSからのダンプファイルを自動的に生成し、保存する作業を簡単に行うことができます。
使用方法
npmからインストールできます:
npm i cdk-rds-dump
CDK実装例はこちら
import { RdsDump } from 'cdk-rds-dump';
declare const rdsCluster: rds.DatabaseCluster;
new RdsDump(this, 'MyRdsDump', {
dbEngine: "mysql",
rdsCluster: rdsCluster,
schedule: events.Schedule.cron({ minute: "0", hour: "0" }),
databaseName: 'myDatabase',
createSecretsManagerVPCEndpoint: false,
});
ポイント
- ちょっと扱いづらいスナップショットよりも、直感的なSQLファイルでバックアップを管理できます!
- RDSからダンプを取得し、S3に保存する一連の環境を一発で構築できるので便利!
- secrets manager上の接続情報取得に対応しているため、Auroraが自動生成したSecretのIDを渡すだけで動きます!もちろん、ユーザ名&パスワードを直接渡しても動作します(が、非推奨です)
- 15分以上かかるような大規模なDBのdumpはできません...
- まだmysqlだけしか対応していません
まとめ
AWS RDSを使ったDB運用時のプチニーズを「cdk-rds-dump」は満たしてくれるはずです。
というか、私のプチニーズを満たすために作りました。笑
はじめてCDK Constructをライブラリとして公開してみました。まだまだとりあえず動く程度の段階なので、issueやPRもお待ちしております。
Discussion