AWS EventBridge输入转换器:如何正确引用detail对象而非[object Object]
在AWS EventBridge输入转换器中获取完整detail对象的解决方法
问题场景
在AWS UI操作EventBridge输入转换器时,原始事件JSON数据如下:
{ "version": "0", "id": "437e4ed4-8ee1a178", "detail-type": "blah", "source": "blahblah", "account": "011604459942", "time": "2023-11-20T23:20:14Z", "detail": { "transaction_id": 6787, "customer_id": 1234, "created_at": "2023-11-21T10:19:40.929+11:00", "updated_at": "2023-11-21T10:19:52.425+11:00" } }
设置Input Path为:
{ "detail": "$.detail" }
Template为:
{ "document": <detail> }
最终得到的结果是{"document": [object Object]},无法获取detail的完整内容,且detail内字段不固定无法枚举。
解决方法
保持Input Path不变,修改Template为:
{ "document": ${detail} }
这样设置后,EventBridge会直接将detail对应的完整JSON对象嵌入到document字段中,保留原始结构与所有内容,不会出现[object Object]的字符串转换问题。
原理说明
使用<detail>的方式会将JSON对象强制转换为字符串类型,因此显示为[object Object];而使用${detail}(不加引号)的格式,会让EventBridge保留原始JSON对象的结构,直接将其嵌入到输出的JSON中,完美适配detail字段不固定的场景。
内容的提问来源于stack exchange,提问作者gitmcgee
相关产品推荐
相关产品推荐

