Учитывая шаблон 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
Предлагаемые обходные пути:
Разбивайте стеки на более мелкие части (вложение), а затем запускайте их независимо для более быстрых итераций тестирования. Это не работает для всех вариантов использования и по-прежнему зависит от низкой производительности API / движка CloudFormation.
Пытаться moto
- библиотека Python, которая имитирует API AWS специально для тестирования - похоже, в ней реализован основной API CloudFormation, хотя я фактически не использовал эту библиотеку для CFN специально, поэтому YMMV.
Если вы еще не пробовали Terraform, в нем есть концепция планы исполнения, через terraform plan
команда, которая делает по сути то, что вы описываете, но вместо этого для стеков Terraform.
create-change-set
вероятно, самый близкий к вам: проблема в том, что функции вроде Ref
и Fn::GetAttr
может быть вызван для ресурсов, которые будут существовать только после запуска стека (т.е. как он сообщает вам, с каким идентификатором экземпляра он будет создавать ваш экземпляр?)