こんにちは、Michaelです。
今回は、AWS LambdaからAWS IoTにメッセージをPublishしてみます。
今回の構成
Lambdaが起動されると、AWS IoTのトピック「test/pub」に対してメッセージをPublishします。IoTデバイス側で「test/pub」をSubscribeすることで、Lambdaからのメッセージを受け取ることができます。
IAMロールの設定
LambdaからAWS IoTにPublishするため、以下のポリシーを作成し、Lambdaに適用するIAMロールにアタッチします。
コード
コードは以下のようになります。
コードの説明
コードの内容は以下の通りです。
t
項番 | 項目 | 内容 |
① | ライブラリのimpor | 処理に必要なライブラリを指定してインポートします。 |
② | Functionのロードをログに出力 | Lambdaのコードがロードされたことが分かるようにログにメッセージを出力します。 |
③ | AWS IoT Data Planeオブジェクトを取得 | AWS IoTに対してメッセージを送信できるようにインスタンスを生成します。 |
④ | Lambdaのメイン関数 | トリガーにより実行される関数。 |
⑤ | トピックを指定 | Publish先のトピックを設定します |
⑥ | メッセージの内容 | AWS IoTにPublishされるメッセージ内容です。 |
⑦ | メッセージをPublish | AWS IoTにメッセージをPublishします。 |
実行結果
Lambdaのコードエディタの上部にある[テスト]をクリックすると、テスト実行されます。
AWS IoTのテストコンソールでトピック「test/pub」をSubscribeした状態でLambdaをテスト実行すると、「⑥メッセージの内容」に設定したメッセージが出力されました。
また、IoTデバイスとしてMQTT.fxクライアントで「test/pub」をSubscribeし、テスト実行をすると、MQTT.fxクライアント側でも同じメッセージを受け取ることができました。
まとめ
Lambdaはトリガー設定次第で様々な挙動ができるため、IoTデバイスに対して意図したタイミングでメッセージを飛ばすといった運用ができます。
例えば、CloudWatch Eventsで1時間に1回デバイスにメッセージを飛ばしたり、AWS IoTをトリガーとしてIoTデバイスからのメッセージに応答させたりといった応用が可能です。
今回は以上となります。次回もお楽しみに!