NestedStacks和construct之间的权衡是什么?



我试图理解嵌套堆栈与结构的用例,特别是在CDK中。AWS文档是这样说的:

堆栈是部署单元:堆栈中的所有内容都被部署在一起。因此,在从多个AWS资源构建应用程序的高级逻辑单元时,请将每个逻辑单元表示为Construct,而不是Stack。使用堆栈仅用于描述如何为各种部署场景组合和连接构造。

在评估是使用Construct还是Stack时,这是有意义的,但是嵌套堆栈呢?构造和嵌套堆栈都解决了以下问题:

  • 组件架构的可重用性
  • 组件间受控信息共享/缓解进出口(致命拥抱)问题
  • 和结构和嵌套堆栈都从根堆栈一起部署(据我所知,nestedstack很少单独部署,并且打算作为一个父堆栈下的一组nestedstack的一部分部署)

那么,除了解决单个堆栈的资源限制之外,使用嵌套堆栈优于构造的好处是什么(即,何时应该使用一个堆栈而不是另一个堆栈)?

CloudFormation文档和CDK文档对嵌套堆栈的描述有多么不同,这很有指导意义。CloudFormation文档关注的是它们在组件重用中的作用。CDK文档没有提到重用,而是将它们作为每个堆栈资源限制的解决方案。当然,嵌套栈可以做这两件事。

CDK构造比它从CloudFormation继承的嵌套堆栈更可组合和可移植。CDK文档推荐在这里和这里构建组合。

除了克服每个堆栈的资源限制之外,当将现有的CloudFormation模板包含到CDK应用程序中时,使用嵌套堆栈还有一个向后兼容性的理由。

最新更新