aws-iot - 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"})
理想情况下,如果客户端可以只发布“消息有效负载”会更理想
(使用基本摄取)
热烈欢迎所有提示!
发送
彼得
解决方案
某些规则操作不支持非 JSON 负载。要将二进制数据发送到仅支持 JSON 的规则操作,您可以在 base64 中对数据进行编码,然后在接收服务中对其进行解码。
SELECT topic() as topic, clientid() as device, encode(*, 'base64') as msg FROM 'sometopic'
请参阅使用二进制有效负载。
推荐阅读
- python - 使用 Pyrebase 访问 Firebase 实时数据库
- python - 当使用熊猫有两个标题行时如何处理数据?
- python - 我的 Python 代码的一部分不起作用,但所有其他部分都正常
- c - 如何编写一个程序来查找长度为 n 的二进制字符串的数量,其中恰好包含三个 1,所有连续的
- ios - RxSwift:如何使用 ViewModel 在表格视图内的集合视图单元格中填充数据?
- python - 如何找到具有给定数字和的所有 n 位数字?
- verification - Dafny:更强的断言通过,而更弱的断言不通过
- vue.js - Refer `this` in App.vue cause undefined error
- python - MySql: ERROR 1045 (28000): Access denied for user using passwrod YES using cloud_sql_proxy
- angular - 为什么在使用 Angular CRUD 操作时需要在 get/post 方法中提及返回类型?