我们有一个 CloudFormation
(我们Git中的yaml),它从S3下载配置文件,并使用 cfn-hup
. 当配置文件有变化时,在 s3
我们不能直接创建一个新的变更集并执行它,因为变更集是空的。CloudFormation
的配置文件中看不到变化。S3
当然了 我们如何解决这个问题?
一个工作方法,我只是测试,它的工作原理有两个组成部分。
一个虚拟的模板参数,你可以改变 每次你想改变你的。Init
节。意味着每次在s3中获取新的配置文件,如。
ConfigUpdateRequired:
Type: String
Default: some-value
Description: Change me when a config changes
一个虚拟文件,或者说是env变量,在... Init
引用参数的部分,例如。
files:
/tmp/dummyfile:
content: !Sub "${ConfigUpdateRequired}"
每次你想更新配置文件时,你都要修改配置文件的 ConfigUpdateRequired
参数。这将修改 /tmp/dummyfile
. cfn-hup
然后会检测到变化并进行更新。
显然,所有这些过程都可以通过以下方式自动完成 CodePipline
或任何可以在S3的配置文件发生变化时触发堆栈更新的东西,并设置一些新的值。ConfigUpdateRequired
.