Hinweis zum Ende des Supports: Am 7. Oktober 2026 AWS wird der Support für eingestellt. AWS IoT Greengrass Version 1 Nach dem 7. Oktober 2026 können Sie nicht mehr auf die Ressourcen zugreifen. AWS IoT Greengrass V1 Weitere Informationen finden Sie unter Migrieren von AWS IoT Greengrass Version 1.
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-Anschluss
Der SNS-Connector veröffentlicht Nachrichten zu einem Amazon SNS 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 auf diesem Connector 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:
Konnektor-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 ersten Version, die den SNS-Connector 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 über die Connectors-Seite der Gruppe einen Connector hinzufügen. Weitere Informationen finden Sie unter Erste Schritte mit Greengrass-Konnektoren (Konsole).
Eingabedaten
Dieser Connector akzeptiert SNS-Nachrichteninformationen zu einem MQTT-Thema und veröffentlicht die Nachricht dann unverändert im Ziel-SNS-Thema. 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:
trueTyp:
objectder die folgenden Eigenschaften beinhaltet: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_structureaufjsongesetzt sein, und die Nachricht muss eine zeichenfolgenkodiertes JSON-Objekt mit einemdefault-Schlüssel sein.Erforderlich:
trueTyp:
stringGültiges Muster:
.* subject-
Der Betreff der Nachricht.
Erforderlich:
falseTyp: 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:Publishfür jedes Ziel-Thema erlauben. Weitere Informationen finden Sie unter Voraussetzungen.Erforderlich:
falseTyp:
stringGü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:
stringZulä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
idim Antwortobjekt auf diesen Wert gesetzt. Wenn Sie diese Funktion nicht verwenden, können Sie diese Eigenschaft weglassen oder eine leere Zeichenkette angeben.Erforderlich:
falseTyp:
stringGü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" }
Beispiel für die Verwendung
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 Greengrass Core SDK für Python herunter und entpacken Sie es. Erstellen Sie dann ein ZIP-Paket, das die PY-Datei und den Ordner
greengrasssdkauf Stammebene enthält. Dieses Zip-Paket ist das Bereitstellungspaket, in das Sie AWS Lambda hochladen.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": truein 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 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 der AWS IoT Konsole anzuzeigen.
-
-
Stellen Sie die Gruppe bereit.
-
Abonnieren Sie in der AWS IoT Konsole auf der Testseite das Thema Ausgabedaten, um Statusmeldungen vom Connector anzuzeigen. Die Lambda-Beispielfunktion ist langlebig und beginnt unmittelbar 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": falsein 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-Connector umfasst die folgende Software/Lizenzierung von Drittanbietern:
-
AWS SDK für 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 Connectors beschrieben.
Version |
Änderungen |
|---|---|
4 |
Der Parameter |
3 |
Die Lambda-Laufzeit wurde auf Python 3.7 aktualisiert, was die Laufzeitanforderungen ä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