每当我更新CFN堆栈时运行自定义资源

时间:2018-11-14 12:49:34

标签: aws-lambda amazon-cloudformation

我有一个自定义资源,用于从API网关获取API密钥并将其作为标头发送到Cloudfront。创建堆栈时,我的custom:resource正在触发,因为它是第一次创建逻辑ID。但是,当我更新堆栈(即更改API密钥名称)时,类型为AWS::ApiGateway::ApiKey的API密钥资源将创建一个新的逻辑ID,而依次创建一个新的API密钥,此时我的custom:resource我没有调用,因为它具有相同的逻辑ID,因此我的Cloudfront使用的是旧的API密钥,而不是新的。

有什么方法可以在每次堆栈更新时调用我的custom:resource吗? 作为一种解决方法,每当我更新堆栈中的资源时,我都将Logical Id的{​​{1}}更改为触发它。但这并不困难,因为可以共享logicalId作为对许多资源的引用。

顺便说一句,我的自定义资源已附加到lambda函数。我什至尝试更改custom:resource字段,还尝试将值添加到属性字段(例如,堆栈名,参数等),但仍然没有调用。

Version

谢谢 感谢您的帮助

1 个答案:

答案 0 :(得分:0)

获取自定义资源以在更新堆栈时执行lambda的一个技巧是配置自定义资源,以将所有堆栈参数传递给lambda函数。如果在堆栈更新时有任何参数更改,则自定义资源将更改并触发lambda。只需忽略lambda事件数据中不需要的键即可。仅更新模板时,这对方案没有任何作用。