AWS IoT Greengrass Version 1 trat am 30. Juni 2023 in die erweiterte Lebensphase ein. Weitere Informationen finden Sie in der AWS IoT Greengrass V1 Wartungsrichtlinie. Nach diesem Datum AWS IoT Greengrass V1 werden keine Updates mehr veröffentlicht, die Funktionen, Verbesserungen, Bugfixes oder Sicherheitspatches bieten. Geräte, die auf laufen, werden AWS IoT Greengrass V1 nicht gestört und funktionieren weiterhin und stellen eine Verbindung zur Cloud her. Wir empfehlen Ihnen dringend, zu migrieren AWS IoT Greengrass Version 2, da dies wichtige neue Funktionen und Unterstützung für zusätzliche Plattformen bietet.
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.
IoT Analytics AWS
Warnung
Dieser Connector ist in die erweiterte Lebensphase übergegangen undAWS IoT Greengrass wird keine Updates veröffentlichen, die Funktionen, Verbesserungen vorhandener Funktionen, Sicherheitspatches oder Bugfixes bereitstellen. Weitere Informationen finden Sie unter AWS IoT Greengrass Version 1Wartungspolitik.
Der IoT Analytics Analytics-Connector sendet lokale Gerätedaten anAWS IoT Analytics. Sie können diesen Connector als zentralen Hub verwenden, um Daten von Sensoren auf dem Greengrass-Core-Gerät und von verbundenen Client-Geräten zu sammeln. Der Connector sendet die Daten anAWS IoT Analytics Kanäle in der aktuellenAWS-Konto und der Region. Sie kann Daten an einen Standardzielkanal und an dynamisch angegebene Kanäle senden.
Anmerkung
AWS IoT Analytics ist ein vollständig verwalteter Service, mit dem Sie IoT-Daten erfassen, speichern, verarbeiten und abfragen können. In AWS IoT Analytics können die Daten weiter analysiert und verarbeitet werden. Auf diese Weise können beispielsweise ML-Modelle zur Überwachung des Computerstatus oder zum Test neuer Modellierungsstrategien geschult werden. Weitere Informationen finden Sie unter Was ist AWS IoT Analytics? im AWS IoT Analytics-Benutzerhandbuch.
Der Konnektor akzeptiert formatierte und unformatierte Daten zu Eingabe-MQTT-Themen. Es werden zwei vordefinierte Themen mit angegebenem Zielkanal unterstützt. Sie kann auch Nachrichten zu den von Kunden definierten Themen empfangen, die in Abonnements konfiguriert sind. Dies kann verwendet werden, um Nachrichten von Client-Geräten weiterzuleiten, die zu festen Themen veröffentlichen, oder um unstrukturierte oder stapelabhängige Daten von Geräten mit beschränkten Ressourcen zu verarbeiten.
Dieser Connector verwendet die BatchPutMessage
API, um Daten (als JSON- oder Base64-kodierte Zeichenfolge) an den Zielkanal zu senden. Der Konnektor kann Rohdaten in ein Format verarbeiten, das den API-Anforderungen entspricht. Der Konnektor puffert Eingabenachrichten in Warteschlangen pro Kanal und verarbeitet die Stapel asynchron. Sie bietet Parameter, mit denen Sie das Verhalten von Warteschlangen und Stapeln steuern und die Speicherbelegung beschränken können. Beispielsweise können Sie die maximale Warteschlangengröße, den Stapelintervall, die Größe des Arbeitsspeichers und die Anzahl der aktiven Kanäle konfigurieren.
Dieser Connector hat die folgenden Versionen.
Version |
ARN |
---|---|
4 |
|
3 |
|
2 |
|
1 |
|
Informationen über Versionsänderungen finden Sie im Änderungsprotokoll.
Voraussetzungen
Dieser Konnektor hat die folgenden Anforderungen:
Parameter
MemorySize
-
Die Speichergröße (in KB), die diesem Konnektor zugewiesen werden soll.
Anzeigename in derAWS IoT Konsole: Speichergröße
Erforderlich:
true
Typ:
string
Gültiges Muster:
^[0-9]+$
PublishRegion
-
DasAWS-Region, in dem deineAWS IoT Analytics Kanäle erstellt wurden. Verwenden Sie dieselbe Region wie dem Konnektor.
Anmerkung
Diese muss ebenfalls der Region für die Kanäle entsprechen, die in der Gruppenrolle angegeben sind.
Anzeigename in derAWS IoT Konsole: Region veröffentlichen
Erforderlich:
false
Typ:
string
Gültiges Muster:
^$|([a-z]{2}-[a-z]+-\\d{1})
PublishInterval
-
Das Intervall (in Sekunden) für die Veröffentlichung eines empfangener Datenstapels an AWS IoT Analytics.
Anzeigename in derAWS IoT Konsole: Veröffentlichungsintervall
Erforderlich:
false
Typ:
string
Standardwert:
1
Gültiges Muster:
$|^[0-9]+$
IotAnalyticsMaxActiveChannels
-
Die maximale Anzahl der AWS IoT Analytics-Kanäle, die von dem Konnektor aktiv überwacht werden. Diese muss größer als 0 und mindestens gleich der Anzahl der Kanäle sein, die voraussichtlich von dem Konnektor zu einem bestimmten Zeitpunkt veröffentlicht werden.
Sie können mit diesem Parameter den Speicherverbrauch beschränken, indem Sie die Gesamtzahl der Warteschlangen, die von dem Konnektor zu einem bestimmten Zeitpunkt verwaltet werden können, einschränken. Eine Warteschlange wird gelöscht, wenn alle Nachrichten darin gesendet wurden.
Anzeigename in derAWS IoT Konsole: Maximale Anzahl aktiver Kanäle
Erforderlich:
false
Typ:
string
Standardwert:
50
Gültiges Muster:
^$|^[1-9][0-9]*$
IotAnalyticsQueueDropBehavior
-
Das Verhalten für das Löschen von Nachrichten aus einer Kanalwarteschlange, wenn die Warteschlange voll ist.
Anzeigename in derAWS IoT Konsole: Verhalten beim Löschen von Warteschlangen
Erforderlich:
false
Typ:
string
Gültige Werte:
DROP_NEWEST
oderDROP_OLDEST
.Standardwert:
DROP_NEWEST
Gültiges Muster:
^DROP_NEWEST$|^DROP_OLDEST$
IotAnalyticsQueueSizePerChannel
-
Die maximale Anzahl der vor dem Senden oder Verwerfen der Nachrichten (pro Kanal) im Speicher gehaltenen Nachrichten. Dieser Wert muss größer als 0 sein.
Anzeigename in derAWS IoT Konsole: Maximale Warteschlangengröße pro Kanal
Erforderlich:
false
Typ:
string
Standardwert:
2048
Gültiges Muster:
^$|^[1-9][0-9]*$
IotAnalyticsBatchSizePerChannel
-
Die maximale Anzahl der in einer Stapelanfrage an einen AWS IoT Analytics-Kanal gesendeten Nachrichten. Dieser Wert muss größer als 0 sein.
Anzeigename in derAWS IoT Konsole: Maximale Anzahl von Nachrichten, die pro Kanal gebündelt werden sollen
Erforderlich:
false
Typ:
string
Standardwert:
5
Gültiges Muster:
^$|^[1-9][0-9]*$
IotAnalyticsDefaultChannelName
-
Der Name des AWS IoT Analytics-Kanals, der von diesem Konnektor für Nachrichten verwendet wird, die an ein vom Kunden definiertes Eingabethema gesendet werden.
Anzeigename in derAWS IoT Konsole: Standard-Kanalname
Erforderlich:
false
Typ:
string
Gültiges Muster:
^[a-zA-Z0-9_]$
IsolationMode
-
Der Containerisierungsmodus für diesen Konnektor. Der Standardwert ist
GreengrassContainer
. Hierbei wird der Konnektor in einer isolierten Laufzeitumgebung innerhalb des AWS IoT Greengrass-Containers ausgeführt.Anmerkung
Die Standardeinstellung für Containerisierung für die Gruppe gilt nicht für Konnektoren.
Anzeigename in derAWS IoT Konsole: Container-Isolationsmodus
Erforderlich:
false
Typ:
string
Gültige Werte:
GreengrassContainer
oderNoContainer
.Gültiges Muster:
^NoContainer$|^GreengrassContainer$
Beispiel für das Erstellen eines Konnektors (AWS CLI)
Der folgende CLI-Befehl erstellt eine VersionConnectorDefinition
mit einer ersten Version, die den IoT Analytics Analytics-Connector enthält.
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{ "Connectors": [ { "Id": "MyIoTAnalyticsApplication", "ConnectorArn": "arn:aws:greengrass:
region
::/connectors/IoTAnalytics/versions/3", "Parameters": { "MemorySize": "65535", "PublishRegion": "us-west-1", "PublishInterval": "2", "IotAnalyticsMaxActiveChannels": "25", "IotAnalyticsQueueDropBehavior": "DROP_OLDEST", "IotAnalyticsQueueSizePerChannel": "1028", "IotAnalyticsBatchSizePerChannel": "5", "IotAnalyticsDefaultChannelName": "my_channel" } } ] }'
Anmerkung
Die Lambda-Funktion in diesem Konnektor hat einen langlebigen Lebenszyklus.
In derAWS IoT Greengrass Konsole können Sie auf der Seite Connectors der Gruppe einen Connector hinzufügen. Weitere Informationen finden Sie unter Erste Schritte mit Greengrass-Konnektoren (Konsole).
Eingabedaten
Dieser Konnektor akzeptiert Daten auf vordefinierten und vom Kunden definierten MQTT-Themen. Publisher können Client-Geräte, Lambda-Funktionen oder andere Konnektoren sein.
- Vordefinierte Themen
-
Der Konnektor unterstützt die folgenden beiden strukturierten MQTT-Themen, mit denen Herausgeber den Kanalnamen inline angeben können.
-
Eine formatierte Nachricht zum
iotanalytics/channels/+/messages/put
-Thema. Die IoT-Daten in diesen Eingabenachrichten müssen als JSON- oder base64-kodierte Zeichenfolge formatiert sein. -
Eine unformatierte Nachricht auf dem
iotanalytics/channels/+/messages/binary/put
-Thema. Die zu diesem Thema erhalten Eingabenachrichten werden als binäre Daten behandelt können einen beliebigen Datentyp enthalten.Wenn Sie vordefinierte Themen veröffentlichen möchten, ersetzen Sie den
+
-Platzhalter durch den Kanalnamen. Beispiel:iotanalytics/channels/my_channel/messages/put
-
- Kundendefinierte Themen
-
Der Konnektor unterstützt die
#
-Themasyntax, wodurch er Eingabenachrichten zu einem beliebigen MQTT-Thema annehmen kann, das Sie in einem Abonnement konfigurieren. Wir empfehlen, dass Sie einen Themenpfad angeben, anstatt nur den#
Platzhalter in Ihren Abonnements zu verwenden. Diese Nachrichten werden an den Standardkanal gesendet, den Sie für den Connector angeben.Eingabenachrichten zu den von Kunden definierten Themen werden als Binärdaten behandelt. Sie können eine beliebiges Nachrichtformat verwenden und beliebige Datentypen enthalten. Mit den vom Kunden definierten Themen können Sie Nachrichten von Geräten weiterleiten, die an feste Themen veröffentlicht werden. Sie können sie auch verwenden, um Eingabedaten von Client-Geräten zu akzeptieren, die die Daten nicht zu einer formatierten Nachricht verarbeiten können, um sie an den Connector zu senden.
Weitere Informationen zu Abonnements und MQTT-Themen finden Sie unter Eingaben und Ausgaben.
Die Gruppenrolle muss die iotanalytics:BatchPutMessage
-Aktion auf allen Zielkanälen erlauben. Weitere Informationen finden Sie unter Voraussetzungen.
- Themenfilter:
iotanalytics/channels/+/messages/put
-
Mit diesem Thema können Sie formatierte Nachrichten an den Konnektor senden und dynamisch einen Zielkanal angeben. Dieses Thema ermöglicht Ihnen auch die Angabe einer ID, die in der Antwortausgabe zurückgegeben wird. Der Konnektor bestätigt, dass IDs für jede an AWS IoT Analytics gesendete Nachricht in der ausgehenden
BatchPutMessage
-Anfrage eindeutig sind. Eine Nachricht mit einer doppelten ID wird gelöscht.Die Eingabedaten zu diesem Thema müssen das folgende Format aufweisen.
- Nachrichten-Eigenschaften
-
request
-
Die an den angegebenen Kanal zu sendenden Daten.
Erforderlich:
true
Typ:
object
das die folgenden Eigenschaften:message
-
Die Geräte- oder Sensordaten als JSON- oder base64-kodierte Zeichenfolge.
Erforderlich:
true
Typ:
string
id
-
Eine willkürliche ID für die Anforderung. Diese Eigenschaft wird verwendet, um eine Eingangsanforderung einer Ausgabeantwort zuzuordnen. Wenn angegeben, wird die Eigenschaft
id
im Antwortobjekt auf diesen Wert gesetzt. Wenn Sie diese Eigenschaft auslassen, wird von dem Konnektor eine ID generiert.Erforderlich:
false
Typ:
string
Gültiges Muster:
.*
- Beispieleingabe
-
{ "request": { "message" : "{\"temp\":23.33}" }, "id" : "req123" }
- Themenfilter:
iotanalytics/channels/+/messages/binary/put
-
Mit diesem Thema können Sie unformatierte Nachrichten an den Konnektor senden und dynamisch einen Zielkanal angeben.
Die Konnektor-Daten analysieren die zu diesem Thema empfangenen Eingabenachrichten nicht. Sie werden als Binärdaten behandelt. Bevor die Nachrichten an AWS IoT Analytics gesendet werden, verschlüsselt und formatiert der Konnektor diese Nachrichten entsprechend den
BatchPutMessage
-API-Anforderungen:Der Konnektor führt eine base64-Verschlüsselung der Rohdaten durch und schließt diese verschlüsselte Nutzlast in einer ausgehenden
BatchPutMessage
-Anforderung ein.Der Konnektor generiert eine ID für jede Eingabenachricht und weist sie zu.
Anmerkung
In der Konnektor-Antwortausgabe ist keine ID-Korrelation für diese Eingabenachrichten beinhaltet.
- Nachrichten-Eigenschaften
-
Keine.
- Themenfilter:
#
-
Verwenden Sie dieses Thema, um ein beliebiges Nachrichtenformat an den Standardkanal zu senden. Dies ist besonders nützlich, wenn Ihre Client-Geräte zu festen Themen veröffentlichen oder wenn Sie Daten von Client-Geräten, die die Daten nicht in das vom Connector unterstützte Nachrichtenformat verarbeiten können, an den Standardkanal senden möchten.
Sie definieren die Themensyntax in dem Abonnement, das Sie erstellen, um diesen Connector mit der Datenquelle zu verbinden. Wir empfehlen, dass Sie einen Themenpfad angeben, anstatt nur den
#
Platzhalter in Ihren Abonnements zu verwenden.Die Konnektor-Daten analysieren die an dieses Eingabethema veröffentlichten Nachrichten nicht. Alle Eingabenachrichten werden als Binärdaten behandelt. Bevor die Nachrichten an AWS IoT Analytics gesendet werden, verschlüsselt und formatiert der Konnektor diese Nachrichten entsprechend den
BatchPutMessage
-API-Anforderungen:Der Konnektor führt eine base64-Verschlüsselung der Rohdaten durch und schließt diese verschlüsselte Nutzlast in einer ausgehenden
BatchPutMessage
-Anforderung ein.Der Konnektor generiert eine ID für jede Eingabenachricht und weist sie zu.
Anmerkung
In der Konnektor-Antwortausgabe ist keine ID-Korrelation für diese Eingabenachrichten beinhaltet.
- Nachrichten-Eigenschaften
-
Keine.
Ausgabedaten
Dieser Connector veröffentlicht Statusinformationen als Ausgabedaten im MQTT-Thema. Diese Information enthält die Antwort, die vonAWS IoT Analytics für jede Eingangsnachricht zurückgegeben wird, die sie empfängt und an die sie sendetAWS IoT Analytics.
- Themenfilter im Abonnement
-
iotanalytics/messages/put/status
- Beispielausgabe: Erfolg
-
{ "response" : { "status" : "success" }, "id" : "req123" }
- Beispielausgabe: Fehler
-
{ "response" : { "status" : "fail", "error" : "ResourceNotFoundException", "error_message" : "A resource with the specified name could not be found." }, "id" : "req123" }
Anmerkung
Wenn der Connector einen wiederholbaren Fehler feststellt (z. B. Verbindungsfehler), versucht er die Veröffentlichung im nächsten Batch erneut. Der exponentielle Backoff wird vomAWS SDK behandelt. Anfragen mit wiederholbaren Fehlern werden zur weiteren Veröffentlichung entsprechend dem
IotAnalyticsQueueDropBehavior
-Parameter wieder der Kanalwarteschlange hinzugefügt.
Verwendungsbeispiel
Verwenden Sie die folgenden allgemeinen Schritte, um eine Python 3.7-Lambda-Beispielfunktion einzurichten, mit der Sie den Konnektor ausprobieren können.
Anmerkung
-
Wenn Sie andere Python-Laufzeiten verwenden, können Sie einen Symlink von Python3.x zu Python 3.7 erstellen.
-
In den Themen Beginnen Sie mit Konnektoren (Konsole) und Erste Schritte mit Konnektoren (CLI) wird ausführlich beschrieben, wie Sie einen Beispielkonnektor für Twilio-Benachrichtigungen konfigurieren und bereitstellen.
Stellen Sie sicher, dass Sie die Anforderungen für den Konnektor erfüllen.
Für die Gruppenrollenanforderung müssen Sie die Rolle so konfigurieren, dass die erforderlichen Berechtigungen erteilt werden, und sicherstellen, dass die Rolle der Gruppe hinzugefügt wurde. Weitere Informationen finden Sie unter Verwalten der Greengrass-Gruppenrolle (Konsole) oder Verwalten der Greengrass-Gruppenrolle (CLI).
-
Erstellen und veröffentlichen Sie eine Lambda-Funktion, die Eingabedaten an den Connector sendet.
Speichern Sie den Beispielcode als PY-Datei. Laden Sie das AWS IoT GreengrassCore SDK für Python herunter und entpacken Sie es. Erstellen Sie dann ein ZIP-Paket, das die PY-Datei und den Ordner
greengrasssdk
auf Stammebene enthält. Dieses ZIP-Paket ist das Bereitstellungspaket, in das Sie hochladenAWS Lambda.Nachdem Sie die Lambda-Funktion Python 3.7 erstellt haben, veröffentlichen Sie eine Funktionsversion und erstellen Sie einen Alias.
-
Konfigurieren Sie Ihre Greengrass-Gruppe.
-
Fügen Sie die Lambda-Funktion mit ihrem Alias hinzu (empfohlen). Konfigurieren Sie den Lambda-Lebenszyklus als langlebig (oder
"Pinned": true
in der CLI). -
Fügen Sie den Konnektor hinzu und konfigurieren Sie seine Parameter.
-
Fügen Sie Abonnements hinzu, die es dem Konnektor ermöglichen, Eingabedaten zu empfangen und Ausgabedaten zu unterstützten Themenfiltern zu senden.
Stellen Sie die Lambda-Funktion als Quelle und den Konnektor als Ziel ein und verwenden Sie einen unterstützten Eingabethemenfilter.
Legen Sie den Konnektor als Quelle und AWS IoT Core als Ziel fest und verwenden Sie einen unterstützten Ausgabethemenfilter. Sie verwenden dieses Abonnement, um Statusmeldungen in derAWS IoT Konsole anzuzeigen.
-
-
Stellen Sie die Gruppe bereit.
-
Abonnieren Sie in derAWS IoT Konsole auf der Testseite das Thema Ausgabedaten, um Statusmeldungen vom Connector einzusehen. Die Lambda-Beispielfunktion ist langlebig und beginnt sofort nach der Bereitstellung der Gruppe mit dem Senden von Nachrichten.
Wenn Sie mit dem Testen fertig sind, können Sie den Lambda-Lebenszyklus auf On-Demand (oder
"Pinned": false
in der CLI) setzen und die Gruppe bereitstellen. Dadurch wird verhindert, dass die Funktion Nachrichten sendet.
Beispiel
Die folgende Lambda-Beispielfunktion sendet eine Eingabenachricht an den Connector.
import greengrasssdk import time import json iot_client = greengrasssdk.client('iot-data') send_topic = 'iotanalytics/channels/my_channel/messages/put' def create_request_with_all_fields(): return { "request": { "message" : "{\"temp\":23.33}" }, "id" : "req_123" } def publish_basic_message(): messageToPublish = create_request_with_all_fields() print("Message To Publish: ", messageToPublish) iot_client.publish(topic=send_topic, payload=json.dumps(messageToPublish)) publish_basic_message() def lambda_handler(event, context): return
Einschränkungen
Dieser Konnektor unterliegt den folgenden Einschränkungen.
Alle von derAWS SDK for Python (Boto3) für dieAWS IoT Analytics
batch_put_message
Aktion festgelegten Grenzen. Alle von derAWS IoT Analytics BatchPutMessageAPI festgelegten Kontingente. Weitere Informationen finden Sie unter Service Quotas fürAWS IoT Analytics in der Allgemeine AWS-Referenz.
100.000 Nachrichten pro Sekunde pro Kanal.
100 Nachrichten pro Stapel.
128 KB pro Nachricht.
Diese API verwendet Kanalnamen (keine Kanal-ARNs), daher wird das Senden von Daten an regionsübergreifende oder kontoübergreifende Kanäle nicht unterstützt.
Alle vom AWS IoT Greengrass-Core vorgegebenen Kontingente. Weitere Informationen finden Sie unter Service Quotas für denAWS IoT Greengrass Kern in der Allgemeine AWS-Referenz.
Die folgenden Kontingente sind möglicherweise in besonderem Maße zutreffend:
Die maximale Größe der von einem Gerät gesendeten Nachrichten ist 128 KB.
Die maximale Größe der Nachrichtenwarteschlange im Greengrass Core-Router ist 2,5 MB.
Die maximale Länge einer Thema-Zeichenfolge beträgt 256 Byte UTF-8-Zeichen.
Lizenzen
Der IoT Analytics Analytics-Connector umfasst die folgende Software/Lizenzierung von Drittanbietern:
-
AWS SDK for Python (Boto3)
/Apache-Lizenz 2.0 -
botocore
/Apache-Lizenz 2.0 -
dateutil
/PSF-Lizenz -
docutils
/BSD-Lizenz, GNU General Public License (GPL), Python Software Foundation License, Public Domain -
jmespath
/MIT-Lizenz -
s3transfer
/Apache-Lizenz 2.0 -
urllib3
/MIT-Lizenz
Dieser Connector ist im Rahmen der Greengrass Core Software-Lizenzvereinbarung
Änderungsprotokoll
In der folgenden Tabelle werden die Änderungen in den einzelnen Versionen des -Entwicklers.
Version |
Änderungen |
---|---|
4 |
Fügt den |
3 |
Die Lambda-Laufzeit wurde auf Python 3.7 aktualisiert, wodurch sich die Laufzeitanforderungen ändern. |
2 |
Beheben, um übermäßige Protokollierung zu reduzieren. |
1 |
Erstversion. |
Eine Greengrass-Gruppe kann jeweils nur eine Version des Connectors enthalten. Weitere Informationen zum Aktualisieren einer Konnektorversion finden Sie unter Aktualisieren von Konnektorversionen.