AWS-CDK:是单堆栈还是多个堆栈?

时间:2020-11-05 20:52:30

标签: aws-cdk

我一直在aws-cdk上看到不同的实现,并且我想知道是否存在首选约定。

  1. 单堆栈。如果所有资源都相关(例如Lambda和IAM角色应该在同一堆栈中,而不是在不同的堆栈中),这是有道理的。但是,这有200个资源限制的问题,一旦开始为每个表创建警报,就可能成为问题。

  2. 多个堆栈。这是有道理的,因为它很好地划分了应用程序(即,所有DDB位于一个堆栈中,所有IAM角色位于另一个堆栈中)。但是,当堆栈之间存在依赖性时,ChangeSets版本存在很多问题(我的Lambda堆栈取决于我的IAM堆栈,但是Lambda堆栈使用了IAM的旧ChangeSet,所以现在我无法更新自己的东西)。由于此方面的持续问题,我最终采用了单堆栈方法。

我想知道对此的看法;我本来希望能在这里找到一条经验法则,但到目前为止我还没有碰到过。

谢谢!

1 个答案:

答案 0 :(得分:1)

CloudFormation堆栈旨在自动更新。也就是说,要么成功完成了对堆栈的所有更新,要么所有更新都被回滚。将基础结构组件分为堆栈时,我将以下检查清单作为经验法则:

  • 如果堆栈更新失败,我是否要回滚所有资源
  • 是否有可能在另一个堆栈中使用此堆栈中的一些资源
  • 是我要添加的与功能相关的资源,例如指相同的业务能力

如果以上任何一个答案是肯定的,我倾向于将资源提取到单独的堆栈中。