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

标签 amazon-web-services aws-cloudformation github-actions aws-cdk

问题

就我而言,我想构建一个具有以下要求的 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/

相关文章:

amazon-web-services - 当集群可用内存不足时,如何对 ECS 实例执行 AWS CloudFormation 自动缩放

amazon-web-services - AWS SAM - 资源之间的循环依赖错误

aws-cloudformation - 在 lambda 存在之前创建 lambda 角色和策略

go - Github 操作 go test 找不到包错误。我怎样才能解决这个问题?

github - 从注释文件中禁用 Github Actions 检查运行

gitlab-ci - GitLab 管道相当于 GitHub 操作

c# - 用于加速电子邮件发送应用程序的多线程

amazon-web-services - aws elasticsearch SysMemoryUtilization 指标准确吗?

amazon-web-services - 如何检查 Amazon Linux Machine (AMI) 上的 Tomcat 版本?

java - AWS lambda/api网关不重定向