AWS IoT - SQL Вопрос - Создать JSON из '*' - PullRequest
0 голосов
/ 29 мая 2020

Я пытаюсь выяснить, возможно ли создать JSON (для пересылки в поток Kinesis) на основе комбинации входной строки, отличной от JSON, и некоторых функций IoT

Точнее , что-то вроде

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

Где сообщение может быть чем угодно (в моем случае это полезная нагрузка / строка CSV)

Хотя правило как таковое не вызывает никаких ошибок при вводе и обновлении, оно не пересылает ничего в поток Kinesis. Я также не могу найти никаких следов в каком-либо журнале облачных часов, который я просмотрел.

Слегка адаптированное правило

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

отлично работает, когда устройство отправляет строку JSON (например, {"msg": "полезная нагрузка сообщения"})

В идеале было бы более оптимальным, если бы клиент мог просто опубликовать sh «полезную нагрузку сообщения»

(Используя basi c ingest)

Все чаевые тепло приветствуются!

Tx

Peter

1 Ответ

1 голос
/ 29 мая 2020

Некоторые действия правил не поддерживают полезные нагрузки, отличные от JSON. Чтобы отправить двоичные данные в действие правила, которое поддерживает только JSON, вы можете закодировать данные в base64 и затем декодировать их в принимающей службе.

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

См. Работа с двоичными полезными нагрузками .

...