如何从AWS EventBridge传递匹配事件与常量至Lambda?
解决EventBridge传递完整原始事件+常量到Lambda的问题
问题背景
需要通过EventBridge调用Lambda时,同时传递完整的原始匹配事件和固定常量,且不想手动映射事件字段(因事件Schema可能动态变化)。此前配置导致原始事件被转为字符串"[Object object]",无法保留对象结构。
错误原因
之前的Input Template中,<originalEvent>被双引号包裹,EventBridge会强制将变量值转为字符串,对象类型变量调用toString()后就得到"[Object object]"。
正确配置方案
方案1:Input Path捕获事件+Template嵌入对象
- Input Path:
{ "originalEvent": "$" }
- Input Template:
{ "myConstant": "hey now brown cow", "originalEvent": <originalEvent> }
关键:
<originalEvent>不要加双引号,EventBridge会直接插入变量对应的JSON对象,而非字符串。
方案2:直接在Template引用整个事件(更简洁)
无需配置Input Path,直接在Input Template中用<$>引用完整原始事件:
{ "myConstant": "hey now brown cow", "originalEvent": <$> }
效果验证
针对给定的两个事件,转换后会得到预期结构:
// 转换后的事件1 { "myConstant": "hey now brown cow", "originalEvent": { "id": "123", "detail": { "state": "RUNNING", "someProp": "someVal" } } } // 转换后的事件2 { "myConstant": "hey now brown cow", "originalEvent": { "id": "456", "detail": { "state": "FAILED", "someOtherProp": "someOtherValue" } } }
该方案无需关心事件Schema的变化,会自动保留完整的原始事件结构。
内容的提问来源于stack exchange,提问作者Chris Dargis
相关产品推荐
相关产品推荐

