Конфигурация тайм-аута для CloudFormation

Я использую обновления CloudFormation для ECS. Запускается CodePipeline. Я хочу прервать развертывание CloudFormation и вернуться к предыдущей версии по истечении тайм-аута.

Как лучше всего этого добиться? Я кое-что видел о WaitConditions, но не уверен, что это правильный механизм.

Я также обнаружил, что вы можете настроить TimeoutInMinutes во вложенных стеках https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-stack.html#cfn-cloudformation-stack-timeoutinminutes - но похоже на вас нельзя применить подобное свойство на верхнем уровне стека или к произвольному ресурсу?

Есть ли другой способ использовать комбинацию, при которой я могу прервать развертывание Codepipeline-> Cloudformation-> ECS через несколько минут, если это не удастся?


person kos    schedule 16.01.2020    source источник


Ответы (2)


Это общая проблема с действием CodePipeline ECS Deploy (ECS, а не ECS B / G): если вы отправите плохой образ, вам придется подождать 1 час до истечения времени ожидания, прежде чем вы сможете повторить попытку конвейера.

На данный момент CodePipeline не поддерживает откаты. Вы можете обнаружить отказавший конвейер с помощью CloudWatch [1] и предпринять некоторые действия. Действие, вероятно, будет откатом до хорошей версии.

[1] Обнаружение изменений в состоянии конвейера и реагирование на них с помощью событий Amazon CloudWatch - https://docs.aws.amazon.com/codepipeline/latest/userguide/detect-state-changes-cloudwatch-events.html

person shariqmaws    schedule 16.01.2020

Мы не используем CodePipeline, мы используем Scepter. Но я думаю, что мой обходной путь все еще может работать. Мой способ решения этой проблемы заключается в том, что перед запуском развертывания запустите сценарий в фоновом режиме.

./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
person cwang    schedule 28.05.2021