【AWS IoTルールの基本 その6】メッセージをトリガーにAWS Lambdaを起動する

Pocket

こんにちは、Michaelです。
今回は、「AWS IoTルールの基本」の第6回として、入力したメッセージをトリガーにしてAWS Lambdaを起動するアクションを紹介します。

今回の構成

今回はIoTデバイスからのメッセージを受けて、気象APIからの先3時間内の予想気象情報を返す仕組みを想定します。
AWS IoTのトピック「test/pub」にPublishされたメッセージでLambdaを起動します。
起動したLambdaが、DynamoDBから機器の地点情報を取り出し、気象Web API「OpenWeatherMap」からその地点の先3時間内の予想気象情報を取得してデバイスに返します。

Lambda関数の作成

Lambdaと連携するにあたり、あらかじめ以下のようなLambda関数を作成しておきます。

ルールアクションの設定

アクションとして「メッセージデータを渡す Lambda 関数を呼び出す」を選択します。

設定内容は起動するLambda関数のみとなります。
設定をすると、自動的にLambda関数に対してAWS IoTからのアクセス許可が追加されます。

メッセージソースの設定

メッセージソースには以下のAWS IoT SQLクエリを設定します。
組み込み関数「clientid()」、「timestamp()」でClientId「client_id」と受信時刻「timestamp」を付加します。

実行結果

MQTT.fxを送信デバイスとしてテストを実行してみます。
ClientIdに「device001」を設定し、返送用トピックの「test/sub」をSubscribeした状態にしておきます。

Publish先トピックに「test/pub」を設定し、以下のようなセンサーデータをPublishします。

メッセージをPublishすると、Subscribeしている「test/sub」に予想気象情報が返ってきていることがわかりました。

まとめ

AWS IoTとAWS Lambdaの組み合わせは、AWSを使ったIoTインフラの一部としてよく使われます。AWS Lambdaであれば、AWS IoTではできないより高度な処理も可能なため、Web APIだけでなくAmazon Machine Learningなど他のAWSサービスとの連携も容易になります。

今回は以上となります。
次回もお楽しみに!