本日も乙

ただの自己満足な備忘録。

Auroraクラスタを他のAWSアカウントに複製したい場合、リストアとクローンのどちらがいいのか

知っている人にとっては当たり前の話かと思いますが、知らない人にとっては知っておいた方が良い話です。
Amazon Aurora クラスタを別の AWS アカウントに複製したい場合に、リストアとクローンの両方が使えますがどちらが良いでしょうか。

結論からいうとクローンの方が良いです。理由は次の通り。

早く複製できる

Aurora のクローンはコピーオンライトプロトコルを採用しています。コピーオンライトプロトコルは Aurora クラスタの複製を行う際にデータを複製せず同じデータを共有し、データの変更があった場合のみデータが複製されます。そのため、リストア(スナップショットを作成、復元)よりも高速です。

ストレージコストの抑制

クローンした後は同じデータを見ているため、クローン先の AWS アカウントにおける Aurora クラスタのストレージ料金は発生しません。データの変更があったら変更分のみがストレージ料金に請求されます。そのため、データの書き込みをしない環境の場合はストレージコストを抑えることができます。

リストアが向いているケース

クローンの方が時間的コスト、金銭的コストの面で優れていますが、リストアが向いている(クローンできない)ケースもあります。

リージョンをまたぐ場合

リージョンをまたいだクローンはまだ対応していません。例えば、AWS アカウントAにあった東京リージョンの Aurora クラスタを AWS アカウントB のバージニアリージョンにクローンすることはできません。その場合は稼働中の Aurora クラスタからスナップショットを作成し、共有先の AWS アカウントおよびリージョンを指定して復元します。

データ加工が必要な場合

本番環境にある Aurora クラスタを開発環境にそのまま持っていくのは、事故につながりますし会社の規則違反につながる可能性があります。もし開発環境に Aurora クラスタを持っていく場合は氏名・メールアドレス・住所などの機密情報をマスキングする必要があります。AWS RDS 自体にはデータを加工する機能は提供されていないため、直接データを書き換えるか AWS DMS などでマイグレーションしつつマスキング処理を行う必要があります。

制約でクローンできない

クローンできない制約事項がありますので、ドキュメントをご確認ください。

Aurora DB クラスターでのデータベースのクローン作成 - Amazon Aurora

まとめ

クロスアカウントで Aurora クラスタを共有する場合はクローンがオススメです。