Amazon web services 即使更改集为空,也要执行CloudFormation

Amazon web services 即使更改集为空,也要执行CloudFormation,amazon-web-services,amazon-cloudformation,Amazon Web Services,Amazon Cloudformation,我们有一个CloudFormation(Git中的yaml),它使用cfn hup从S3下载配置文件。当s3上的配置文件发生更改时,我们不能仅仅创建一个新的变更集并执行它,因为变更集是空的CloudFormation当然没有看到S3上配置文件的变化。我们如何解决这个问题?我刚刚测试过的一个解决方案有两个组成部分: 一个虚拟模板参数,您可以在每次更改Init节时更改该参数。这意味着每次在s3中获得新的配置文件时,例如: ConfigUpdateRequired: Type: String

我们有一个
CloudFormation
(Git中的yaml),它使用
cfn hup
从S3下载配置文件。当
s3
上的配置文件发生更改时,我们不能仅仅创建一个新的变更集并执行它,因为变更集是空的
CloudFormation
当然没有看到
S3
上配置文件的变化。我们如何解决这个问题?

我刚刚测试过的一个解决方案有两个组成部分:

一个虚拟模板参数,您可以在每次更改
Init
节时更改该参数。这意味着每次在s3中获得新的配置文件时,例如:

ConfigUpdateRequired:
    Type: String
    Default: some-value
    Description: Change me when a config changes
Init
部分中引用参数的伪文件或env变量,例如:

files: 
    /tmp/dummyfile: 
      content: !Sub "${ConfigUpdateRequired}"
每次要更新配置文件时,都要修改
ConfigUpdateRequired
参数。这将修改
/tmp/dummy文件
<代码>cfn hup随后将检测更改并更新


显然,通过
CodePipline
,或者当S3中的配置文件更改并设置所需的
configupdater的一些新值时触发堆栈更新的任何事情,所有这些过程都可以自动化。我刚刚测试过的一个解决方案有两个组件:

一个虚拟模板参数,您可以在每次更改
Init
节时更改该参数。这意味着每次在s3中获得新的配置文件时,例如:

ConfigUpdateRequired:
    Type: String
    Default: some-value
    Description: Change me when a config changes
Init
部分中引用参数的伪文件或env变量,例如:

files: 
    /tmp/dummyfile: 
      content: !Sub "${ConfigUpdateRequired}"
每次要更新配置文件时,都要修改
ConfigUpdateRequired
参数。这将修改
/tmp/dummy文件
<代码>cfn hup
随后将检测更改并更新


显然,所有这些过程都可以通过
CodePipline
实现自动化,或者,当S3中的配置文件发生更改时,任何可能触发堆栈更新并设置
ConfigUpdateRequired

的新值的东西,您可以始终在
Init
部分创建一些条目,在设置更改时更新这些条目。名称包含当前时间戳的文件。触发cfn hup的东西。@Marcin thx获取提示。我将对它进行测试,但我不确定它是否会创建一个新的变更集(因为模板中的任何代码都不会更改)。不确定。可以检查。您可以在
Init
部分创建一些条目,在设置更改时更新这些条目。名称包含当前时间戳的文件。触发cfn hup的东西。@Marcin thx获取提示。我将对它进行测试,但我不确定它是否会创建一个新的变更集(因为模板中的任何代码都不会更改)。不确定。我可以查一下。