Облакообразовательная продукция Cloudformation Init
У меня есть стек CloudFormation, как показано ниже,
"Metadata" : {
"AWS::CloudFormation::Init" : {
"config" : {
"/home/ec2-user/create_db_user.sh" : {
"source" :
"http://s3.amazonaws.com/devops/create_db_user.sh",
"mode" : "000755",
"owner" : "ec2-user"
}
}
...
Мне нужно запустить эту команду, когда экземпляр EC2 запущен, после того, как мне нужно установить этот вывод сценария инициализации в стек облачной информации.
Как я могу к этому.
1 ответ
Немного поздно на вечеринку, но в дополнение к предыдущему ответу...
Выход AWS::CloudFormation::Init
при EC2 создание инстанса через Cloudformation недоступно.
Однако на запущенных инстансах EC2 вы найдете журналы для обоих AWS::CloudFormation::Init
(он же. cfn-init
) и из пользовательских данных (cloud-init
).
В Amazon Linux это структурировано следующим образом:
- /var/log/cfn-init-cmd.log: cfn-init и вывод команды с отметками времени
- /var/log/cfn-init.log: cfn-init и вывод команды
- /var/log/cloud-init.log: журналы облачной инициализации, относящиеся к запуску команд в пользовательских данных
- /var/log/cloud-init-output.log: вывод самих команд пользовательских данных
Самый простой способ получить доступ к этим журналам - передать журналы в Cloudwatch Logs, что позволит вам искать и фильтровать журналы по времени и содержанию. Также рассмотрите возможность использования Cloudwatch Insights для поиска и фильтрации - у него более полный и понятный синтаксис для поиска, фильтрации и даже простой визуализации (диаграмма).
Поскольку вы уже используете cfn-init, вы можете найти здесь информацию о том, как установить новый агент Cloudwatch (не агент Cloudwatch Logs!). Преимущество использования Cloudwatch Agent заключается в том, что он также может передавать пользовательские метрики в Cloudwatch Metrics (например, использование памяти, метрики приложений, метрики базы данных и т. Д.).
Для уже работающих инстансов EC2 рассмотрите возможность взглянуть на cfn-hup
здесь.
Альтернативой может быть использование SSM (System Manager) для проталкивания агента на уже запущенные экземпляры в соответствии с инструкциями здесь.
В комментариях к вашему вопросу есть несколько важных моментов, которые подтолкнут вас к правильному решению. В общем то, что вы пытаетесь сделать, невозможно - нет выводов AWS::CloudFormation::Init
ресурс. Они не оцениваются во время создания стека, просто сохраняются и обрабатываются экземпляром EC2 во время его запуска, но это не время, когда работает стек CloudFormation (может быть, но не всегда - например, взять группу автоматического масштабирования).
Согласно этому документу - значение вывода может включать литералы, ссылки на параметры, псевдопараметры, значение отображения или встроенные функции.
При условии, AWS::CloudFormation::Init
является специфическим типом метаданных CloudFromation, но не литералом, параметром, псевдо-параметром, значением сопоставления или внутренней функцией.
Итак, то, что вы пытаетесь достичь, выглядит как ограничение CloudFormation Outputs:(
user2684005 ответе user2684005 перечислены многие подходящие обходные пути для этого.