Amazon cloudformation 是否设置ECS云信息更新堆栈超时?

Amazon cloudformation 是否设置ECS云信息更新堆栈超时?,amazon-cloudformation,amazon-ecs,Amazon Cloudformation,Amazon Ecs,当使用新的容器映像更新Cloudformation EC2容器服务(ECS)堆栈时,是否有方法控制超时,以便在服务不稳定时自动回滚 作为自动缩放组的一部分的UpdatePolicy属性没有帮助,因为没有创建实例 我也尝试过等待条件,但一直无法使其发挥作用 堆栈实质上只是停留在更新进行中状态,直到达到默认超时(~3小时),或者触发取消更新 理想情况下,我们能够在短时间后使堆栈超时 这就是我的Cloudformation模板的外观: 谢谢。如果您的WaitCondition是原始创建,您需要重命名

当使用新的容器映像更新Cloudformation EC2容器服务(ECS)堆栈时,是否有方法控制超时,以便在服务不稳定时自动回滚

作为自动缩放组的一部分的UpdatePolicy属性没有帮助,因为没有创建实例

我也尝试过等待条件,但一直无法使其发挥作用

堆栈实质上只是停留在更新进行中状态,直到达到默认超时(~3小时),或者触发取消更新

理想情况下,我们能够在短时间后使堆栈超时

这就是我的Cloudformation模板的外观:

谢谢。

如果您的WaitCondition是原始创建,您需要重命名它(和句柄)。一旦waitcondition发出完成的信号,它将始终完成。如果重命名它并进行更新,原始的WaitCondition和句柄将被删除,新的WaitCondition和句柄将被创建并发出信号


如果您不想修改模板,则可以使用Lamba和自定义资源通过aws cli为每次更新创建唯一的WaitCondition。

目前无法使用提供的CloudFormation类型。我也有同样的问题,我可能会创建一个定制的CloudFormation资源(usineg AWS Lambda)来替换我的AWS::ECS::服务


另一种选择是使用嵌套堆栈包装AWS::ECS::Service资源——这不会解决问题,但至少会隔离单个服务,堆栈的其余部分将处于良好状态。我的堆栈有多个服务,这会有所帮助,但到目前为止,自定义资源是最好的选择(我知道其他人也做了同样的事情)。

在AWS创建ECS UpdatePolicy和CreationPolicy以允许资源分配信号之前,我已经为这个问题创建了一个解决方案:

使用带有宏的
AWS::CloudFormation::WaitCondition
,该宏将在预期更新服务时创建新的WaitCondition资源。使用附加到任务的非必要容器发出等待条件信号

例如:


上述示例的宏可以在此处找到:

我解决此问题的方法是在触发更新堆栈之前,在后台运行脚本

./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

理想情况下,我希望
创建堆栈
更新堆栈
都有一个
——分钟超时
选项。不幸的是,只有
create stack
具有此功能。@是的,完全正确。这是必不可少的,因为我们遇到了同样的问题,还没有找到适当的解决办法:(AWS指示我们使用WaitCondition,但这有点棘手,因为如果超时设置为45分钟,但更新时间超过45分钟,会发生什么情况?是的,我不希望继续修改模板,它也无法更新句柄的名称。我将研究使用Lambda。谢谢!酷,谢谢详细信息。是的,我们也没有找到一个很好的解决方案,但我们添加了更多的容器映像测试过程,然后将其推送到ECS。因此,我们的CI在本地运行容器,并对其进行一系列测试,这样我们就可以非常有信心,服务在部署时将是健康的。您使用sam吗e宏用于多个服务堆栈或为每个服务生成一个宏?对所有ServicesHanks使用相同的宏,今天就实现了您的解决方案,解决了令人沮丧的超时问题。