DeletionPolicy 属性 - Amazon CloudFormation
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

DeletionPolicy 属性

利用 DeletionPolicy 属性,您可以在某个资源的堆栈被删除时保留并(在某些情况下)备份该资源。您可为要控制的每个资源指定 DeletionPolicy 属性。默认情况下,如果某个资源不具有 DeletionPolicy 属性,Amazon CloudFormation 将删除该资源。

此功能也适用于会导致从堆栈中删除资源的堆栈更新操作。例如,如果您从堆栈模板中删除资源,则将使用模板更新堆栈。此功能不适用于其物理实例在堆栈更新操作中被替换的资源。例如,如果您编辑资源的属性,CloudFormation 将在堆栈更新过程中替换该资源。

注意

例外:对于 AWS::RDS::DBCluster 资源以及没有指定 DBClusterIdentifier 属性的 AWS::RDS::DBInstance 资源,默认策略是 Snapshot

要在某个资源的堆栈被删除时保留该资源,请为其指定 Retain。您可以对任何资源使用 Retain。例如,您可以保留嵌套堆栈、Amazon S3 桶或 EC2 实例,以便在删除这些资源的堆栈后继续使用或修改这些资源。

注意

如果要修改 CloudFormation 外部的资源,请使用 Retain 删除策略,然后删除堆栈。否则,您的资源可能与 CloudFormation 模板不同步并导致堆栈错误。

对于支持快照的资源(例如 AWS::EC2::Volume),您可以指定 Snapshot 以让 CloudFormation 在删除资源之前创建快照。

以下代码段包含具有 Retain 删除策略的 Amazon S3 桶资源。此堆栈被删除时,CloudFormation 将保留该存储桶,不将其删除。

JSON

{ "AWSTemplateFormatVersion" : "2010-09-09", "Resources" : { "MyBucket" : { "Type" : "AWS::S3::Bucket", "DeletionPolicy" : "Retain" } } }

YAML

AWSTemplateFormatVersion: '2010-09-09' Resources: MyBucket: Type: AWS::S3::Bucket DeletionPolicy: Retain

DeletionPolicy 选项

Delete

在堆栈删除过程中,CloudFormation 将删除资源及其所有内容(如果适用)。您可以向任何资源类型添加此删除策略。默认情况下,如果不指定 DeletionPolicy,CloudFormation 将删除您的资源。但应了解以下注意事项:

  • 对于 AWS::RDS::DBCluster 资源,默认策略是 Snapshot

  • 对于没有指定 AWS::RDS::DBInstance 属性的 DBClusterIdentifier 资源,默认策略是 Snapshot

  • 对于 Amazon S3 桶,您必须删除存储桶中的所有对象才能成功完成删除。

注意

CloudFormation 的默认行为是使用 ForceDeleteWithoutRecovery 标志删除密钥。

Retain

CloudFormation 在其堆栈被删除时将保留资源,而不删除资源或其内容。您可以向任何资源类型添加此删除策略。CloudFormation 完成堆栈删除后,堆栈将处于 Delete_Complete 状态,但保留的资源将继续存在,并且仍将产生相应费用,直到您删除这些资源。

对于更新操作,应注意以下事项:

  • 如果某个资源被删除,则 DeletionPolicy 会保留物理资源,但确保该资源已从 CloudFormation 的范围中删除。

  • 如果要更新某个资源,则创建新的物理资源替换旧资源,然后彻底删除旧资源,包括从 CloudFormation 的范围中删除。

RetainExceptOnCreate

RetainExceptOnCreate 的行为与 Retain 堆栈操作类似,最初创建资源的堆栈操作除外。如果创建资源的堆栈操作被回滚,CloudFormation 会删除该资源。对于所有其他堆栈操作,例如删除堆栈,CloudFormation 会保留资源及其内容。结果是新的、空的和未使用的资源被删除,而正在使用的资源及其数据会被保留。请参阅 UpdateStack API 文档,在不更新模板的情况下使用此删除策略作为 API 参数。

Snapshot

对于支持快照的资源,CloudFormation 在删除资源之前为其创建快照。CloudFormation 完成堆栈删除后,堆栈将处于 Delete_Complete 状态,但采用此策略创建的快照将继续存在,并且仍将产生相应费用,直到您删除这些快照。

支持快照的资源包括: