657 文字
3 分
AWSの主要なストレージ・データベースサービスのAWS CDK におけるデフォルト RemovalPolicy を整理する
2024-12-17

AWS CDK で L2 コンストラクタを利用するとき、リソース削除が実行されるときの削除ポリシーにはデフォルト設定が適用されます。基本的にはリソースが削除されないように設定されますが、このデフォルト値はリソースによって異なるため、サービスごとにどのようなデフォルト動作なのかを整理します。(メモに近いので中身はほぼないです)

AWS CDK の RemovalPolicy#

AWS はストレージサービスであるS3 やデータベースサービスであるRDS など、ユースケースに応じて幅広いストレージやデータベースサービスを提供しています。

これらのサービスを利用するとき、データが失われないように適切な設定と管理が不可欠ですが、Infrastructure as Code (IaC) として定義したりデプロイ自動化したりすることで誤ったデータ削除や構成変更を防ぐことが可能です。

IaC ツールである AWS CDK を使ってこれらのサービスをデプロイする際に、例えば以下のコードで S3 バケットをデプロイしたり、DynamoDB テーブルをデプロイできます。

import * as cdk from 'aws-cdk-lib';
import { Bucket, RemovalPolicy } from 'aws-cdk-lib/aws-s3';

const bucket = new Bucket(stack, 'MyBucket');

しかし、上記の通り簡単にデプロイできるのは、AWS CDK が記述量少なくデフォルトの設定を定義している( L2 コンストラクタなど) おかげであり、特に RemovalPolicy は注意する必要があります。

この削除ポリシーによって、AWS CDK に変更があった場合にデプロイされているリソースを削除するかどうか決まるので、AWS CDK でデプロイした S3 バケットがすべて消し飛ぶ可能性もあります。

AWS CDK の サービスごとの RemovalPolicy のデフォルト挙動#

それでは本題、サービスごとに RemovalPolicy のデフォルト挙動を整理します。

AWS CDK では、デプロイしたリソースを削除するときに、誤ってデータが削除されないように基本的には RemovalPolicy: RETAIN が設定されています。

サービス分類サービスCDK のデフォルト挙動
ストレージS3RemovalPolicy: RETAIN
ストレージFSxRemovalPolicy: RETAIN
ストレージEBSRemovalPolicy: RETAIN
ストレージEFSRemovalPolicy: RETAIN
ストレージBackupRemovalPolicy: RETAIN
データベースRDS・AuroraRemovalPolicy: SNAPSHOT (クラスター) 、ただしパラメータグループ・サブネットグループは RemovalPolicy: DESTROY
データベースDocumentDBRemovalPolicy: RETAIN (クラスター) 、ただしパラメータグループ・サブネットグループは RemovalPolicy: DESTROY
データベースDynamoDBRemovalPolicy: RETAIN

注意点としては、下記のは一旦データストアみたいなところを中心に洗い出しているので、実際はSQSなどにも RemovalPolicy が設定できます。どこかで記事ごと更新するかもしれないですが。

RemovalPolicy: SNAPSHOT など新しい戦略が今後も追加されていくと思うので、引き続き随時アップデートしていけたら良いなと思っています。

AWSの主要なストレージ・データベースサービスのAWS CDK におけるデフォルト RemovalPolicy を整理する
https://okojomemorandum.com/blog/cdk-removalpolicy-summary/
作者
Okojomoeko
公開日
2024-12-17
ライセンス
CC BY-NC-SA 4.0