不存在的导出/输出阻止堆栈更新/删除

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数据休息 - 是否存在阻止所有删除操作的全局开关?

Notification.permission 设置为拒绝并且不存在于阻止中

更新/删除不存在的行时的 PL/SQL 异常

Serverless:指定的存储桶不存在

mysql关于触发器怎么判断数据存在时更新不存在时添加呢!

MATLAB常用函数(不定时更新)