LoginSignup
4
0

More than 5 years have passed since last update.

AWS IoT から Lambdaアクション へCSVデータを渡す

Posted at

はじめに

IoTデバイスがCSVフォーマットでしかデータ送信できない環境において、AWS IoT から Lambda へサクッとそのままデータを渡したい。
というニーズがあっての調査メモです。

AWS IoTに関する情報は様々あれど、デバイスからの入力はJSONを前提としたものが比較的多く、CSVを入力とする方法に辿り着くのに少々時間を要してしまいました。。。
このメモが同じような状況にある方の調査時間を少しでも短縮できれば幸いです。

対応方法

AWS IoT のルールで受信データをbase64エンコードし(そのようなSQLし)、Lambdaに渡す。

AWS IoT

以下のように「*」に対してencode関数を適用する。
image.png

Lambda

base64されたデータがSQLで指定した別名をキーとしてeventオブジェクトに格納される。

import logging
logger = logging.getLogger()
logger.setLevel(logging.INFO)
def lambda_handler(event, context):
    logger.info('event: %s', event)
    return ''

といったLambdaをIoTルールのアクションに指定すると、

[INFO]  2018-04-23T07:30:41.199Z    xxx event: {'data': 'YWEsYmIsY2MsZGQ='}

のような結果が得られます。  
※この結果は入力値を "a,b,c" とした場合の例。

補足

入力が「CSV」であることにとらわれず、「生データをそのまま入力する」という観点で調べていれば、以下の情報をサクッと見つけられていたはずなのですが。色々足りていないですね。
-バイナリペイロードの使用

参考資料

-バイナリペイロードの使用
-SQL関数

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0