amazon-web-services - CloudFormation:删除整个嵌套堆栈
问题描述
我有一个 CloudFormation 堆栈,它由 3 个嵌套堆栈组成:
Resources:
ParamsSetup:
Type: AWS::CloudFormation::Stack
Properties:
TemplateURL: a-params.yaml
ResourcePrep:
Type: AWS::CloudFormation::Stack
Properties:
TemplateURL: b-prep.yaml
Services:
Type: AWS::CloudFormation::Stack
Properties:
TemplateURL: c-service.yaml
我意识到ResourcePrep
嵌套堆栈是不必要的,所以我将该堆栈中唯一重要的资源移到Services
堆栈中,并从我的主模板中删除了堆栈:
Resources:
ParamsSetup:
Type: AWS::CloudFormation::Stack
Properties:
TemplateURL: a-params.yaml
Services:
Type: AWS::CloudFormation::Stack
Properties:
TemplateURL: c-service.yaml
现在我有一个问题。CloudFormation 更新失败,因为 中的资源Services
已经属于ResourcePrep
,但ResourcePrep
不应再存在。
我曾期望 CloudFormation 足够聪明,可以删除已删除的堆栈,但事实并非如此。删除的堆栈仍然存在,我不知道如何摆脱它。我读过的所有内容都说您永远不应该手动删除嵌套堆栈。
解决方案
您在这里有几个选择,没有一个像您希望的那样特别优雅。
- 删除堆栈并留下您想要注释掉(或删除)的资源,以便进行 cloudformation 更新/重建。成功更新并删除堆栈后,读取您想要/取消注释的资源。
- 如果需要持久化资源,请在资源上添加删除保留参数,运行更新,然后删除整个堆栈。更新完成后重新添加/重新关联现有资源与您选择的堆栈。
- 在您选择的堆栈中创建一个具有不同名称的相同资源并删除奇数堆栈。
推荐阅读
- adaptive-cards - 自适应卡片中的动态数据绑定
- r - R Plotly范围选择器自动选择“1W”
- javascript - 用JS中现有数组的一些值创建一个新数组
- java - 有没有办法解决play 2.3.0配置错误?
- runtime-error - 提交时它给出 runtime_error
- log4j2 - log4j2, CWE 117 - 日志注入漏洞
- .net-core - 在没有 SDK 的情况下运行 dotnet 核心应用程序 (dll)
- ansible - 在完成一个主机而不是所有分叉主机后为下一个主机执行 ansible playbook
- c# - 在管道中后期设置的 Serilog 上下文在返回管道的早期不可用
- java - 从 JSON 字符串中解析单个值的最快方法