7 Awesome CloudFormation Hacks
19 Best Practices for Creating Amazon Cloud Formation Templates
Если нам нужно выкатывать набор инстансов, то там можно указать DependsOn и сборка будет ждать готовности инстанса. Но в случае с ASG всё не так просто.
Во-первых, DependsOn на ASG - продолжит развёртывание по готовности самого ASG, но не его машин.
Во-вторых, повесить DependsOn на отдельный инстанс группы или их набор - невозможно напрямую.
В третьих, есть механизмы CreationPolicy и UpdatePolicy (которые так же нужно вешать на инстанс, чтобы стек ждал готовности ноды) и через /opt/aws/bin/cfn-signal на ASG выставлять что нода готова.
Можно сделать внешний счётчик через WaitCondition + WaitConditionHandle.
У него есть нюанс. Если в случае *Policy используется формат --resource (ASGName), то в случае WaitCondition - такой формат не работает! Мы должны применять форму cfn-signal -e 0 !Ref OurWaitCondition, ну или использовать curl. У меня ушло много времени, чтобы найти этот "особый" формат. И да, если мы используем runcmd с блоком Sub - то вместо !Ref надо использовать формат ${OurWaitCondition}.
Второй нюанс: Anytime you add a WaitCondition resource during a stack update or update a resource with a wait condition, you must associate the wait condition with a new WaitConditionHandle resource. Do not reuse an old wait condition handle that has already been defined in the template. If you reuse a wait condition handle, the wait condition might evaluate old signals from a previous create or update stack command.
И напоследок: Updates are not supported for this resource.
И ещё линки
https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-waitcondition.html
Как я понимаю, в отличие от штатного убогого, тут сразу получаем автогенерацию шаблона. В общем, можно поиграться и посмотреть. Но советую использовать такие приложения или для быстрого прототипирования, или для самообразования. Тот случай, когда разобраться в итоговом шаблоне - обязательно.
Одно но: оно платное, хотя есть Developer версия, 1 seat, 1 linked AWS account, 6 active stacks
https://harrisonmilbradt.com/blog/fixing-update_rollback_failed-in-serverless/
Actions > Continue Update Rollback и там есть пропуск сломанных шагов. Также есть консольная версия
aws cloudformation continue-update-rollback --stack-name my-stack --resources-to-skip failed-resource1 failed-resource2