Amazon AWS Lambda 関数で MQTT トピックにパブリッシュするにはどうすればいいですか? 質問する

Amazon AWS Lambda 関数で MQTT トピックにパブリッシュするにはどうすればいいですか? 質問する

AWS Lambda 関数内の MQTT のトピックに何かを公開するために、bash で使用するような簡単なコマンドが欲しいです。たとえば、mosquitto_pub -h my.server.com -t "light/set" -m "on" などです。

背景: Alexa でランプのオン/オフを切り替えたいです。Alexa は Lambda 関数を開始できます。この Lambda 関数内で MQTT パブリッシュを開始したいです。ランプは MQTT トピックをリッスンし、そこにあるメッセージに反応できるからです。(もっと簡単な解決策があるかもしれませんが、私たちは複雑な (大学の) ネットワークにいるので、他の多くのアプローチはより困難です)

ベストアンサー1

Python を使用している場合は、ハンドラー関数内で次のコードを使用して、AWS Lambda 関数で AWS IoT にメッセージを公開することができました。

import boto3
import json

client = boto3.client('iot-data', region_name='us-east-1')

# Change topic, qos and payload
response = client.publish(
        topic='$aws/things/pi/shadow/update',
        qos=1,
        payload=json.dumps({"foo":"bar"})
    )

また、ロール(Lambda 関数設定内)に IoT パブリッシュ関数へのアクセスを許可するポリシーが添付されていることを確認する必要があります。IAM -> ロールで、次のように Lambda 関数ロールにインライン ポリシーを追加できます。

{
   "Version": "2016-6-25",
   "Statement": [
    {
        "Effect": "Allow",
        "Action": [
            "iot:Publish"
        ],
        "Resource": [
            "*"
        ]
    }
   ]
}

おすすめ記事