首页 > 解决方案 > AWS IoT - SQL 问题 - 从“*”创建 JSON

问题描述

我试图找出是否可以基于非 JSON 输入字符串和一些 IoT 函数的组合创建 JSON(转发到 Kinesis 流)

更具体地说,像

SELECT topic() as topic, clientid() as device, * as msg FROM 'sometopic'

消息可以是任何东西(在我的情况下是 CSV 有效负载/字符串)

虽然这样的规则在输入和更新时不会触发任何错误,但它似乎不会将任何内容转发到 Kinesis 流。我在查看的任何 cloudwatch 日志中也找不到任何痕迹。

稍微适应的规则

SELECT topic() as topic, clientid() as device,* FROM 'sometopic'

当设备发送 JSON 字符串时工作正常(例如 {"msg":"message payload"})

理想情况下,如果客户端可以只发布“消息有效负载”会更理想

(使用基本摄取)

热烈欢迎所有提示!

发送

彼得

标签: aws-iot

解决方案


某些规则操作不支持非 JSON 负载。要将二进制数据发送到仅支持 JSON 的规则操作,您可以在 base64 中对数据进行编码,然后在接收服务中对其进行解码。

SELECT topic() as topic, clientid() as device, encode(*, 'base64') as msg FROM 'sometopic'

请参阅使用二进制有效负载


推荐阅读