この記事は公開されてから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 では RemovalPolicy
を DESTROY
に設定することで、スナップショットを生成させることなく RDS インスタンスを削除することができました。
設定の一例:
まとめ
RemovalPolicy
を見直すことで、cdk destroy
時の意図しないスナップショットの生成を抑制できました。
ただし、データの削除に関わる部分であり、デフォルトでわざわざ SNAPSHOT
が適用されていることを考えると、DESTROY
ポリシーを適用するのはいつデータが消滅しても問題ない環境に限定するなど、十分に注意する必要があります。
また、今回の検証環境にはコスト監視・通知機能が組み込まれていたため、意図しない課金に早期に気づくことができました。
検証環境であってもコスト監視・管理をしておくことで、使いすぎを防ぐことができます。