🗂

IoTCoreのテストクライアントを使用してトピックからLambdaを実行してみる

2023/06/29に公開

IoTCoreのルールを作成する

ルールアクションから実行されるLambdaを作成する

responseトピックにメッセージをPublishする関数を作成

import json
import boto3

iot = boto3.client('iot-data')



def lambda_handler(event, context):
    
    try:
        print(str(event))
	print(event["testData"])
        res_topic = event["topic"] + "/response"

        payload = {
            "message": "Publishテスト成功"
        }
        
        iot.publish(
            topic=res_topic,
            qos=0,
            payload=json.dumps(payload, ensure_ascii=False)
        )
 
        return {
            "code": 200,
            "message": "OK"
        }
        
    except Exception as e:
        print(e)
        return {
            "code": 500,
            "message": "error"
        }

Subscribeする

LambdaからPublishするレスポンストピックをSubscribeしておく。

テストクライアントから作成したトピックへメッセージをPublishする

レスポンストピックをSubscribeしてメッセージが受信できることを確認する

メモ:ルールアクションで起動されたLambdaのreturnについて

returnでコードとかを返す記載をしているが、ルールアクションから起動されたらそのまま投げっぱなしで結果を受け取る場所がないので意味がないらしい。
今回のように別トピックにPublishを行うか、キューとかを使うとかLambda処理中に行わないと処理結果が必要な場合は受け取れなくなってしまう。

Discussion