DeletionPolicy
属性
利用 DeletionPolicy
属性,您可以在某个资源的堆栈被删除时保留并(在某些情况下)备份该资源。您可为要控制的每个资源指定 DeletionPolicy
属性。默认情况下,如果某个资源不具有 DeletionPolicy
属性,Amazon CloudFormation 将删除该资源。
此功能也适用于会导致从堆栈中删除资源的堆栈更新操作。例如,如果您从堆栈模板中删除资源,则将使用模板更新堆栈。此功能不适用于其物理实例在堆栈更新操作中被替换的资源。例如,如果您编辑资源的属性,CloudFormation 将在堆栈更新过程中替换该资源。
注意
例外:对于 AWS::RDS::DBCluster
资源以及没有指定 DBClusterIdentifier
属性的 AWS::RDS::DBInstance
资源,默认策略是 Snapshot
。
要在某个资源的堆栈被删除时保留该资源,请为其指定 Retain
。您可以对任何资源使用保留。例如,您可以保留嵌套堆栈、Amazon S3 桶或 EC2 实例,以便在删除这些资源的堆栈后继续使用或修改这些资源。
注意
如果要修改 CloudFormation 外部的资源,请使用保留策略,然后删除堆栈。否则,您的资源可能与 CloudFormation 模板不同步并导致堆栈错误。
对于支持快照的资源(例如 AWS::EC2::Volume
),您可以指定 Snapshot
以让 CloudFormation 在删除资源之前创建快照。
以下代码段包含具有 Retain
删除策略的 Amazon S3 桶资源。此堆栈被删除时,CloudFormation 将保留该存储桶,不将其删除。
JSON
{ "AWSTemplateFormatVersion" : "2010-09-09", "Resources" : { "myS3Bucket" : { "Type" : "AWS::S3::Bucket", "DeletionPolicy" : "Retain" } } }
YAML
AWSTemplateFormatVersion: '2010-09-09' Resources: myS3Bucket: Type: AWS::S3::Bucket DeletionPolicy: Retain
DeletionPolicy
选项
- 删除
-
在堆栈删除过程中,CloudFormation 将删除资源及其所有内容(如果适用)。您可以向任何资源类型添加此删除策略。默认情况下,如果不指定
DeletionPolicy
,CloudFormation 将删除您的资源。但应了解以下注意事项:-
对于
AWS::RDS::DBCluster
资源,默认策略是Snapshot
。 -
对于没有指定
AWS::RDS::DBInstance
属性的DBClusterIdentifier
资源,默认策略是Snapshot
。 -
对于 Amazon S3 桶,您必须删除存储桶中的所有对象才能成功完成删除。
注意
CloudFormation 的默认行为是使用 ForceDeleteWithoutRecovery 标志删除密钥。
-
- 保留
-
CloudFormation 在其堆栈被删除时将保留资源,而不删除资源或其内容。您可以向任何资源类型添加此删除策略。CloudFormation 完成堆栈删除后,堆栈将处于
Delete_Complete
状态,但保留的资源将继续存在,并且仍将产生相应费用,直到您删除这些资源。对于更新操作,应注意以下事项:
-
如果某个资源被删除,则
DeletionPolicy
会保留物理资源,但确保该资源已从 CloudFormation 的范围中删除。 -
如果要更新某个资源,则创建新的物理资源替换旧资源,然后彻底删除旧资源,包括从 CloudFormation 的范围中删除。
-
- 快照
-
对于支持快照的资源,CloudFormation 在删除资源之前为其创建快照。CloudFormation 完成堆栈删除后,堆栈将处于
Delete_Complete
状态,但采用此策略创建的快照将继续存在,并且仍将产生相应费用,直到您删除这些快照。支持快照的资源包括: