【问题标题】:Updating dependent stacks更新依赖堆栈
【发布时间】:2019-07-24 21:44:51
【问题描述】:

我有一个名为 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 似乎完全没有涉及到这个话题。

【问题讨论】:

    标签: amazon-cloudformation


    【解决方案1】:

    由于其他答案建议的方法看起来有点长,这是我在阅读 this guide 后为克服这个问题所做的:

    1. 我已更新导入堆栈(即stack-lambda)以使用导出参数的实际值(我使用 AWS 控制台进行了此操作,这样我就不必更改我的 yml 代码、提交和部署)
    2. 部署导出堆栈(即stack-layer)并确保问题已解决
    3. 部署从代码库导入堆栈。

    无需更改源代码和中断服务运行即可很快完成。 希望这会对您有所帮助,请随时评论您的问题。

    【讨论】:

      【解决方案2】:

      Fn::ImportValue 文档中所述,无法修改引用的输出确实是预期的行为:

      注意

      以下限制适用于跨堆栈引用:

      [...]

      • 您不能修改或删除被另一个堆栈引用的输出值。

      为了在更新输出时解决此问题,您可以使用第二个临时输出值来处理转换:

      1. 更新 stack-layer 以添加包含新值的第二个输出(例如,layer-arn-2);
      2. 更新stack-lambda,将"Fn::ImportValue": "layer-arn" 引用改为引用layer-arn-2
      3. 更新stack-layer 以删除现在未使用的layer-arn 输出。
        (或者:更新stack-layer 以将layer-arn 设置为与layer-arn-2 相同的值;更新stack-lambda 以引用layer-arn;然后最后更新stack-layer 以删除layer-arn-2 输出。

      这有点乏味,但应该可以。

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-27
      • 2012-12-15
      • 1970-01-01
      • 2020-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-13
      相关资源
      最近更新 更多