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.
SNS-Konnektor
Der SNS-Konnektor veröffentlicht Nachrichten zu einem Amazon SNS-Thema. Auf diese Weise können Webserver, E-Mail-Adressen und andere Nachrichtenabonnenten auf Ereignisse in der Greengrass-Gruppe reagieren.
Dieser Konnektor empfängt SNS-Nachrichteninformationen zu einem MQTT-Thema und sendet die Nachricht dann an ein bestimmtes SNS-Thema. Sie können optional benutzerdefinierte Lambda-Funktionen verwenden, um Filter- oder Formatierungslogik für Nachrichten zu implementieren, bevor sie in diesem Konnektor veröffentlicht werden.
Dieser Konnektor 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:
Connector-Parameter
Dieser Konnektor stellt die folgenden Parameter bereit:
Beispiel für das Erstellen eines Konnektors (AWS CLI)
Der folgende CLI-Befehl erstellt eine ConnectorDefinition
mit einer Anfangsversion, die den SNS-Konnektor enthält.
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{ "Connectors": [ { "Id": "MySNSConnector", "ConnectorArn": "arn:aws:greengrass:
region
::/connectors/SNS/versions/4", "Parameters": { "DefaultSNSArn": "arn:aws:sns:region
:account-id
:topic-name", "IsolationMode" : "GreengrassContainer" } } ] }'
In der AWS IoT Greengrass -Konsole können Sie einen Connector über die Seite Connectors der Gruppe hinzufügen. Weitere Informationen finden Sie unter Erste Schritte mit Greengrass-Konnektoren (Konsole).
Eingabedaten
Dieser Konnektor akzeptiert SNS-Nachrichteninformationen zu einem MQTT-Thema und veröffentlicht dann die Nachricht unverändert im SNS-Zielthema. Eingabenachrichten müssen im JSON-Format vorliegen.
- Themenfilter im Abonnement
-
sns/message
- Nachrichten-Eigenschaften
-
request
-
Informationen über die zu sendende Nachricht an das SNS-Thema.
Erforderlich:
true
Typ:
object
, der die folgenden Eigenschaften enthält:message
-
Der Inhalt der Nachricht liegt als Zeichenfolge oder im JSON-Format vor. Beispiele finden Sie unter Beispieleingabe.
Zum Senden von JSON muss die Eigenschaft
message_structure
aufjson
gesetzt sein, und die Nachricht muss eine zeichenfolgenkodiertes JSON-Objekt mit einemdefault
-Schlüssel sein.Erforderlich:
true
Typ:
string
Gültiges Muster:
.*
subject
-
Der Betreff der Nachricht.
Erforderlich:
false
Typ: ASCII-Text, bis zu 100 Zeichen. Dieser muss mit einem Buchstaben, einer Zahl oder einem Satzzeichen beginnen. Er darf keine Zeilenumbrüche oder Steuerzeichen enthalten.
Gültiges Muster:
.*
sns_topic_arn
-
Der ARN des SNS-Themas, in dem Nachrichten veröffentlicht werden sollen. Wenn angegeben, veröffentlicht der Konnektor zu diesem Thema anstelle des Standardthemas.
Anmerkung
Die Gruppenrolle muss die Berechtigung
sns:Publish
für jedes Ziel-Thema erlauben. Weitere Informationen finden Sie unter Voraussetzungen.Erforderlich:
false
Typ:
string
Gültiges Muster:
arn:aws:sns:([a-z]{2}-[a-z]+-\d{1}):(\d{12}):([a-zA-Z0-9-_]+)$
message_structure
-
Der Struktur der Nachricht.
Erforderlich:
false
. Dies muss angegeben werden, damit eine JSON-Nachricht gesendet werden kann.Typ:
string
Zulässige Werte:
json
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 Funktion nicht verwenden, können Sie diese Eigenschaft weglassen oder eine leere Zeichenkette angeben.Erforderlich:
false
Typ:
string
Gültiges Muster:
.*
- Beschränkungen
-
Die Nachrichtengröße ist durch eine maximale SNS-Nachrichtengröße von 256 KB begrenzt.
- Beispieleingabe: Zeichenfolgen-Nachricht
-
Dieses Beispiel sendet eine Zeichenfolgen-Nachricht. Es legt die optionale
sns_topic_arn
-Eigenschaft fest, durch die das Standard-Ziel-Thema außer Kraft gesetzt wird.{ "request": { "subject": "Message subject", "message": "Message data", "sns_topic_arn": "arn:aws:sns:
region
:account-id
:topic2-name" }, "id": "request123" } - Beispieleingabe: JSON-Nachricht
-
Dieses Beispiel sendet eine Nachricht als zeichenfolgenkodiertes JSON-Objekt mit dem
default
-Schlüssel.{ "request": { "subject": "Message subject", "message": "{ \"default\": \"Message data\" }", "message_structure": "json" }, "id": "request123" }
Ausgabedaten
Dieser Connector veröffentlicht Statusinformationen als Ausgabedaten im MQTT-Thema.
- Themenfilter im Abonnement
-
sns/message/status
- Beispielausgabe: Erfolg
-
{ "response": { "sns_message_id": "f80a81bc-f44c-56f2-a0f0-d5af6a727c8a", "status": "success" }, "id": "request123" }
- Beispielausgabe: Fehler
-
{ "response" : { "error": "InvalidInputException", "error_message": "SNS Topic Arn is invalid", "status": "fail" }, "id": "request123" }
Verwendungsbeispiel
Führen Sie die folgenden allgemeinen Schritte aus, 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 Konnektor sendet.
Speichern Sie den Beispielcode als PY-Datei. Laden Sie das AWS IoT Greengrass Core SDK for 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, das Sie in 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 nach 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.
Legen Sie die Lambda-Funktion als Quelle und den Konnektor als Ziel fest und verwenden Sie einen unterstützten Eingabethemafilter.
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 der -AWS IoTKonsole anzuzeigen.
-
-
Stellen Sie die Gruppe bereit.
-
Abonnieren Sie in der -AWS IoTKonsole auf der Seite Test das Ausgabedatenthema, um Statusmeldungen vom Konnektor anzuzeigen. Die Lambda-Beispielfunktion ist langlebig und beginnt sofort nach der Bereitstellung der Gruppe Nachrichten zu senden.
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 Konnektor.
import greengrasssdk import time import json iot_client = greengrasssdk.client('iot-data') send_topic = 'sns/message' def create_request_with_all_fields(): return { "request": { "message": "Message from SNS Connector Test" }, "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
Lizenzen
Der SNS-Konnektor enthält 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 Konnektor wurde gemäß der Greengrass Core Software License Agreement
Änderungsprotokoll
In der folgenden Tabelle werden die Änderungen in jeder Version des Konnektors beschrieben.
Version |
Änderungen |
---|---|
4 |
Der Parameter |
3 |
Die Lambda-Laufzeit wurde auf Python 3.7 aktualisiert, was die Laufzeitanforderung ändert. |
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.
Weitere Informationen finden Sie auch unter
-
Integrieren von Services und Protokollen mit Greengrass-Konnektoren
-
Die Veröffentlichen-Aktion
in der Boto 3-Dokumentation -
Was ist Amazon Simple Notification Service? im Amazon Simple Notification Service-Entwicklerhandbuch