【问题标题】:Cloud formation Nested Stacks best way to version control templates using TemplateURL云形成嵌套堆栈使用 TemplateURL 版本控制模板的最佳方式
【发布时间】:2018-07-19 20:31:52
【问题描述】:
我们正在创建一个微服务项目,以部署在多个环境(dev、qa、stg、prd)中,我们计划利用云形成模板,使用嵌套堆栈来实现多个服务之间的共享资源。
问题是,当使用嵌套堆栈时,您需要指定嵌套资源的 TemplateURL,这是一个指向 S3 Bucket 的静态 URL,每次更新模板时都会更改(上传带有一些更改的新模板)。
所以问题是,使用 GIT 之类的版本控制工具来跟踪嵌套模板中所做的更改的最佳方法是什么,一旦将其上传到 S3 就会给你一个新的 URL?
【问题讨论】:
标签:
version-control
amazon-cloudformation
【解决方案1】:
AWS 命令行界面中的 cloudformation package 命令会将本地工件(包括 AWS::CloudFormation::Stack 资源的 TemplateURL 属性)上传到 S3 存储桶,并输出参考上传的工件的转换后的 CloudFormation 模板。
使用此命令,跟踪更改的最佳方法是将基本模板和嵌套堆栈模板提交到 Git,然后使用 cloudformation package 作为部署脚本中的中间处理步骤,例如,使用 cloudformation deploy :
S3_BUCKET=my_s3_bucket
TEMPLATE=base_template.yml
OUTPUT_TEMPLATE=$(mktemp)
aws cloudformation package \
--template-file $TEMPLATE \
--s3-bucket $S3_BUCKET \
--output-template-file $OUTPUT_TEMPLATE
aws cloudformation deploy \
--template-file $OUTPUT_TEMPLATE \
--stack-name $STACK