CloudFormation - это мощное предложение AWS, которое позволяет программно создавать стеки ресурсов AWS, такие как веб-уровень приложения, кластер высокопроизводительных вычислений, или весь стек приложений, с помощью одного вызова API. Это очень мощный инструмент. Его использование, безусловно, считается хорошей практикой AWS, особенно в сочетании с Chef, Puppet, или cloud-init. Отладка его доводит меня до безумия.
Возьмем пример с производством: Стоковые mongodb cluster templates не будут работать для меня. Я не знаю, почему. Я уверен, что это что-то простое, как это почти всегда и бывает. Моя проблема не в том, что я не могу понять, что не так. А в том, что стеку требуется от 20 до 30 минут, чтобы выйти из строя, а затем еще три или четыре минуты на удаление, если предположить, что он вообще удаляет ресурсы правильно.
Что я упускаю? Я знаю о флаге --disable-rollback
и использую его как кислород. Я давно научился оборачивать сообщения о выходе с помощью cfn-signal
и сбрасывать их как балласт с тонущего корабля. Как я могу ускорить процесс отладки шаблонов, или я навсегда застрял, замечая свои ошибки через полчаса после их совершения?
Используйте команду aws cloudformation validate-template
в инструменте AWS CLI. Она только проверяет, является ли ваш шаблон правильным JSON или YAML, а не правильность ваших ключей и значений (например, не проверяет опечатки в ключах).
Другой вариант, через год, абстрактный этих шаблонов для 3-й партии библиотеки, такие как тропосфере. Эта библиотека создает полезные данные JSON для вас, и делает много проверки по пути. Это также решает и"Вау управляющий 1000 строк JSON-файл, уверен, это грустно и" проблема.
как я могу сделать процесс отладки шаблона быстрее, или я застрял навсегда замечая моих ошибок полчаса после того, как я их делаю?
Вот несколько лучших-практика предложения, с упором на повышение скорости итерации комплекс CloudFormation для-шаблон развития:
АРМ уже изложил в своей собственной наилучшая практика документ, так что я выиграл'т повторять их:
Смысл этого шага заключается в том, чтобы поймать явных синтаксических и логических ошибок, прежде чем фактически выполняет создание стека/обновление.
Перед использованием любого индивидуального CloudFormation для ресурсов в комплексе стек, убедитесь, что вы полностью поняли весь масштаб этого ресурса'ы создание/обновление/удаление поведения, включая ограничения на использование и обычной загрузки/демонтажа раза, путем тестирования их поведения в малых самостоятельных стеки в первую очередь.
AWS::CloudFront::Distribution
ресурсов может иногда принимать 30-60 минут создание/обновление/удаление, а AWS::EC2::SecurityGroup
обновления в секундах.При выполнении стек создание/обновление, сбой в каком-либо одном ресурсе стека откатить весь набор ресурсов изменения, которые могут привести к уничтожению других успешно созданных ресурсов и займет очень много времени при создании сложных стек с длинным зависимость-график соответствующих ресурсов.
Решение этого состоит в том, чтобы построить свой стек постепенно в небольших пакетах обновления, добавив одну (или несколько) одновременно. Таким образом, если/когда происходит сбой в создание/обновление ресурса, откат не'т привести свой весь стек'ы ресурсы должны быть уничтожены, просто набор ресурсов, изменено в последнем обновлении.
Будьте уверены, чтобы следить за ходом вашего Update стек путем просмотра стека'события s при исполнении создание/обновление. Это станет отправной точкой для отладки дальнейших проблем с отдельных ресурсов.
Обращали ли вы внимание на редактор шаблонов AWS CloudFormation, который входит в AWS Toolkit for Eclipse? В нем есть подсветка синтаксиса, завершение утверждений и развертывание в AWS CloudFormation.
С опозданием, но я также могу добавить, что стоит потратить немного времени на настройку и изучение вашего редактора. Я знаю, что это звучит смехотворно просто как ответ, но попробуйте.
В моем случае с vim я работал намного лучше, когда потратил некоторое время на установку плагинов для синтаксиса json, а также (наконец-то) понял технику складывания, чтобы легко перемещаться по большим CF-файлам. Мой vim теперь подсказывает опечатки (запятые там, где их не должно быть и т.д.), а цветовая подсветка экономит много времени, давая четкие визуальные подсказки.
Это может помочь смягчить синтаксические ошибки, но логические ошибки в шаблоне лучше исправлять другими инструментами. Надеюсь, когда-нибудь на CF появится режим "предварительного просмотра".
Для Иды компании JetBrains (IntelliJ идея WebStorm PhpStorm именно PyCharm RubyMine AppCode CLion Гогланд DataGrip райдер для Андроид студии ), есть в сервис AWS CloudFormation с плагин, который поддерживает глубокую проверку в JSON и YAML глядя шаблонов
В в AWS CloudFormation для Линтер обеспечивает дополнительный статический анализ за сервис AWS CloudFormation для проверки шаблона`
Он будет информировать вас, какие типы ресурсов и типы инстансов будут недоступны в некоторых регионах, проверки значений свойств в отношении допустимых значений, поймать зависимости круговой ресурсов, синтаксических ошибок, и многое другое
В дополнение к CLI, один из самых популярных механизмов помнить, для запуска Линтер является установка редактора плагин как расширение Visual Studio кода, которая работает на каждый файл сохранить
Другие механизмы, такие как пре-коммит хуки git, которые описаны here
Помимо командной строки AWS сервис AWS CloudFormation для проверки шаблона
команда есть узел на основе [CFN по-проверки] инструмент2, что делает более глубокой проверки.
Если вы имеете дело с машинами ЕС2, то я бы рекомендовал вам войти в машину EC2 и хвост в придачу.лог-файл (файл/var/журнал/загрузки.войдите в RHEL6/в CentOS). Этот файл обновляется с все ваши действия оболочки (виды деятельности, как: установка, загрузка файлов, копирование файлов и т. д.).
Кроме того, использовать такие редакторы как http://www.jsoneditoronline.org/ чтобы сделать древовидное представление в формате JSON. Это поможет вам проверить заказ элементов JSON.
И при обновлении файлов всегда использовать такие инструменты, как http://www.git-tower.com/blog/diff-tools-mac/ или систему контроля версий, чтобы убедиться, что вы не случайно изменить что-то, что может сломать ваш сценарий.
Недавно новая функция добавлена в CloudFormation Для в декабре прошлого года было добавление иные типы параметров. Эти новые типы позволяют ваши шаблоны чтобы выполнить сильнее проверке данных, а также может и"не-быстро" при создании ресурсов и вложенных CloudFormation для стеков. У вас также есть возможность предоставить приятнее для человеческого восприятия пользовательские сообщения об ошибках, когда недопустимые значения передаются в использование нового атрибут ConstraintDescription.
Новые типы особенно полезно при работе с различными ВКК ресурсов. Вы можете убедитесь, что параметры вашей шаблоны правильного типа, и явно о ожидает одно значение и список.
Например:
"Parameters" : {
"SingleGroup": { "Type": "AWS::EC2::SecurityGroup::Id", ...},
"GroupList": {"Type": "List<AWS::EC2::SecurityGroup::Id>", ...}
}
Вы также можете воспользоваться конструктором CloudFormation для свободных от Amazon здесь: https://console.aws.amazon.com/cloudformation/designer/home?region=us-east-1
Просто вставьте ваш шаблон (JSON) с о "шаблон" в панели, а затем нажмите на символ галочку, чтобы подтвердить свой шаблон. Любые ошибки будут отображаться в "; панель ошибке".
Надеюсь, что это помогает.
Пожалуйста, мой заказ валидатор CloudFormation Для в https://pypi.org/project/cloudformation-validator/
Это позволит проверить схему, а затем еще раз проверьте список правил, и позволяют для пользовательских правил. Я также позволяет для легкой интеграции с инструментами развертывания.