2016-06-14 45 views
8

AWSラムダ関数内のMQTTでトピックに何かを公開するためにbashで使用するような簡単なコマンドがあります。 mosquitto_pub -h my.server.com -t "light/set" -m "on"Amazon AWSラムダ関数のMQTTトピックにどのようにパブリッシュできますか?

背景:Alexaでランプをオン/オフしたいと思います。 AlexaはLambda関数を起動することができます。このLambda関数の中で、ランプはMQTTトピックを聞き取り、そこでメッセージに反応することができるので、MQTTを公開したいと思います(簡単な解決法があるかもしれませんが、あなたは、Pythonを使用している場合、私は私のハンドラ関数内で以下のものを使用して、AWSのIoTにメッセージをパブリッシュするAWSラムダ関数を得ることができた複雑な他の多くのアプローチがより困難に(大学)ネットワーク)

答えて

8

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"}) 
    ) 

また、役割(ラムダ機能構成で)にIoT発行機能へのアクセスを許可するポリシーが設定されていることを確認する必要があります。 IAMの下 - >役割は、あなたがあなたのようなラムダ関数の役割にインラインポリシーを追加することができます。IOTとIotData:

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

あなたのお手伝いをしていただきありがとうございます。 最後に私たちはPonteを使い、httpリクエストでAWSラムダから抜け出し、ponteに送られてmqttに転送され、それがランプに送られました。 –

1

AWS SDKは、上記IoTで動作するように2つのクラスを持っています。 IotData.publishはあなたが探している方法です。 Iotオブジェクトは物事を扱うためのもので、IotDataはMQTTと影を扱うためのものです。これは、MQTTとシャドウのドキュメントで直接参照されるべきですが、そうではありません。

このサービス(IotData)はin the CLIでも利用できます。

+1

この回答に感謝します。それは、bashからのイベントを公開して、正しい軌道に乗っています。「aws iot-data publishing --cli-input-json」{「トピック」:「myTopic」、「qos」:0、「payload」:「{ "myKey \":54321、\ "myOtherKey \":12345 "} ''。ペイロードのキーは二重引用符で囲み、バックスラッシュでエスケープする必要があります。 –

0

Node.jsを使用する場合は、mqttライブラリをインストールする必要があります。次の手順は、AWS Lambdaにmqttライブラリをダウンロードしてインストールするのに役立ちます。

  1. Download and install Node.js and npmお使いのPCには、

  2. Download MQTT library for node.js

  3. Node.jsがインストールされているnodejsディレクトリで解凍します。 (Windows 10 x64ではnodejsディレクトリはC:\Program Files\nodejs

  4. mqttインストールファイルを格納するフォルダを作成します。たとえば、D:\lambda_functionです。

  5. コマンドプロンプトを管理者として実行し、ディレクトリをnodejsディレクトリに変更します。

  6. D:\lambda_functionにmqttライブラリをインストールします。

    C:\Program Files\nodejs>npm install --prefix "D:\lambda_function” mqtt 
    

Here's a similar project

関連する問題