首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AWS cdk堆栈部署命令

AWS cdk堆栈部署命令
EN

Stack Overflow用户
提问于 2020-01-22 10:00:10
回答 2查看 9.3K关注 0票数 6

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

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

  • 应用联网
  • App-GlobalResources

现在我想为新客户添加堆栈,这些堆栈将依赖于两个全局堆栈,并且相互依赖,但不依赖于任何其他客户堆栈。

例如。

  • App-Customer-A-EC2 (依赖于应用程序-网络)
  • App-Customer-A-Lambdas (取决于App-Customer-A-EC2)
  • 应用-客户-A-设置(取决于App-GlobalResources,App-Customer)

  • App-Customer-B-EC2 (依赖于应用程序-网络)
  • App-Customer-B-Lambdas (取决于App-Customer-B-EC2)
  • 应用程序-客户-B-设置(取决于App-GlobalResources,App-Customer Lambdas)

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

然而,这正是cdk正在做的事情:

  • 应用联网
  • App-GlobalResources
  • App-Customer-A-EC2
  • App-Customer-B-EC2
  • App-客户-A-λ
  • 应用-客户-B-蓝宝石
  • 应用程序-客户-A-设置
  • 应用程序-客户-B-设置

这意味着客户A必须等到所有其他客户资源都生成后才能使用系统,以此类推。由于客户堆栈之间不存在交叉依赖关系,因此不必将它们部署在订单cdk中。

我在这里有什么选择?除了添加依赖之外?我一开始以为它是按栈名或楔形路径按字母顺序排列的,但看起来并非如此。

谢谢!

编辑:我查看了cdk应用程序的代码,并找到了排序代码。目前在我的情况下是没有办法的。CDK所使用的排序类型总是会导致观察到的模式。

我现在通过添加依赖项来解决这个问题。当删除“处于中间”且具有依赖关系的堆栈时,我必须使用-e参数销毁它们。

EN

回答 2

Stack Overflow用户

发布于 2021-12-26 07:01:19

来自文档的堆栈依赖项部分:

两个不同的堆栈实例可以相互依赖。当一个堆栈中的资源在另一个堆栈中引用时,就会发生这种情况。在这种情况下,CDK记录资源的跨堆栈引用,自动生成正确的CloudFormation原语,并在两个堆栈之间添加一个依赖项。还可以使用stackA.addDependency(stackB)方法在两个堆栈之间手动添加依赖项。

票数 3
EN

Stack Overflow用户

发布于 2020-02-16 12:36:24

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59856998

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档