首页 > 解决方案 > CloudFormation 的超时配置

问题描述

我正在对 ECS 运行 CloudFormation 更新。由 CodePipeline 触发。我想在超时后中止 CloudFormation 部署并回滚到以前的版本。

实现这一目标的最佳方法是什么?我看到了一些关于 WaitConditions 的东西,但我不确定这是正确的机制。

我还发现您可以TimeoutInMinutes在嵌套堆栈上配置一个https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-stack.html#cfn-cloudformation-stack-timeoutinminutes - 但听起来你不能在堆栈的顶层或任意资源上应用类似的属性?

有没有另一种方法可以使用组合,如果它不成功,我可以在几分钟后中止 Codepipeline-> Cloudformation-> ECS 部署?

标签: amazon-cloudformationamazon-ecsaws-codepipeline

解决方案


我们不使用 CodePipeline,我们使用的是 Sceptre。但我想我的解决方法仍然有效。我对这个问题的解决方法是在触发部署之前,在后台运行一个脚本。

./deployment-breaker.sh &

而对于脚本

#!/bin/bash
sleep 600
$deploymentStatus = (aws cloudformation describe-stack --stack-name STACK_NAME | jq XXX)
if [[ $deploymentStatus == YOUR_TERMINATE_CONDITION ]]then
  aws cloudformation cancel-update-stack --stack-name STACK_NAME
fi

推荐阅读