我有一个自定义资源,用于从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
谢谢 感谢您的帮助
答案 0 :(得分:0)
获取自定义资源以在更新堆栈时执行lambda的一个技巧是配置自定义资源,以将所有堆栈参数传递给lambda函数。如果在堆栈更新时有任何参数更改,则自定义资源将更改并触发lambda。只需忽略lambda事件数据中不需要的键即可。仅更新模板时,这对方案没有任何作用。