Шаблоны CloudFormation: непрерывное тестирование инфраструктуры как кода

В проекте мы используем некоторые сервисы AWS, такие как AWS Lambda, EC2, AWS API Gateway, ElastiCache и т. Д. Также у нас есть шаблон CloudFormation, который описывает всю нашу инфраструктуру. По мере разработки проекта мы начинаем использовать некоторые новые сервисы AWS или меняем конфигурацию некоторых из уже используемых. Кроме того, мы должны поддерживать наш шаблон CloudFormation в актуальном состоянии.

И здесь мы сталкиваемся с проблемой, что нам нужно быть уверенными, что наш шаблон CloudFormation действителен, верен и что мы можем использовать его для создания инфраструктуры, если это будет необходимо. В таком случае нам нужно что-то вроде непрерывного тестирования нашего шаблона. Какие подходы для этого подходят больше?

Следует ли нам настроить автоматическое создание стека из нашего шаблона CloudFormation как часть процесса непрерывной интеграции и отслеживать изменения шаблона в нашем репозитории? Или есть решения получше?


comment
Проверьте это stackoverflow.com/questions/40299413/   -  person Arafat Nalkhande    schedule 06.10.2018


Ответы (2)


Мы использовали cfn-python-lint в качестве предшественника сборки. Если это не удается, мы не строим. Правила, представленные в cfn-python-lint, намного шире, чем aws cloudformation validate-template, и, кроме того, он дает вам некоторые правила передовой практики, а также дает вам основу для написания ваших собственных правил (которые мы используем для управления).

Кроме того, мы не строим функциональные ветки, мы создаем только master. Мы даем разработчикам среду для игры, в которой они могут запускать конвейеры, которые мы обычно запускаем на главном сервере и в dev / staging / prod. Это совершенно отдельный аккаунт, в котором они почти полностью правят. Это, очевидно, не является защитой от дурака, поскольку наша область песочницы может не отражать то, что находится в dev / staging / prod, поскольку люди играют с ней, но это нам очень помогло.

person Hosh Sadiq    schedule 05.10.2018

Вы можете выполнить простую проверку шаблонов CloudFormation с помощью aws cloudformation validate-template Команда CLI. Это примерно эквивалент статического анализа кода для других языков: он проверяет такие вещи, как опечатки в имени параметра и синтаксически допустимый шаблон JSON / YAML; но весьма ограничен с точки зрения того, какую проверку он может выполнять.

Как говорится в этой статье, единственный надежный способ проверить, что шаблон CloudFormation будет создавать ресурсы так, как вы хотите / ожидаете, - это попробовать его, и это действительно означает создание стеков как часть вашего CI и процесса тестирования. Поскольку это может быть медленным в случае одних ресурсов и дорогостоящим в случае других, вы можете захотеть ограничить коммиты, на которых выполняется полное тестирование создания стека.

person Stephen    schedule 05.10.2018