云形成 Nested Stacks 使用 TemplateURL 版本控制模板的最佳方式

Lui*_*uel 2 version-control aws-cloudformation

我们正在创建一个要部署在多个环境(dev、qa、stg、prd)中的微服务项目,我们计划利用云形成模板,使用嵌套堆栈来实现多个服务之间的共享资源。问题是,当使用嵌套堆栈时,您需要指定嵌套资源的 TemplateURL,这是一个指向 S3 存储桶的静态 URL,每次更新模板时该 URL 都会发生变化(上传包含一些更改的新模板)。

所以问题是,使用 GIT 等版本控制工具来跟踪嵌套模板中所做的更改(一旦上传到 S3 就会给您一个新的 URL)的最佳方法是什么?

wjo*_*dan 5

cloudformation packageAWS 命令​​行界面中的命令会将本地工件(包括资源的属性)上传到TemplateURLS3AWS::CloudFormation::Stack存储桶,并输出引用上传工件的转换后的 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
Run Code Online (Sandbox Code Playgroud)