Я пытаюсь использовать AWS автомасштабирование жизненный цикл крючки в шаблоне , который инкапсулирует следующие вещи:
AWS::AutoScaling::AutoScalingGroup
с соответствующими политиками увеличения / уменьшения, конфигурацией запуска, ролью IAM и т. д.- 2 из
AWS::AutoScaling::LifecycleHook
для EC2 запуска / завершения событий. AWS::SQS::Queue
(в упрощенном примере), где публикуются уведомления о жизненном цикле.AWS::IAM::Role
роль группы автоматического масштабирования для отправки уведомлений в очередь SQS.
Когда запускается ASG, очередь заканчивается двумя тестовыми уведомлениями о создании ловушек жизненного цикла, но без уведомлений о запуске экземпляра.
И вот условие гонки.
AWS::AutoScaling::LifecycleHook
ссылки на объекты AWS::AutoScaling::AutoScalingGroup
(и, следовательно, зависит от него). Это диктует порядок, в котором CloudFormation создает ресурсы (группа создается первой).
Проблема в том, что группа начинает запускать экземпляры до завершения создания ловушки (запуск экземпляра не является частью шаблона, поэтому он начинает выполняться параллельно). К тому времени, когда ловушка создана, больше нет событий для публикации, так как экземпляры уже были созданы.
Есть ли способ обойти это и поймать события запуска во время запуска стека?