AWS cdk Stack部署顺序

时间:2020-01-22 10:00:10

标签: aws-cdk

我正在寻找一种方法来指定项目中我的堆栈的部署顺序。 我知道我可以添加依赖项,但是这些堆栈并不相互依赖,我可能想稍后再删除一些。

我有一个全局框架,每个其他堆栈(例如rds)都需要这些服务。这些都是在一开始就部署的。

  • 应用网络
  • App-GlobalResources

现在,我想为新客户添加堆栈,这些堆栈将取决于2个全局堆栈,并且彼此依赖,但不取决于任何其他客户堆栈。

例如

  • App-Customer-A-EC2(取决于App网络)
  • App-Customer-A-Lambdas(取决于App-Customer-A-EC2)
  • App-Customer-A-Settings(取决于App-GlobalResources,App-Customer-A-Lambdas)

  • App-Customer-B-EC2(取决于App网络)
  • App-Customer-B-Lambdas(取决于App-Customer-B-EC2)
  • App-Customer-B-Settings(取决于App-GlobalResources,App-Customer-B-Lambdas)

我希望所有这些堆栈都按此顺序部署。首先是全局堆栈,然后是所有客户a,然后是所有客户b。

这是cdk在做什么:

  • 应用网络
  • App-GlobalResources
  • App-Customer-A-EC2
  • App-Customer-B-EC2
  • App-Customer-A-Lambdas
  • App-Customer-B-Lambdas
  • App-Customer-A-Settings
  • App-Customer-B-Settings

这意味着客户A必须等到所有其他客户资源都生成后才能使用该系统,依此类推。由于客户堆栈之间没有交叉依赖关系,因此不必按cdk的顺序进行部署。

那么,我在这里有什么选择?除了添加依赖项?我认为起初它会按堆栈名称或cunstruct路径的字母顺序排列,但事实并非如此。

谢谢!

编辑: 我浏览了cdk应用程序的代码,找到了排序代码。就我而言,目前没有办法。 CDK使用的排序类型将始终导致观察到的模式。

我现在通过添加依赖项来解决。删除“处于中间”并具有依赖关系的堆栈时,我必须使用-e自变量销毁它们。

1 个答案:

答案 0 :(得分:0)

您可以多次调用cdk deploy [stack_name]来首先部署“必需的”堆栈(例如,部署RDS或网络组件的堆栈),最后调用cdk deploy *来配置所有剩余的堆栈。