Назад | Перейти на главную страницу

AWS Cloudformation: инструмент командной строки для визуализации шаблона

Учитывая шаблон AWS, который содержит вызовы встроенных функций и параметры потенциальных ссылок, существует ли инструмент CLI, который позволяет передавать значения для параметров и генерировать соответствующий файл шаблона?

Например, из

{
  "Resource" : { "Fn::Join" : [ "", [ "xxx-" , { "Ref": "SomeParam" }, "-zzz" ] ] } 
}

Поставляя это SomeParam имеет ценность bar, вы должны получить читаемый текстовый файл с:

{
 "Resource" : "xxx-bar-yyy"
}

Я посмотрел на различные aws cloudformation подкоманды (Я надеялся на verify-template, но безрезультатно ...

(Обоснование: создание / обновление стека занимает много времени, и у меня недостаточно мозгов, чтобы получить файл облачной информации с первого раза. Или с первого раза n раз, если уж на то пошло, для постыдно слишком высокой стоимости n.)

Сама CloudFormation не имеет описанной вами функции. Amazon признал нечто похожее на --dry-run особенность для create-stack команда будет полезна, например этот поток:

https://forums.aws.amazon.com/thread.jspa?threadID=122514

Предлагаемые обходные пути:

  1. Разбивайте стеки на более мелкие части (вложение), а затем запускайте их независимо для более быстрых итераций тестирования. Это не работает для всех вариантов использования и по-прежнему зависит от низкой производительности API / движка CloudFormation.

  2. Пытаться moto - библиотека Python, которая имитирует API AWS специально для тестирования - похоже, в ней реализован основной API CloudFormation, хотя я фактически не использовал эту библиотеку для CFN специально, поэтому YMMV.

    https://github.com/spulec/moto

  3. Если вы еще не пробовали Terraform, в нем есть концепция планы исполнения, через terraform plan команда, которая делает по сути то, что вы описываете, но вместо этого для стеков Terraform.

    https://www.terraform.io/intro/vs/cloudformation.html

create-change-set вероятно, самый близкий к вам: проблема в том, что функции вроде Ref и Fn::GetAttr может быть вызван для ресурсов, которые будут существовать только после запуска стека (т.е. как он сообщает вам, с каким идентификатором экземпляра он будет создавать ваш экземпляр?)