我正在使用CloudFormation来构造一个AWS::DynamoDB::Table
资源,并且我DeletionPolicy
设置为Retain
。假设我更改了此逻辑资源的AttributeDefinitions
属性,例如重命名哈希键,然后执行 CloudFormation update_stack
;这种更改需要"替换"资源。目前为止,一切都好;我希望现有的 DynamoDB 表被"删除",并使用更改的键定义在其位置创建一个新表。
但是,我很惊讶原始表并没有因为DeletionPolicy
而"落后"。当然,可以通过堆栈策略完全阻止更新,但我希望删除策略会导致现已失效的表从 CloudFormation 堆栈中弹出,并在其位置出现一个新表,但实际上并没有被删除。
这是预期行为吗?
是的,这是预期的行为。
仅当您实际删除整个 CloudFormation 堆栈时,才会应用该DeletionPolicy
。
来源:删除政策@docs.aws.amazon.com
如果要在更新期间保留以前的 DynamoDB 表,则需要事先手动备份。您可以使用 AWS 数据管道在 Amazon S3 上备份您的 DynamoDB 表。
使用 AWS 属性"UpdateReplacePolicy: Retain"。