aws iot rule engine sql

0

AWS IoT Rule Engine 에서 sql 문 통해서 MQTT Payload 의 값을 핸들링 할 수 있는데요. MQTT Client 에서 Payload 에 byte array 값을 넣어서 메세지를 발행한다고 했을 때 SQL 문을 통해서 byte array 값을 디코딩하여 select 할 수 있나요? 예를들면,
Publish

  • topic : test/payload
  • payload : [72,101,108,108,111,119,111,114,108,100] (( Hello World )) SQL SELECT * FROM 'test/payload' 에서 위 payload 를 컨버터하여 Hello World 를 SELECT 가 가능한지 궁금합니다.
已提问 1 年前257 查看次数
1 回答
0

안녕하세요, AWS re:Post에 문의주셔서 감사합니다.

문의주신 내용은 AWS IoT Rule Engine에서 SQL문을 통해 숫자배열을 ASCII 코드 값으로 변경하는 방법이 궁금하신 것으로 이해하였습니다.

제가 조사한 바에 의하면 AWS IoT SQL은 chr(String) 함수[1]를 제공하여 숫자를 ASCII 코드로 변경하는 기능을 제공합니다. 하지만 안타깝게도 숫자 '배열'의 경우에는 ASCII 코드 값으로 변경하는 것을 지원하지 않습니다. 문서[1]을 보면 Argument Type으로 Array 는 Undefined 입니다.

그러므로 위의 예시에서 가능한 방법이라면 IoT Core의 Destination을 Lambda로 설정하여 Lambda 함수 내에서 변환 코드를 작성하는 방법을 제안드립니다.

예를들어, 발행하는 토픽이 'test/payload'이고 payload 값은 { “HelloWorld”: [72,101,108,108,111,119,111,114,108,100] } 일때,

다음과 같은 SQL statement를 적용하면,

SELECT VALUE HelloWorld FROM ‘test/payload’

아래와 같은 payload가 발송됩니다.

[72,101,108,108,111,119,111,114,108,100]

Lambda 함수에서, 전달받은 payload를 반복문을 통해 ASCII코드 값으로 변경하여 사용할 수 있습니다.

만약 배열이 아닌 값을 변경한다면 아래와 같은 방법을 사용할 수 있습니다.

발행하는 토픽이 'test/payload'이고 payload 값은 { “HelloWorld”: 72 } 일때,

SQL statement을 아래와 같이 적용하면,

SELECT chr(HelloWorld) AS HelloWorld FROM 'test/payload'

아래와 같은 payload가 발송됩니다.

{'HelloWorld': 'H'}

위의 가이드는 문서 [2]를 참고하여 작성하였습니다.

위의 내용이 문제 해결에 도움이 되었기를 바라며, 추가 궁금하신 점이나 질문이 있다면 문의주시기 바랍니다.

감사합니다.

  • References ==========

[1] AWS IoT SQL Functions chr(String) https://docs.aws.amazon.com/iot/latest/developerguide/iot-sql-functions.html#iot-func-chr

[2] SELECT clause: https://docs.aws.amazon.com/iot/latest/developerguide/iot-sql-select.html

已回答 1 年前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则