CloudFormationテンプレートのDeletionPolicy属性
Resourcesセクション内のリソース定義時に、DeletionPolicy属性を指定すると、リソースの削除方法を制御できます。
DeletionPolicy属性は、リソースのふるまいや関連性を制御するリソース属性
の1つです。
リソース属性
- CreationPolicy 属性
- DeletionPolicy 属性 (これ)
- DependsOn 属性
- Metadata 属性
- UpdatePolicy 属性
DeletionPolicy属性のオプション
- Delete
- リソースを削除する
- Retain
- スタック削除しても、対象のリソースを削除しない
- 残ったリソースはCloudFormationの管理外
- Snapshot
- リソースを削除する前にスナップショット作成
- 対応リソース
- AWS::EC2::Volume
- AWS::ElastiCache::CacheCluster
- AWS::ElastiCache::ReplicationGroup
- AWS::RDS::DBInstance
- AWS::RDS::DBCluster
- AWS::Redshift::Cluster
デフォルトの動作
DeletionPolicy属性は省略可能です。
省略した場合はリソースが削除されますが、一部のリソースタイプはデフォルトの動作が異なります。
リソースタイプ | デフォルトの動作 |
---|---|
AWS::RDS::DBCluster | Snapshot |
AWS::RDS::DBInstance | Auroraエンジン用のDBClusterIdentifierプロパティ ・指定する:Delete ・指定しない:Snapshot |
それ以外 | Delete |
サンプルテンプレート
Amazon RDSのDBインスタンスを作成するテンプレートです。
リソースタイプ AWS::RDS::DBInstance の DeletionPolicy属性にRetain
を指定しています。
スタック作成時に
AWSTemplateFormatVersion: 2010-09-09 Parameters: DBUser: NoEcho: true Description: The database admin account username Type: String MinLength: 1 MaxLength: 16 AllowedPattern: '[a-zA-Z][a-zA-Z0-9]*' ConstraintDescription: must begin with a letter and contain only alphanumeric characters. DBPassword: NoEcho: true Description: The database admin account password Type: String MinLength: 8 MaxLength: 41 AllowedPattern: '[a-zA-Z0-9]*' ConstraintDescription: must contain only alphanumeric characters. Resources: MyDB: Type: AWS::RDS::DBInstance Properties: DBName: MyDatabase AllocatedStorage: 5 DBInstanceClass: db.t2.small Engine: MySQL MasterUsername: !Ref DBUser MasterUserPassword: !Ref DBPassword DeletionPolicy: Retain Outputs: JDBCConnectionString: Description: JDBC connection string for the database Value: !Join - '' - - 'jdbc:mysql://' - !GetAtt - MyDB - Endpoint.Address - ':' - !GetAtt - MyDB - Endpoint.Port - /MyDatabase
スタックを削除すると、RDSを削除しないため、一瞬で完了します。 (残ったRDSは削除してください)
AWS::RDS::DBInstanceの場合、DeletionPolicy属性を削除するとSnapshot
として動作します。
この場合、スナップショットが残っているのが確認できます。
参考
- AWSドキュメント