AWS EventBridge调用put-events时Detail格式异常排查求助
AWS EventBridge
put-events 报MalformedDetail错误的原因及解决办法 原因
- CLI读取JSON文件时会自动处理转义逻辑,如果你在
myevent.json里的Detail已经是转义后的JSON字符串,CLI会再次转义,导致最终发送的内容格式彻底混乱,触发MalformedDetail错误。而控制台直接用未转义内容能成功,是因为控制台会自动帮你完成转义处理,不需要手动操作。 - JSON文件本身存在隐性格式问题,比如多余的转义符、非UTF-8编码(带BOM),或者
Detail字段的字符串包裹不规范。
解决方法
直接用未转义的JSON对象作为Detail值
把myevent.json里的Detail从转义后的字符串改成原生JSON对象,示例:
错误写法:{ "Entries": [ { "Source": "my.app", "DetailType": "test.event", "Detail": "{\"key\": \"value\"}" } ] }正确写法:
{ "Entries": [ { "Source": "my.app", "DetailType": "test.event", "Detail": { "key": "value" } } ] }改完后直接执行原命令即可。
保留转义字符串时避免重复转义
如果必须用转义后的字符串,改用--cli-input-json参数调用,这个参数会严格按文件里的JSON结构解析,不会额外转义:aws events put-events --cli-input-json file://myevent.json或者用
jq先把转义字符串还原成JSON对象再传递:cat myevent.json | jq -c '.Entries[0].Detail = (.Entries[0].Detail | fromjson)' | aws events put-events --cli-input-json -检查文件编码
确保myevent.json是UTF-8无BOM格式,用文本编辑器(比如VS Code)打开后,右下角可以查看和修改编码,避免隐性字符导致解析失败。
内容的提问来源于stack exchange,提问作者Bruno Casarotti
相关产品推荐
相关产品推荐

