我有一个名为stack-layer
的堆栈,该堆栈导出Lambda层的ARN,还有另一个名为stack-lambda
的堆栈,其中包含一个引用该Lambda层的Lambda。
当我尝试更新stack-layer
时,出现错误:Export layer-arn cannot be deleted as it is in use by stack-lambda
,这是完全可以理解的。但是,我从这里看不到如何进行更新。
有什么方法可以更新这种依赖堆栈吗?亚马逊的walkthrough似乎根本没有涉及这个话题。
答案 0 :(得分:1)
如Fn::ImportValue
文档中所述,无法修改引用的输出确实是预期的行为:
注意
以下限制适用于跨堆栈引用:
[...]
- 您不能修改或删除另一个堆栈引用的输出值。
为了在更新输出时解决此问题,可以使用第二个临时Output值来处理过渡:
stack-layer
,添加第二个包含新值的输出(例如,layer-arn-2
); stack-lambda
,将"Fn::ImportValue": "layer-arn"
引用改为引用layer-arn-2
。stack-layer
以删除当前未使用的layer-arn
输出。stack-layer
以将layer-arn
设置为与layer-arn-2
相同的值;更新stack-lambda
以引用layer-arn
;然后最后更新stack-layer
删除layer-arn-2
输出。这有点乏味,但应该可以。
答案 1 :(得分:0)
由于其他答案建议的方法看起来更长,这是我在阅读this guide后克服此问题的方法:
stack-lambda
)以使用导出参数的实际值(我使用AWS控制台进行了此操作,因此无需更改yml代码,提交和部署)< / li>
stack-layer
)并确保问题已解决此操作非常迅速,无需更改源代码并中断服务运行。 希望这会有用,请随时评论您的问题。