繁体   English   中英

AWS Cloudformation - 堆栈与 NestedStack

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM