AWS Cloudformation - Stack 与 NestedStack

Lai*_*kus 6 amazon-web-services aws-cloudformation aws-cdk infrastructure-as-code nested-stack

我想这个问题在互联网上应该有很清楚的答案。但对于何时使用一种类型的堆栈以及何时使用另一种类型的堆栈,我没有找到足够的答案。

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

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

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

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

小智 9

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


Mar*_*cin 0

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

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

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

为什么我要使用嵌套堆栈而不是常规堆栈?

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