Преимущества, которые я могу себе представить:
- простой декларативный DSL.
- такие функции, как ведение журнала, предоставляемые cfn-init.
- cfn-hupможет использоваться для обнаружения изменений в метаданных ресурса при запуске update-stack.
Если вам нравится простой декларативный DSL для вашей конфигурации, аналогичный Puppet & Chef, тогда используйте AWS :: CloudFormation:: Init.
И если вы находите это громоздким, возможно, что UserData лучше подходит.Слишком много configSets может указывать на то, что вы используете неправильный инструмент (или заказываете вещи, которые на самом деле не нужно заказывать!).
Кроме того, помните, что AWS :: CloudFormation :: Initстарый, и он предшествует поддержке CloudFormation шаблонов YAML.
До поддержки YAML размещение сценариев в UserData было затруднительным, поскольку каждую строку сценария оболочки необходимо было кодировать в массив JSON.Это затрудняло чтение и позволяло легко ошибаться.
Использование AWS :: CloudFormation :: Init, на мой взгляд, более целесообразно, учитывая только эти два варианта.
ЭтиВ наши дни я предпочитаю хранить сценарии оболочки вне CloudFormation, тестировать их внешне, а затем передавать в виде строки в кодировке base64 в качестве параметра.(Однако остерегайтесь ограничения в 4096 символов для параметров!).
Конечно, это также зависит от сложности вашей конфигурации.Вы не захотите делать слишком много в сценарии оболочки в UserData, поскольку он быстро станет недоступен.