Verwenden von AWS Lambda mit AWS IoT
AWS IoT bietet eine sichere Kommunikation zwischen über das Internet verbundenen Geräten (z. B. Sensoren) und der AWS Cloud. Auf diese Weise können Sie die Telemetriedaten von mehreren Geräten erfassen, speichern und analysieren.
Sie können AWS IoT-Regeln für Ihre Geräte erstellen, um mit AWS-Services zu interagieren. Die AWS IoT-Regel-Engine bietet eine SQL-basierte Sprache zur Auswahl von Daten aus Nachrichten-Nutzlasten und zum Senden von Daten zu anderen Services, z. B. Amazon S3, Amazon DynamoDB und AWS Lambda. Sie definieren eine Regel zum Aufrufen einer Lambda-Funktion, wenn Sie einen anderen AWS-Service oder den Service eines Drittanbieters aufrufen möchten.
Wenn eine eingehende IoT-Nachricht die Regel auslöst, ruft AWS IoT Ihre Lambda-Funktion asynchron auf und übergibt Daten aus der IoT-Nachricht an die Funktion.
Das folgende Beispiel zeigt einen Feuchtigkeitsablesung von einem Gewächshaussensor. Die Werte row und pos bestimmen die Position des Sensors. Dieses Beispielereignis basiert auf dem Gewächshaustyp in den AWS IoT-Regel-Tutorials.
Beispiel AWS IoT-Nachrichtenereignis
{ "row" : "10", "pos" : "23", "moisture" : "75" }
Bei asynchronem Aufruf stellt Lambda die Nachricht in die Warteschlange und wiederholt den Vorgang, wenn Ihre Funktion einen Fehler zurückgibt. Konfigurieren Sie Ihre Funktion mit einem Ziel, um Ereignisse beizubehalten, die Ihre Funktion nicht verarbeiten konnte.
Sie müssen die Berechtigung für den AWS IoT-Service erteilen, um Ihre Lambda-Funktion aufzurufen. Sie können den Befehl add-permission verwenden, um der ressourcenbasierten Richtlinie Ihrer Funktion eine Berechtigungsanweisung hinzuzufügen.
aws lambda add-permission --function-namemy-function\ --statement-id iot-events --action "lambda:InvokeFunction" --principal iot.amazonaws.com
Die Ausgabe sollte folgendermaßen aussehen:
{ "Statement": "{\"Sid\":\"iot-events\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"iot.amazonaws.com\"},\"Action\":\"lambda:InvokeFunction\",\"Resource\":\"arn:aws:lambda:us-east-1:123456789012:function:my-function\"}" }
Weitere Informationen zur Verwendung von Lambda mit AWS IoT finden Sie unter Erstellen einer AWS Lambda-Regel.