使用TemplateURL

时间:2018-07-19 20:31:53

标签: version-control amazon-cloudformation

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

所以问题是,使用诸如GIT之类的版本控制工具来跟踪在嵌套模板中所做的更改的最佳方法是什么,一旦将其上传到S3,它将为您提供一个新的URL?

1 个答案:

答案 0 :(得分:2)

AWS命令行界面中的cloudformation package命令会将本地工件(包括TemplateURL资源的AWS::CloudFormation::Stack属性)上传到S3存储桶,并输出转换后的CloudFormation模板引用上传的工件。

使用此命令,跟踪更改的最佳方法是将基本模板和嵌套堆栈模板都提交到Git,然后在部署脚本中使用cloudformation package作为中间处理步骤,例如,使用{ {3}}:

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