webentwicklung-frage-antwort-db.com.de

Wie kann ich in einer Amazon AWS Lambda-Funktion in einem MQTT-Thema veröffentlichen?

Ich hätte gerne einen einfachen Befehl, wie ich ihn in der Bash verwende, um etwas in einem Thema über MQTT in einer AWS Lambda-Funktion zu veröffentlichen. In Anlehnung an: mosquitto_pub -h my.server.com -t "light/set" -m "on"

Hintergrund: Ich möchte mit Alexa eine Lampe ein- und ausschalten. Alexa kann eine Lambda - Funktion starten, und innerhalb dieser Lambda - Funktion möchte ich eine MQTT - Veröffentlichung starten, da die Lampe ein MQTT - Thema abhören und auf die Nachrichten dort reagieren kann kompliziertes (Universitäts-) Netzwerk, das viele andere Ansätze erschwert

8
matt_55_55

Wenn Sie Python verwenden, konnte ich eine AWS-Lambda-Funktion zum Veröffentlichen einer Nachricht an AWS IoT mit folgendem Befehl in meiner Handler-Funktion erhalten:

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

Sie müssen auch sicherstellen, dass der Rolle (in Ihrer Konfiguration der Lambda-Funktion) eine Richtlinie zugeordnet ist, die den Zugriff auf die IoT-Veröffentlichungsfunktion zulässt. Unter IAM -> Rollen können Sie eine Inline-Richtlinie zu Ihrer Lambda-Funktion hinzufügen. Rolle wie:

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

Das AWS SDK verfügt über zwei Klassen für die Arbeit mit IoT: Iot und IotData. IotData.publish ist die Methode, nach der Sie suchen. Es sieht so aus, als ob das Objekt Iot für die Arbeit mit Dingen und IotData für die Arbeit mit MQTT und Schatten gedacht ist. Dies sollte direkt in der Dokumentation zu MQTT und Schatten referenziert werden. Dies ist jedoch nicht der Fall.

Dieser Service (IotData) ist auch verfügbar in der CLI .

2
dpurrington

Wenn Sie Node.js verwenden, müssen Sie die Bibliothek mqtt installieren. Die folgenden Schritte helfen Ihnen, die mqtt-Bibliothek von AWS Lambda herunterzuladen und zu installieren.

  1. Laden Sie Node.js und npm herunter und installieren Sie sie auf Ihrem PC.

  2. Download der MQTT-Bibliothek für node.js .

  3. Entpacken Sie es im Verzeichnis nodejs, dass Node.js installiert wurde. (In Windows 10 x64 ist das Verzeichnis "nodejs" C:\Program Files\nodejs).

  4. Erstellen Sie einen Ordner, um die installierten MQTT-Dateien zu speichern. Zum Beispiel D:\lambda_function.

  5. Führen Sie die Eingabeaufforderung als Administrator aus. Wechseln Sie in das Verzeichnis nodejs.

  6. Installieren Sie die mqtt-Bibliothek in D:\lambda_function.

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

Hier ist ein ähnliches Projekt .

0
Khanh Ho Sy