[英]AWS Cloudformation - Stack vs NestedStack
我认为这将在互联网上得到非常清楚的回答。 但是对于何时使用一种类型的堆栈以及何时使用另一种类型的堆栈,我没有找到足够的答案。
我可以仅使用常规堆栈完美地 model 我的基础架构。 此外,我可以仅使用嵌套堆栈和一个根常规堆栈来完美地 model 我的基础架构。 从项目的角度来看 - 唯一的区别是堆栈类型名称。 其他一切都是一样的。
例如,我正在使用 AWS CDK - 一种合成器,例如,它可以将 python 合成为 CloudFormation 模板。 我可以使用 Stacks 做所有事情,我可以简单地查找 Stack 并将其替换为 NestedStack。 基础设施将被重新部署,但基本上没有任何改变。
嵌套堆栈的最大“区别”是它们成为父堆栈的一部分。 这意味着如果有任何事情未能部署所有堆栈(父堆栈和嵌套堆栈),则将回滚为一个。 与多个堆栈相比,您可以让第一个成功部署,第二个失败并回滚,第三个甚至不尝试部署。
嵌套堆栈就像代码中的函数,它捆绑了可重用的代码并且您可以对其进行参数化。
就像在 python 中编程一样,您可以定义一个方法,该方法提供您在整个应用程序或不同应用程序中使用的功能。 当然,您不能在 python 代码中使用任何方法,而只是在多个位置复制并粘贴相同的代码,它也可以正常工作。
就像 python 中的函数一样,嵌套堆栈允许您减少跨各种模板的复制和粘贴量,因为您可以将常见模式捆绑到嵌套堆栈中。 就像函数一样,嵌套堆栈可以参数化,因此您可以根据您的需求从单个嵌套堆栈创建资源。
为什么我要在常规堆栈上使用嵌套堆栈?
避免跨多个堆栈复制和粘贴相同的功能。 答案类似于“为什么我应该使用 python 中的函数,如果我可以在需要时将相同的代码复制并粘贴到任何地方?”。
那么为什么我要在常规堆栈上使用嵌套堆栈呢? 各自的优势是什么?<<
主要原因是如果堆栈中有超过 500 个资源,则别无选择,只能将其拆分为嵌套堆栈。 在 2020 年 10 月之前,这个 500 的限制曾经是 200 个资源。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.