上下文:我使用 CloudFormation 来配置应用程序资源已经有一段时间了,效果很好。不过,我最近将应用程序转移到了不同的基础设施 (Kubernetes),为了适应这一更改,我修改了 Route53 DNS 记录以指向新资源,并保留了 CloudFormation 创建的所有 AWS 资源。为了清楚起见,我修改的 DNS 记录是作为 CloudFormation 堆栈的一部分创建的。
问题:我想删除现在未使用的资源,包括 CloudFormation 堆栈本身。但是,这样做要么会删除我非常关心的一条 DNS 记录,要么会因为该 DNS 记录被修改而无法删除,从而回滚整个操作。
问题:有谁知道一种巧妙的方法,可以删除 CloudFormation 堆栈,同时仍保留其创建的 Route53 条目,且停机时间为零?
注意:我不想手动删除 CloudFormation 创建的资源(DNS 记录除外),并让堆栈悬而未决。
最佳答案
我最近需要保留使用 CloudFormation 创建的 Route53 记录。我根据 @jarmod 响应进行了以下练习,效果非常好。这里的关键是:"DeletionPolicy": "Retain"
有关 DeletionPolicy attribute 的更多信息。我还会注意到,当我应用更改集来更改删除策略时,CloudFormation 没有检测到 Route53 条目中的任何偏差。成功!
- 创建基本的 CloudFormation 堆栈;负载均衡器、ASG 和指向负载均衡器的 Route53 记录
- 使用 Route53 控制台将 Route53 条目更改为指向另一个位置
- 通过更改集将
"DeletionPolicy": "Retain"
应用到我的 Route53 资源 block - 从 AWS 控制台删除 CloudFormation 堆栈
- 确认堆栈删除后 Route53 仍然包含您的条目
关于amazon-web-services - 删除 AWS CloudFormation 堆栈但保留 Route53 记录集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46434186/