当资源在堆栈更新操作期间被替换时,使用 UpdateReplacePolicy
属性保留或(在某些情况下)备份资源的现有物理实例。
启动堆栈更新时,AWS CloudFormation 会根据您提交的内容与堆栈当前模板和参数之间的差异更新资源。如果您更新了一个资源属性,而该属性要求替换资源,则 CloudFormation 会在更新期间重新创建该资源。重建创建资源会生成一个新的物理 ID。CloudFormation 首先创建替换资源,然后更改来自其他依赖资源的引用,以指向替换资源。默认情况下,CloudFormation 接下来会删除旧资源。您可以使用 UpdateReplacePolicy
指定 CloudFormation 保留或(在某些情况下)创建旧资源的快照。
对于支持快照的资源(例如 AWS::EC2::Volume
),您可以指定 Snapshot
以让 CloudFormation 在删除旧资源实例前创建快照。
您可以将 UpdateReplacePolicy
属性应用于任何资源。只有当您更新一个资源属性,而其更新行为被指定为替换时,才执行 UpdateReplacePolicy
,进而促使 CloudFormation 用具有新物理 ID 的新资源替换旧资源。例如,如果您更新 AWS::RDS::DBInstance 资源类型的 Engine
属性,则 CloudFormation 会创建新资源并将当前数据库实例资源替换为新资源。然后,UpdateReplacePolicy
属性会指示 CloudFormation 是已删除、保留还是创建了旧数据库实例的快照。资源的每个属性的更新行为会在 AWS 资源和属性类型参考中有关该资源的参考主题中指定。有关资源更新行为的更多信息,请参阅理解堆栈资源的更新行为。
UpdateReplacePolicy
属性应用于您直接执行的堆栈更新和使用更改集执行的堆栈更新。
注意
保留的资源继续存在并继续产生相应费用,直到您删除它们为止。使用该策略创建的快照继续存在并继续产生相应费用,直到您删除它们为止。UpdateReplacePolicy
保留旧的物理资源或快照,但将其从 CloudFormation 的范围内删除。
UpdateReplacePolicy
不同于 DeletionPolicy 属性,它仅适用于堆栈更新过程中替换的资源。对于在删除堆栈时被删除的资源,或者从模板删除资源定义本身时被删除的资源(作为堆栈更新的一部分),使用 DeletionPolicy
。
以下代码段包含具有 Retain
替换策略的 Amazon RDS 数据库实例资源。当该资源被具有新物理 ID 的新资源替换时,CloudFormation 保留旧的数据库实例而不删除它。
JSON
{
"AWSTemplateFormatVersion" : "2010-09-09",
"Resources" : {
"myDB" : {
"Type" : "AWS::RDS::DBInstance",
"DeletionPolicy" : "Retain",
"UpdateReplacePolicy" : "Retain",
"Properties" : {}
}
}
}
YAML
AWSTemplateFormatVersion: 2010-09-09
Resources:
myDB:
Type: 'AWS::RDS::DBInstance'
DeletionPolicy: Retain
UpdateReplacePolicy: Retain
Properties: {}
UpdateReplacePolicy
选项
Delete
-
在资源替换期间,CloudFormation 删除资源及其所有内容(如适用)。您可以向任何资源类型添加此策略。默认情况下,如果不指定
UpdateReplacePolicy
,CloudFormation 将删除您的资源。但是,应注意下列事项:对于 Amazon S3 桶,您必须删除存储桶中的所有对象才能成功完成删除。
Retain
-
当资源被替换时,CloudFormation 保留资源而不删除资源或其内容。您可以向任何资源类型添加此策略。保留的资源继续存在并继续产生相应费用,直到您删除它们为止。
如果资源被替换,
UpdateReplacePolicy
虽然保留旧的物理资源,但会从 CloudFormation 的范围中将其删除。 Snapshot
-
对于支持快照的资源,CloudFormation 在删除资源之前为其创建快照。使用该策略创建的快照继续存在并继续产生相应费用,直到您删除它们为止。
注意
如果您在
UpdateReplacePolicy
中为不支持快照的资源指定Snapshot
选项,CloudFormation 会还原为默认选项,即Delete
。支持快照的资源包括: