gpt4 book ai didi

amazon-web-services - 如何优雅地取消 cdk 部署?

转载 作者:行者123 更新时间:2023-12-03 07:40:13 24 4
gpt4 key购买 nike

问题

就我而言,我想构建一个具有以下要求的 CI/CD 管道(使用 github 操作):

  • 每个 git 推送都会触发一个工作流程(= 管道)
  • 每个工作流程都会为当前分支创建/更新多个堆栈(因此每个分支都有自己的部署和独立的堆栈)
  • 如果分支的堆栈已部署,则会更新堆栈
  • cdk部署命令用于创建/更新堆栈

只要您不在较短的时间内多次推送新更改,这一切都可以正常工作。如果您第一次推送,它将按预期触发 cdk 部署
但如果您不久之后再次推送,它将触发 cdk 部署,该部署会失败,因为之前的 cdk 部署 已将堆栈放入 CREATE_IN_PROGRESS > 或 UPDATE_IN_PROGRESS 状态。不幸的是,因为只有最新的推送以及最新的 cdk 部署才是相关的。

问题

如何优雅地取消 cdk 部署,以便它开始回滚部署,并且后续的 cdk 部署 能够成功?

我尝试过

对我来说,理想的解决方案是使用 Ctrl+C 中断 cdk deploy 命令来取消部署。但这种情况并非如此。它将继续部署。是否有另一种解决方案,不太复杂

最佳答案

这个问题是非常固执的,你的问题的解决方案可能根本不是使用 CDK。您无法 100% 确定即使在强制取消 cdk deploy 命令后它也会完美回滚。如果堆栈第一次部署并创建 s3 存储桶,该怎么办?在这种情况下即使您取消部署。 S3 存储桶不会被删除。

解决您的问题的一个直接解决方案是在 CI 服务器中实现顺序管道。因此,如果 1 个管道正在为给定队列或存储库工作,则其他管道应该在队列中等待。通过这样做,您的基础设施更改将逐步部署。这是一个更干净、更可靠的解决方案,可以实现您想要做的事情。

这个 ^ 解决方案并不像任何其他解决方案一样完美!它可能会导致整个解决方案变得很慢,因为与取消部署 -> 删除堆栈 -> 重新部署相比,顺序管道将花费更多时间。

关于amazon-web-services - 如何优雅地取消 cdk 部署?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70954488/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com