我有一个名为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似乎根本没有涉及这个话题。
如Fn::ImportValue
文档中所述,无法修改引用的输出确实是预期的行为:
Note
以下限制适用于交叉堆栈引用:
[...]
- 您无法修改或删除另一个堆栈引用的输出值。
为了在更新输出时解决此问题,您可以使用第二个临时输出值来处理转换:
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
输出。这有点乏味,但应该有效。