■ はじめに
CloudFormation スタックを削除した際に、 生成したリソースを削除したい場合や残しておきたいなどを どのようにコントロールするのかを調べたので、メモする。
目次
【0】リソース属性 【1】DeletionPolicy 属性 【2】DeletionPolicy属性のオプション 1)Delete 2)Retain 3)Snapshot
【0】リソース属性
* CloudFormation では、作成したリソースに対して、 ルール(ポリシー)を設定することができる。 * リソース属性の種類は、以下の通り。 ~~~~~~ 1)DeletionPolicy 属性 << 今回のテーマ 2)CreationPolicy 属性 3)DependsOn 属性 4)Metadata 属性 5)UpdatePolicy 属性 6)UpdateReplacePolicy 属性 ~~~~~~ * 各属性の詳細は、以下の公式サイトを参照のこと。
【1】DeletionPolicy 属性
* CloudFormation の スタック(Stack)を削除した際に そのスタックで生成したリソースが どのような動きをするかを定義する項目
【2】DeletionPolicy属性のオプション
* DeletionPolicy 属性の取りうる値は以下の通り。 1)Delete(削除) << デフォルト(ただし例外あり) 2)Retain(保持) 3)Snapshot(スナップショット)
デフォルト値の例外
* 以下のデフォルト値は、「Snapshot」 + AWS::RDS::DBCluster リソース + DBClusterIdentifier プロパティを 指定しない AWS::RDS::DBInstance リソース
1)Delete
* スタックが削除された際に、そのリソースが削除
使用上の注意
* Amazon S3 バケットでは、削除を成功させるためには バケットのすべてのオブジェクトを削除する必要があります。
2)Retain
* スタックが削除された場合でも、リソースを保持 * cf. Retain = 保持、持ち続ける
公式サイト および その解説動画
https://aws.amazon.com/jp/premiumsupport/knowledge-center/delete-cf-stack-retain-resources/
https://www.youtube.com/watch?v=qwX8UmEb9bQ
例1:S3バケット
AWSTemplateFormatVersion: '2010-09-09' Resources: myS3Bucket: Type: AWS::S3::Bucket DeletionPolicy: Retain
例2:セキュリティグループおよびインバウンド
Description: AWS CloudFormation DeletionPolicy demo Resources: SGroup1: Type: 'AWS::EC2::SecurityGroup' DeletionPolicy: Retain Properties: GroupDescription: EC2 Instance access # SecurityGroupIngress : インバウンド #(cf. SecurityGroupIngress=アウトバウンド) SGroup1Ingress: Type: 'AWS::EC2::SecurityGroupIngress' DeletionPolicy: Retain Properties: GroupName: !Ref SGroup1 IpProtocol: tcp ToPort: '80' FromPort: '80' CidrIp: 0.0.0.0/0
3)Snapshot
* スタックが削除された際に、そのリソースが削除 ただし、その前に、そのリソースのスナップショットを作成
対応リソース
* AWS::EC2::Volume * AWS::ElastiCache::CacheCluster * AWS::ElastiCache::ReplicationGroup * AWS::Neptune::DBCluster * AWS::RDS::DBCluster * AWS::RDS::DBInstance * AWS::Redshift::Cluster
参考文献
https://dev.classmethod.jp/articles/how-to-keep-datas-when-deleting-stacks/
https://oreout.hatenablog.com/entry/aws/cloudformation/15
https://dev.classmethod.jp/articles/aws-cloudformation-stack-deletion-policy/
関連記事
AWS CloudFormation ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2021/10/26/224812
AWS CloudFormation ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2021/12/01/170326
AWS CloudFormation ~ 組み込み関数 ~
https://dk521123.hatenablog.com/entry/2021/12/04/202519
AWS CloudFormation ~ 疑似パラメータ ~
https://dk521123.hatenablog.com/entry/2021/12/05/134313
AWS CloudFormation ~ 認証情報の扱い ~
https://dk521123.hatenablog.com/entry/2021/12/28/224501
CloudFormation で Github/CodePipeline/CodeBuild を構築する
https://dk521123.hatenablog.com/entry/2021/12/26/155956