Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Dieses Tutorial zeigt, wie Sie eine AWS IoT Regel erstellen, die Nachrichtendaten an eine DynamoDB-Tabelle sendet.
In diesem Tutorial erstellen Sie eine Regel, die Nachrichtendaten von einem imaginären Wettersensorgerät an eine DynamoDB-Tabelle sendet. Die Regel formatiert die Daten vieler Wettersensoren so, dass sie zu einer einzigen Datenbanktabelle hinzugefügt werden können.
Was Sie in diesem Tutorial lernen werden
-
So erstellen Sie eine DynamoDB-Tabelle
-
So senden Sie Nachrichtendaten aus einer Regel an eine DynamoDB-Tabelle AWS IoT
-
Wie verwendet man Ersatzvorlagen in einer Regel AWS IoT
-
Wie verwendet man einfache SQL Abfragen und Funktionen in einer Regelabfrageanweisung
-
Wie benutzt man den MQTT Client, um eine AWS IoT Regel zu testen
Für dieses Tutorial brauchen Sie ungefähr 30 Minuten.
In diesem Tutorial führen Sie die folgenden Aktivitäten durch:
Stellen Sie vor Beginn dieses Tutorials sicher, dass Sie über Folgendes verfügen:
-
Einrichten AWS-Konto
Sie benötigen Ihre AWS-Konto AWS IoT Handkonsole, um dieses Tutorial abzuschließen.
-
Überprüft MQTT-Nachrichten mit dem AWS IoT MQTT-Client anzeigen
Stellen Sie sicher, dass Sie den MQTT Client verwenden können, um ein Thema zu abonnieren und zu veröffentlichen. In diesem Verfahren verwenden Sie den MQTT Client, um Ihre neue Regel zu testen.
-
Übersicht über Amazon DynamoDB überprüft
Wenn Sie DynamoDB noch nicht verwendet haben, lesen Sie Erste Schritte mit DynamoDB, um sich mit den grundlegenden Konzepten und Funktionen von DynamoDB vertraut zu machen.
Schritt 1: Erstellen Sie die DynamoDB-Tabelle für dieses Tutorial
In diesem Tutorial erstellen Sie eine DynamoDB-Tabelle mit diesen Attributen, um die Daten der imaginären Wettersensorgeräte aufzuzeichnen:
-
sample_time
ist ein Primärschlüssel und beschreibt den Zeitpunkt, zu dem die Probe aufgenommen wurde. -
device_id
ist ein Sortierschlüssel und beschreibt das Gerät, das die Probe bereitgestellt hat -
device_data
sind die vom Gerät empfangenen und durch die Regelabfrageanweisung formatierten Daten
Erstellen einer DynamoDB-Tabelle für dieses Tutorial
-
Öffnen Sie die DynamoDB-Konsole
und wählen Sie Tabelle erstellen aus. -
Gehen Sie in Tabelle erstellen wie folgt vor:
-
Geben Sie unter Tabellenname den Tabellennamen
wx_data
ein. -
Geben Sie im Feld Partitionsschlüssel
sample_time
ein, und wählen SieNumber
in der Optionsliste neben dem Feld aus. -
Geben Sie im Feld Sortierschlüssel
device_id
ein und wählen SieNumber
in der Optionsliste neben dem Feld aus. -
Wählen Sie unten auf der Seite Erstellen aus.
-
Sie definieren device_data
später, wenn Sie die DynamoDB-Regelaktion konfigurieren.
Schritt 2: Erstellen Sie eine AWS IoT Regel zum Senden von Daten an die DynamoDB-Tabelle
In diesem Schritt verwenden Sie die Regelabfrageanweisung, um die Daten der imaginären Wettersensorgeräte so zu formatieren, dass sie in die Datenbanktabelle geschrieben werden.
Ein Beispiel für eine Nachrichtennutzlast, die von einem Wettersensorgerät empfangen wurde, sieht wie folgt aus:
{
"temperature": 28,
"humidity": 80,
"barometer": 1013,
"wind": {
"velocity": 22,
"bearing": 255
}
}
Für den Datenbankeintrag verwenden Sie die Regelabfrageanweisung, um die Struktur der Nutzlast der Nachricht so zu reduzieren, dass sie wie folgt aussieht:
{
"temperature": 28,
"humidity": 80,
"barometer": 1013,
"wind_velocity": 22,
"wind_bearing": 255
}
In dieser Regel verwenden Sie auch ein paar Ersetzungsvorlagen. Ersatzvorlagen sind Ausdrücke, mit denen Sie dynamische Werte aus Funktionen und Nachrichtendaten einfügen können.
Um die AWS IoT Regel zum Senden von Daten an die DynamoDB-Tabelle zu erstellen
-
Öffnen Sie den Regel-Hub der AWS IoT Konsole
. Oder Sie können die AWS IoT Startseite innerhalb von öffnen AWS Management Console und zu Nachrichtenweiterleitung>Regeln navigieren. -
Um mit der Erstellung Ihrer neuen Regel unter Regeln zu beginnen, wählen Sie Regel erstellen aus.
-
In den Regeleigenschaften:
-
Geben Sie in Role Name (Rollenname)
wx_data_ddb
ein.Denken Sie daran, dass ein Regelname in Ihrer Region AWS-Konto und Ihrer Region eindeutig sein muss und keine Leerzeichen enthalten darf. Wir haben in diesem Namen einen Unterstrich verwendet, um die beiden Wörter im Namen der Regel voneinander zu trennen.
-
Beschreiben Sie die Regel in der Regelbeschreibung.
Eine aussagekräftige Beschreibung macht es einfacher, sich daran zu erinnern, was diese Regel bewirkt und warum Sie sie erstellt haben. Die Beschreibung kann so lang wie nötig sein, also seien Sie so detailliert wie möglich.
-
-
Wählen Sie Next (Weiter), um fortzufahren.
-
In SQLeiner Erklärung:
-
Wählen Sie in der SQLVersion aus
2016-03-23
. -
Geben Sie im Bearbeitungsfeld für den SQLKontoauszug die folgende Aussage ein:
SELECT temperature, humidity, barometer, wind.velocity as wind_velocity, wind.bearing as wind_bearing, FROM 'device/+/data'
Diese Aussage:
-
Sucht nach MQTT Nachrichten mit einem Thema, das dem
device/+/data
Themenfilter entspricht. -
Formatiert die Elemente des
wind
Attributs als einzelne Attribute. -
Übergibt die
temperature
,humidity
, undbarometer
Attribute unverändert.
-
-
-
Wählen Sie Next (Weiter), um fortzufahren.
-
In Regelaktionen:
-
Um die Liste der Regelaktionen für diese Regel zu öffnen, wählen Sie in Aktion 1 die Option
DynamoDB
.Anmerkung
Stellen Sie sicher, dass Sie DynamoDB und nicht D ynamoDBv 2 als Regelaktion wählen.
-
Wählen Sie unter Tabellenname den Namen der DynamoDB-Tabelle aus, die Sie in einem vorherigen Schritt erstellt haben:
wx_data
Die Felder Partitionsschlüsseltyp und Sortierschlüsseltyp werden mit den Werten aus Ihrer DynamoDB-Tabelle gefüllt.
-
Geben Sie im Feld Partitionsschlüssel den Wert
sample_time
ein. -
Geben Sie unter Partition key value (Partitions-Schlüsselwert)
${timestamp()}
ein.Dies ist die erste der Ersetzungsvorlagen, die Sie in dieser Regel verwenden werden. Anstatt einen Wert aus der Nachrichtennutzlast zu verwenden, wird der von der Zeitstempelfunktion zurückgegebene Wert verwendet. Weitere Informationen finden Sie unter Zeitstempel im AWS IoT Core Entwicklerhandbuch.
-
Geben Sie unter Sort key (Sortierschlüssel)
device_id
ein. -
Geben Sie unter Sort key value (Schlüsselwert sortieren)
${cast(topic(2) AS DECIMAL)}
ein.Dies ist der zweite der Ersetzungsvorlagen den Sie in dieser Regel verwenden werden. Es fügt den Wert des zweiten Elements in den Themennamen ein, bei dem es sich um die ID des Geräts handelt, nachdem es ihn in einen DECIMAL Wert umgewandelt hat, der dem numerischen Format des Schlüssels entspricht. Weitere Informationen zu Themen finden Sie unter Thema im AWS IoT Core Entwicklerhandbuch. Weitere Informationen zum Casting finden Sie unter Besetzung im AWS IoT Core Entwicklerhandbuch.
-
Geben Sie in Write message data to this column (Nachrichtendaten in diese Spalte schreiben)
device_data
ein.Dadurch wird die
device_data
Spalte in der DynamoDB-Tabelle erstellt. -
Lassen Sie Operation leer.
-
Wählen Sie IAMunter Rolle die Option Neue Rolle erstellen aus.
-
Geben Sie im Dialogfeld Rolle erstellen als Rollenname wx_ddb_role ein. Diese neue Rolle enthält automatisch eine Richtlinie mit dem Präfix "aws-iot-rule", die es der
wx_data_ddb
Regel ermöglicht, Daten an die von Ihnen erstelltewx_data
DynamoDB-Tabelle zu senden. -
Wählen Sie unter IAMRolle die Option.
wx_ddb_role
-
Wählen Sie unten auf der Seite Next (Weiter) aus.
-
-
Wählen Sie unten auf der Seite Überprüfen und erstellen die Option Erstellen aus, um die Regel zu erstellen.
Schritt 3: Testen Sie die AWS IoT Regel und die DynamoDB-Tabelle
Um die neue Regel zu testen, verwenden Sie den MQTT Client, um die in diesem Test verwendeten MQTT Nachrichten zu veröffentlichen und zu abonnieren.
Öffnen Sie den MQTTClient in der AWS IoT
Konsole
Um den MQTT Client zum Testen Ihrer Regel zu verwenden
-
Abonnieren Sie im MQTT Client in der AWS IoT Konsole
das Eingabethema, device/+/data
.-
Wählen Sie im MQTT Client die Option Thema abonnieren aus.
-
Geben Sie für Themenfilter das Thema des Eingabethemenfilters
device/+/data
ein. -
Wählen Sie Subscribe (Abonnieren) aus.
-
-
Veröffentlichen Sie jetzt eine Nachricht zum Eingabethema mit einer bestimmten Geräte-ID,
device/22/data
. Sie können nicht zu MQTT Themen veröffentlichen, die Platzhalterzeichen enthalten.-
Wählen Sie im MQTT Client die Option In einem Thema veröffentlichen aus.
-
Geben Sie bei Themenname den Namen des eingegebenen Themas ein,
device/22/data
. -
Geben Sie für Nachrichtennutzlast die folgenden Beispieldaten ein.
{ "temperature": 28, "humidity": 80, "barometer": 1013, "wind": { "velocity": 22, "bearing": 255 } }
-
Um die MQTT Nachricht zu veröffentlichen, wählen Sie Veröffentlichen.
-
Wählen Sie nun im MQTT Client ein Thema abonnieren. Wählen Sie in der Spalte Abonnieren das
device/+/data
Abonnement aus. Vergewissern Sie sich, dass die Beispieldaten aus dem vorherigen Schritt dort angezeigt werden.
-
-
Prüfen Sie, ob die Zeile in der DynamoDB-Tabelle angezeigt wird, die Ihre Regel erstellt hat.
-
Wählen Sie im DynamoDB-Tabellen-Hub in der AWS IoT Konsole
wx_data und dann die Registerkarte Elemente aus. Wenn Sie sich bereits auf der Registerkarte Elemente befinden, müssen Sie möglicherweise die Anzeige aktualisieren, indem Sie das Aktualisierungssymbol in der oberen rechten Ecke der Kopfzeile der Tabelle auswählen.
-
Beachten Sie, dass es sich bei den sample_time-Werten in der Tabelle um Links handelt, und öffnen Sie einen. Wenn Sie gerade Ihre erste Nachricht gesendet haben, ist dies die einzige in der Liste.
Dieser Link zeigt alle Daten in dieser Zeile der Tabelle an.
-
Erweitern Sie den Eintrag device_data, um die Daten anzuzeigen, die sich aus der Regelabfrageanweisung ergeben haben.
-
Erkunden Sie die verschiedenen Darstellungen der Daten, die in dieser Anzeige verfügbar sind. Sie können die Daten in dieser Anzeige auch bearbeiten.
-
Wenn Sie die Überprüfung dieser Datenzeile abgeschlossen haben, klicken Sie auf Speichern, um alle von Ihnen vorgenommenen Änderungen zu speichern, oder klicken Sie auf Abbrechen, um den Vorgang zu beenden, ohne die Änderungen zu speichern.
-
Wenn Sie nicht das richtige Verhalten feststellen, lesen Sie die Tipps zur Fehlerbehebung.
Problembehandlung bei Ihrer DynamoDB-Regel
Hier sind einige Dinge, die Sie überprüfen sollten, falls Sie nicht die erwarteten Ergebnisse sehen.
-
Sie haben ein Fehlerbanner
Wenn bei der Veröffentlichung der Eingabemeldung ein Fehler aufgetreten ist, korrigieren Sie diesen Fehler zuerst. Die folgenden Schritte können Ihnen helfen, diesen Fehler zu korrigieren.
-
Die Eingabemeldung wird im Client nicht angezeigt MQTT
Jedes Mal, wenn Sie Ihre Eingabenachricht zu dem
device/22/data
Thema veröffentlichen, sollte diese Nachricht im MQTT Client erscheinen, sofern Sie dendevice/+/data
Themenfilter wie im Verfahren beschrieben abonniert haben.Zu überprüfende Dinge
-
Überprüfen Sie den Themenfilter, den Sie abonniert haben
Wenn Sie das Thema der Eingabenachricht wie im Verfahren beschrieben abonniert haben, sollte Ihnen bei jeder Veröffentlichung eine Kopie der Eingabenachricht angezeigt werden.
Wenn Sie die Nachricht nicht sehen, überprüfen Sie den Themennamen, den Sie abonniert haben, und vergleichen Sie ihn mit dem Thema, zu dem Sie sie veröffentlicht haben. Bei Themennamen wird Groß- und Kleinschreibung beachtet, und das Thema, das Sie abonniert haben, muss mit dem Thema identisch sein, zu dem Sie die Nachrichtennutzlast veröffentlicht haben.
-
Überprüfen Sie die Funktion zum Veröffentlichen von Nachrichten
Wählen Sie im MQTT Client unter Abonnements die Option device/+/data aus, überprüfen Sie das Thema der Veröffentlichungsnachricht und wählen Sie dann Als Thema veröffentlichen aus. Sie sollten sehen, dass die Nutzlast der Nachricht aus dem Bearbeitungsfeld unter dem Thema in der Nachrichtenliste erscheinen.
-
-
Sie finden Ihre Daten nicht in der DynamoDB-Tabelle
Als Erstes müssen Sie die Anzeige aktualisieren, indem Sie oben in der Kopfzeile der Tabelle das Aktualisierungssymbol auswählen. Wenn die Daten, nach denen Sie suchen, nicht angezeigt werden, überprüfen Sie Folgendes.
Zu überprüfende Dinge
-
Überprüfe den Namen AWS-Region deines MQTT Kunden und die Regel, die du erstellt hast
Die Konsole, in der Sie den MQTT Client ausführen, muss sich in derselben AWS Region befinden wie die von Ihnen erstellte Regel.
-
Überprüfen Sie das Thema der Eingabemeldung in der Regelabfrageanweisung
Damit die Regel funktioniert, muss sie eine Nachricht mit dem Themennamen erhalten, der dem Themenfilter in der FROM Klausel der Regelabfrageanweisung entspricht.
Überprüfen Sie die Schreibweise des Themenfilters in der Regelabfrageanweisung mit der Schreibweise des Themas im MQTT Client. Bei Themennamen wird Groß- und Kleinschreibung beachtet, und das Thema der Nachricht muss mit dem Themenfilter in der Regelabfrageanweisung übereinstimmen.
-
Überprüfen Sie den Inhalt der Nutzlast der Input-Nachricht
Damit die Regel funktioniert, muss sie das Datenfeld in der Nachrichtennutzlast finden, das in der SELECT Anweisung deklariert ist.
Überprüfen Sie die Schreibweise des
temperature
Felds in der Regelabfrageanweisung mit der Schreibweise der Nachrichtennutzdaten im MQTT Client. Bei Feldnamen wird zwischen Groß- und Kleinschreibung unterschieden, und dastemperature
Feld in der Regelabfrageanweisung muss mit demtemperature
Feld in der Nachrichtennutzlast identisch sein.Stellen Sie sicher, dass das JSON Dokument in der Nachrichten-Payload korrekt formatiert ist. Wenn das Fehler JSON enthält, z. B. ein fehlendes Komma, kann die Regel es nicht lesen.
-
Überprüfen Sie die Schlüssel- und Feldnamen, die in der Regelaktion verwendet wurden
Die in der Themenregel verwendeten Feldnamen müssen mit denen in der JSON Nachrichtennutzlast der veröffentlichten Nachricht übereinstimmen.
Öffnen Sie die Regel, die Sie in der Konsole erstellt haben, und überprüfen Sie die Feldnamen in der Regelaktionskonfiguration mit denen, die im MQTT Client verwendet werden.
-
Überprüfen Sie die Rolle, die von der Regel verwendet wird
Die Regelaktion muss berechtigt sein, das ursprüngliche Thema zu empfangen und das neue Thema zu veröffentlichen.
Die Richtlinien, die die Regel autorisieren, Nachrichtendaten zu empfangen und die DynamoDB-Tabelle zu aktualisieren, sind spezifisch für die verwendeten Themen. Wenn Sie das von der Regel verwendete Thema oder den Namen der DynamoDB-Tabelle ändern, müssen Sie die Rolle der Regelaktion aktualisieren, damit ihre Richtlinie entsprechend aktualisiert wird.
Wenn Sie vermuten, dass dies das Problem ist, bearbeiten Sie die Regelaktion und erstellen Sie eine neue Rolle. Neue Rollen, die durch die Regelaktion erstellt wurden, erhalten die erforderlichen Autorisierungen, um diese Aktionen auszuführen.
-
Schritt 4: Überprüfen Sie die Ergebnisse und die nächsten Schritte
Nachdem Sie mit dieser Regel einige Nachrichten an die DynamoDB-Tabelle gesendet haben, versuchen Sie, damit zu experimentieren, um zu sehen, wie sich Änderungen einiger Aspekte aus dem Tutorial auf die in die Tabelle geschriebenen Daten auswirken. Hier sind einige Ideen, die Ihnen den Einstieg erleichtern sollen.
-
Ändern Sie
device_id
geben Sie das Thema der Eingabenachricht ein und beobachten Sie die Auswirkung auf die Daten. Sie könnten dies verwenden, um den Empfang von Daten von mehreren Wettersensoren zu simulieren. -
Ändern Sie die in der Regelabfrageanweisung ausgewählten Felder und beobachten Sie die Auswirkungen auf die Daten. Sie könnten dies verwenden, um die in der Tabelle gespeicherten Daten zu filtern.
-
Fügen Sie eine Regelaktion zum erneuten Veröffentlichen hinzu, um für jede Zeile, die der Tabelle hinzugefügt wird, eine MQTT Nachricht zu senden. Sie könnten dies zum Debuggen verwenden.
Nachdem Sie dieses Tutorial abgeschlossen haben, besuchen Sie Tutorial: Formatieren einer Benachrichtigung mithilfe einer AWS Lambda Funktion.