微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

AWS Cloudformation - Stack 与 NestedStack

如何解决AWS Cloudformation - Stack 与 NestedStack

我认为这会在互联网上得到很清楚的回答。但是我发现没有足够的答案来说明何时使用一种类型的堆栈以及何时使用另一种类型的堆栈。

  • 所以主要问题是常规堆栈嵌套堆栈之间有什么区别?

我可以使用常规堆栈对我的基础架构进行完美建模。此外,我可以使用嵌套堆栈和一个根常规堆栈完美地建模我的基础设施。从项目的角度来看 - 唯一的区别是堆栈类型名称。其他都一样。

例如,我正在使用 AWS CDK - 一个合成器,例如,可以将 python 合成为 CloudFormation 模板。我可以使用 Stacks 做任何事情,我可以简单地找到并替换 Stack 到 nestedStack。基础设施将重新部署,但本质上没有任何变化。

  • 那么为什么我要在常规堆栈上使用嵌套堆栈?他们各自的优势是什么?

解决方法

嵌套堆栈就像代码中的函数,它捆绑了可重用的代码并且您可以对其进行参数化。

就像在 Python 中编程一样,您可以定义一个方法,该方法提供您在整个应用程序或不同应用程序中使用的功能。当然,你不能在你的 python 代码中使用任何方法,而只是在多个位置复制和粘贴相同的代码,它也可以工作并且没问题。

就像 Python 中的函数一样,嵌套堆栈允许您减少跨各种模板的复制和粘贴的数量,因为您可以将常见模式捆绑到嵌套堆栈中。就像函数一样,嵌套堆栈可以参数化,因此您可以根据需要从单个嵌套堆栈创建资源。

为什么我要在常规堆栈上使用嵌套堆栈?

避免跨多个堆栈复制和粘贴相同的功能。答案类似于“为什么我应该在 python 中使用函数,如果我可以在需要时将相同的代码复制并粘贴到任何地方?”。

,

那么为什么我要在常规堆栈上使用嵌套堆栈?它们各自的优势是什么?

主要原因是,如果一个堆栈中有超过 500 个资源,您别无选择,只能将其分解为嵌套的堆栈。在 2020 年 10 月之前,这个 500 的限制曾经是 200 个资源。

,

嵌套堆栈的最大“区别”在于它们成为父堆栈的一部分。这意味着,如果部署失败,所有堆栈(父堆栈和嵌套堆栈)将作为一个堆栈回滚。与多个堆栈相比,您可以让第一个成功部署,第二个失败并回滚,第三个甚至不尝试部署。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。