我正在寻找一种方法来指定在我的项目中我的堆栈的部署顺序。我知道我可以添加依赖项,但是这些堆栈并不相互依赖,我可能希望稍后删除一些堆栈。
我有一个为其他堆栈(如rds)提供全局需要的服务框架。这些都是在一开始就部署的。
现在我想为新客户添加堆栈,这些堆栈将依赖于两个全局堆栈,并且相互依赖,但不依赖于任何其他客户堆栈。
例如。
和
我希望所有这些堆栈都按这个顺序部署。首先是全局堆栈,然后是所有客户a,然后是所有客户b。
然而,这正是cdk正在做的事情:
这意味着客户A必须等到所有其他客户资源都生成后才能使用系统,以此类推。由于客户堆栈之间不存在交叉依赖关系,因此不必将它们部署在订单cdk中。
我在这里有什么选择?除了添加依赖之外?我一开始以为它是按栈名或楔形路径按字母顺序排列的,但看起来并非如此。
谢谢!
编辑:我查看了cdk应用程序的代码,并找到了排序代码。目前在我的情况下是没有办法的。CDK所使用的排序类型总是会导致观察到的模式。
我现在通过添加依赖项来解决这个问题。当删除“处于中间”且具有依赖关系的堆栈时,我必须使用-e参数销毁它们。
发布于 2021-12-26 07:01:19
来自文档的堆栈依赖项部分:
两个不同的堆栈实例可以相互依赖。当一个堆栈中的资源在另一个堆栈中引用时,就会发生这种情况。在这种情况下,CDK记录资源的跨堆栈引用,自动生成正确的CloudFormation原语,并在两个堆栈之间添加一个依赖项。还可以使用stackA.addDependency(stackB)方法在两个堆栈之间手动添加依赖项。
发布于 2020-02-16 12:36:24
您只需多次调用cdk deploy [stack_name],首先部署“必要的”堆栈(例如,部署RDS或网络组件的堆栈),最后调用cdk deploy *来提供所有剩余的堆栈。
https://stackoverflow.com/questions/59856998
复制相似问题