Как принудительно развернуть в лямбду через SAM cli - PullRequest
0 голосов
/ 23 мая 2019

Я использую команду sam deploy для развертывания своей лямбды на AWS.Иногда я получаю эту ошибку An error occurred (ValidationError) when calling the CreateChangeSet operation: Stack:arn:aws:cloudformation:ap-southeast-2:xxxx:stack/xxxx/xxxx is in ROLLBACK_COMPLETE state and can not be updated. Я знаю, что в предыдущем развертывании произошел сбой.Я могу вручную удалить стек в консоли AWS cloundformation и повторить команду.Но мне интересно, есть ли способ заставить команду удалить любой стек состояний отката?

Я знаю, что могу удалить сбойный стек через aws cli или консоль.Но мой deploy скрипт находится на CI, и я бы хотел, чтобы CI использовал команду deploy для переопределения сбойного стека.Сценарий таков:

1. CI failed on deploy lambda function
2. My team analysis the issue and fix the issue in cloudformation template file
3. Push the fix to github to tigger the CI
4. CI is triggered and use the latest change to override the failed stack.

Я не хочу, чтобы команда вручную удаляла стек.

1 Ответ

1 голос
/ 23 мая 2019

Статус ROLLBACK_COMPLETE существует только после неудачного стека создание . Единственный вариант - удалить стек. Это даст вам возможность правильно проанализировать причину сбоя.

Вы можете удалить стек из командной строки с помощью:

aws cloudformation delete-stack --stack-name <value>

Из документации из ROLLBACK_COMPLETE:

Успешное удаление одного или нескольких стеков после неудачного создания стека или после явно отмененного создания стека. Все ресурсы, созданные во время действия создания стека, будут удалены.

Этот статус существует только после неудачного создания стека. Это означает, что все операции из частично созданного стека были соответствующим образом очищены. В этом состоянии может быть выполнена только операция удаления.

Обычно ROLLBACK_COMPLETE не должно происходить в производстве. Я бы посоветовал проверить ваш стек в среде разработки или сделать одно успешное создание стека в вашей производственной среде, прежде чем постоянно развертывать свой стек.

Тем не менее, в вашем CI может быть собственный скрипт, который проверяет состояние стека ( DescribeStacks ) и, если он ROLLBACK_COMPLETE, удаляет его ( DeleteStack ). Этот скрипт будет запускаться до sam deploy.

...