RDS インスタンス削除時に自動生成されるスナップショットの消し忘れに注意

RDS インスタンス削除時に自動生成されるスナップショットの消し忘れに注意
2022.10.14

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

背景

検証のために RDS インスタンスを含む CDK スタックをデプロイし、その後検証を終えたので cdk destroy を実行してスタックを削除しました。
RDS インスタンスは削除されましたが、スナップショットが生成されていることに気づきませんでした。
結果として、100 ドルの意図しない課金が発生していました。

消し忘れた原因

デプロイ時に RDS インスタンスの DeletionPolicy (RemovalPolicy) が未指定だったため、cdk destroy 時にスナップショットが自動生成されていました。

RDS インスタンスのデフォルトでは、RDS インスタンスの削除時にスナップショットを残すポリシー SNAPSHOT となっています。

注記
例外: AWS::RDS::DBCluster リソースと、DBClusterIdentifier プロパティを指定しない AWS::RDS::DBInstance リソースのデフォルトポリシーは Snapshotです。

cdk destroy 時にスナップショットを生成させない

CDK では RemovalPolicyDESTROY に設定することで、スナップショットを生成させることなく RDS インスタンスを削除することができました。
設定の一例:
RDS Instance の RemovalPolicy を DESTROY に設定する

まとめ

RemovalPolicy を見直すことで、cdk destroy 時の意図しないスナップショットの生成を抑制できました。
ただし、データの削除に関わる部分であり、デフォルトでわざわざ SNAPSHOT が適用されていることを考えると、DESTROY ポリシーを適用するのはいつデータが消滅しても問題ない環境に限定するなど、十分に注意する必要があります。

また、今回の検証環境にはコスト監視・通知機能が組み込まれていたため、意図しない課金に早期に気づくことができました。
検証環境であってもコスト監視・管理をしておくことで、使いすぎを防ぐことができます。

関連記事