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": [
"*"
]
}
]
}