不存在的导出/输出阻止堆栈更新/删除
Posted
技术标签:
【中文标题】不存在的导出/输出阻止堆栈更新/删除【英文标题】:Export/Outputs that don't exist preventing stack from updating/deleting 【发布时间】:2021-05-31 23:01:03 【问题描述】:使用无服务器部署到 AWS。
我通过无服务器创建了一个 Cognito 用户池,然后意识到我想更改它的属性。
我无法部署,因为您无法更新现有用户池的属性。
“没问题 - 我将删除它并重新创建它”我想。所以我做到了。
但我创建了两个引用客户端 ID 和池 ID 的输出,所以现在我得到了这个:
Export alpha-UserPoolId cannot be deleted as it is in use by alpha-Stack
我看不到任何通过 AWS 控制台手动删除这些引用的方法。
有谁知道我可以做些什么来删除这些死引用?
没有手动删除输出的选项,我尝试编辑模板,但它似乎并没有真正做任何事情。
谢谢
[编辑:检查 cmets 以获取有关解决方案的完整详细信息]
【问题讨论】:
【参考方案1】:您必须编辑导入堆栈以不依赖这些值,然后您可以删除它们。
只要某处有Fn::ImportValue
,它就不会让你删除导出。
来自docs:
以下限制适用于跨堆栈引用 ...
如果另一个堆栈引用其输出之一,则无法删除堆栈。 您不能修改或删除被另一个堆栈引用的输出值。
【讨论】:
感谢您这么快回答:) 堆栈是同一个堆栈,并且已经删除了引用。就好像它没有意识到它是同一个堆栈。 为什么要在同一个堆栈中使用它 - Ref 和 GetAtt 是为此而构建的?我建议您从控制台获取当前模板,删除导入,使用它更新堆栈,然后您应该能够删除堆栈。 我的意图只是让创建的用户池 ID 和客户端 ID 在 Lambda 中可用。 ie: ``` 环境:USER_POOL_ID: !ImportValue $self:provider.stage-UserPoolId USER_POOL_CLIENT_ID: !ImportValue $self:provider.stage-UserPoolClientId``` 我再试试模板编辑。 你完全正确!引用仍然存在于模板中,所以我先删除了那些,用新模板更新,然后对输出进行相同的处理!以上是关于不存在的导出/输出阻止堆栈更新/删除的主要内容,如果未能解决你的问题,请参考以下文章
Spring数据休息 - 是否存在阻止所有删除操作的全局开关?