首页 > 解决方案 > 删除带有引用的资源

问题描述

嗨,我有一个创建 cognito 用户池的堆栈,作为其中的一部分,我导出了一些输出,以便通过导入导出值来交叉引用堆栈,但是当我尝试删除导出名称的模板时,我已经有了一些用户使用导出值 AWS 会抛出一个错误,指出我无法删除资源,因为引用,所以我认为这是设计中的一个缺陷,因为我是按名称引用的,据我所知,我们可能会遇到想要删除资源的情况并再次创建它,这就是导出名称不附加到特定资源的原因,但现在我认为即使我们命名它也附加到特定资源,所以我想知道是否有工作周围做这个,否则我认为这可能不是一个生产就绪的功能?或者我使用不正确

标签: amazon-web-servicesamazon-cloudformation

解决方案


可悲的是,您无法删除或更新(替换)导出其输出的堆栈(来自docs):

在另一个堆栈导入输出值后,您无法删除正在导出输出值的堆栈或修改导出的输出值。必须先删除所有导入,然后才能删除导出堆栈或修改输出值。

这不是“设计缺陷”。这是设计使然。如果您可以删除其输出由其他人导入的堆栈,则会导致大量基础设施损坏和麻烦。

因此,当您导出和导入时,您做出了坚定的承诺,即只要使用其输出,导出堆栈就会一直存在。

如果您希望在没有此类承诺的情况下松散耦合您的堆栈,那么您不应该使用导出/导入。相反,您将第一个堆栈的输出作为输入参数提供给第二个堆栈。这使您的架构松散耦合,通常允许您自由删除/修改任何堆栈。


推荐阅读