いきなりまとめ
- Auroraでは削除時に自動バックアップの保持が可能
- しかしcloudformationでは対応していない
- サポートに聞いたところ、AWS Backupで継続的バックアップを有効化している場合、保持されることが判明
- 早くCfnでも対応してほしい
前提: Auroraのバックアップ事情
Auroraにはバックアップの仕組みが複数あります。詳しくは以下の記事を読んでみてください。
今回はその中でも自動バックアップの話になります
Auroraを削除するとバックアップはどうなるのか
Auroraを削除するときは自動バックアップを保持することができます。
保持をすることで、クラスターを削除しても自動バックアップは保持期間まで残しておくことができます。
この機能自体は比較的最近の機能で2023/08でリリースされた機能になります
cloudformationでは対応していない
IaC をするとなるとcloudformationを使いたいですが、なんとcloudformationでは対応していません
- AWS::RDS::DBClusterに保持関連のプロパティが無い
- AWS::RDS::DBInstanceにはあるが、Aurora は対応していないと書かれている
そのため、cloudformationでAuroraを管理している場合は、Stack削除時に自動バックアップは削除されてしまうことになります
サポートに聞いてみた
どうにか方法は無いかということでサポートに問い合わせをしたところ、結論としてはAWS Backupの継続的バックアップと関連付いている場合に限り、cloudformationで削除をしても自動バックアップが保持される
ことがわかりました
以下サポートの回答の抜粋です
現在、 DeleteDBCluster API で、 DeleteAutomatedBackups パラメーターを指定しない場合の挙動は、下記のようなものになっております。
1. DB クラスターが AWS バックアップの継続的バックアップと関連付いている場合
DeleteAutomatedBackups パラメーターを指定しない場合、デフォルトの挙動はバックアップを保持するものとなります。
言い換えると、 --no-delete-automated-backups を指定して実行する場合と同等の挙動となります。
お客様が以前検証を行われた際には、デフォルトの挙動はバックアップを削除するものでしたが、変更されました。
2. DB クラスターが AWS バックアップの継続的バックアップと関連付いていない場合
DeleteAutomatedBackups パラメーターを指定しない場合、デフォルトの挙動はバックアップを削除するものとなります。
言い換えると、 --delete-automated-backups を指定して実行する場合と同等の挙動となります。
CloudFormation から DB クラスターを削除する際には DeleteAutomatedBackups パラメーターを指定できませんので、AWS Backup で継続的バックアップを取得されているお客様の環境では、 1 の挙動が適用されます。
詳細に解説
CloudformationでAuroraリソース=AWS::RDS::DBClusterを含むStackを削除した際は内部的にDeleteDBCluster APIが実行されます
そしてDeleteDBCluster に渡す引数としてDeleteAutomatedBackups パラメーターがありますが、これを指定しない場合のふるまいが、AWS Backupの継続的バックアップと関連付けがされているかどうかで異なっています
- AWS Backupの継続的バックアップと関連付けが
されている
場合は、自動バックアップを保持する
- AWS Backupの継続的バックアップと関連付けが
されていない
場合は、自動バックアップを保持しない
おそらくAWS Backupでバックアップを管理する場合はRDS側のAPIで勝手にバックアップが削除されてはサービス上困るので、このような仕様になっているとは思うのですが、驚きの仕様です。
Auroraとは別のサービスによって内部的なふるまいが変わる、というのは何とも言えませんよね
当然ドキュメントにも書かれていなかったので、記載するようにフィードバックを行いました
結論と今後
結論としてはバックアップ保持をしたかったらAWS Backupの継続的バックアップを利用するしかない状態です。
一方で仕様としてはあまり好ましくない状態ではあるので、早めにCloudformationでのサポートをしてほしいところです。2023年リリースの機能なので、そろそろ対応してもおかしくないとは思うのですが。