

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](https://docs.aws.amazon.com/greengrass/v2/developerguide/migrate-from-v1.html).

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
<a name="sns-connector"></a>

Der [SNS-Connector](connectors.md) 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 | `arn:aws:greengrass:region::/connectors/SNS/versions/4` | 
| 3 | `arn:aws:greengrass:region::/connectors/SNS/versions/3` | 
| 2 | `arn:aws:greengrass:region::/connectors/SNS/versions/2` | 
| 1 | `arn:aws:greengrass:region::/connectors/SNS/versions/1` | 

Informationen über Versionsänderungen finden Sie im [Änderungsprotokoll](#sns-connector-changelog).

## Voraussetzungen
<a name="sns-connector-req"></a>

Dieser Konnektor hat die folgenden Anforderungen:

------
#### [ Version 3 - 4 ]
+ <a name="conn-req-ggc-v1.9.3"></a>AWS IoT Greengrass Kernsoftware v1.9.3 oder höher.
+ <a name="conn-req-py-3.7-and-3.8"></a>[Python-Version](https://www.python.org/) 3.7 oder 3.8 wurde auf dem Core-Gerät installiert und zur Umgebungsvariablen PATH hinzugefügt.
**Anmerkung**  <a name="use-runtime-py3.8"></a>
Um Python 3.8 zu verwenden, führen Sie den folgenden Befehl aus, um einen symbolischen Link vom standardmäßigen Python 3.7-Installationsordner zu den installierten Python 3.8-Binärdateien zu erstellen.  

  ```
  sudo ln -s path-to-python-3.8/python3.8 /usr/bin/python3.7
  ```
Dadurch wird Ihr Gerät so konfiguriert, dass es die Python-Anforderung für AWS IoT Greengrass erfüllt.
+ <a name="conn-sns-req-sns-config"></a>Ein konfiguriertes SNS-Thema. Weitere Informationen finden Sie unter [Amazon SNS-Thema anlegen](https://docs.aws.amazon.com/sns/latest/dg/sns-tutorial-create-topic.html) im *Amazon Simple Notification Service-Entwicklerhandbuch*.
+ <a name="conn-sns-req-iam-policy"></a>Die [Greengrass-Gruppenrolle](group-role.md) ist so konfiguriert, dass sie die `sns:Publish` Aktion auf dem Ziel-Amazon zulässt SNStopic, wie in der folgenden IAM-Beispielrichtlinie gezeigt.

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "Stmt1528133056761",
              "Action": [
                  "sns:Publish"
              ],
              "Effect": "Allow",
              "Resource": [
              "arn:aws:sns:us-east-1:123456789012:topic-name"
              ]
          }
      ]
  }
  ```

------

  Mit diesem Konnektor können Sie das standardmäßige Thema in der Nutzlast der Input-Message dynamisch überschreiben. Wenn Ihre Implementierung diese Funktion verwendet, muss die IAM-Richtlinie `sns:Publish` Berechtigungen für alle Zielthemen zulassen. Sie können granularen oder bedingten Zugriff auf Ressourcen gewähren (etwa mit einem Benennungsschema mit Platzhaltern \$1).

  <a name="set-up-group-role"></a>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. Für weitere Informationen siehe [Verwalten der Greengrass-Gruppenrolle (Konsole)](group-role.md#manage-group-role-console) oder [Verwalten der Greengrass-Gruppenrolle (CLI)](group-role.md#manage-group-role-cli).

------
#### [ Versions 1 - 2 ]
+ <a name="conn-req-ggc-v1.7.0"></a>AWS IoT Greengrass Kernsoftware v1.7 oder höher.
+ [Python-Version](https://www.python.org/) 2.7 wurde auf dem Core-Gerät installiert und zur Umgebungsvariablen PATH hinzugefügt.
+ <a name="conn-sns-req-sns-config"></a>Ein konfiguriertes SNS-Thema. Weitere Informationen finden Sie unter [Amazon SNS-Thema anlegen](https://docs.aws.amazon.com/sns/latest/dg/sns-tutorial-create-topic.html) im *Amazon Simple Notification Service-Entwicklerhandbuch*.
+ <a name="conn-sns-req-iam-policy"></a>Die [Greengrass-Gruppenrolle](group-role.md) ist so konfiguriert, dass sie die `sns:Publish` Aktion auf dem Ziel-Amazon zulässt SNStopic, wie in der folgenden IAM-Beispielrichtlinie gezeigt.

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "Stmt1528133056761",
              "Action": [
                  "sns:Publish"
              ],
              "Effect": "Allow",
              "Resource": [
              "arn:aws:sns:us-east-1:123456789012:topic-name"
              ]
          }
      ]
  }
  ```

------

  Mit diesem Konnektor können Sie das standardmäßige Thema in der Nutzlast der Input-Message dynamisch überschreiben. Wenn Ihre Implementierung diese Funktion verwendet, muss die IAM-Richtlinie `sns:Publish` Berechtigungen für alle Zielthemen zulassen. Sie können granularen oder bedingten Zugriff auf Ressourcen gewähren (etwa mit einem Benennungsschema mit Platzhaltern \$1).

  <a name="set-up-group-role"></a>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. Für weitere Informationen siehe [Verwalten der Greengrass-Gruppenrolle (Konsole)](group-role.md#manage-group-role-console) oder [Verwalten der Greengrass-Gruppenrolle (CLI)](group-role.md#manage-group-role-cli).

------

## Konnektor-Parameter
<a name="sns-connector-param"></a>

Dieser Konnektor stellt die folgenden Parameter bereit:

------
#### [ Version 4 ]

`DefaultSNSArn`  <a name="sns-DefaultSNSArn"></a>
Der ARN des Standard-SNS-Themas, in dem Nachrichten veröffentlicht werden sollen. Das Ziel-Thema kann durch die Eigenschaft `sns_topic_arn` in der Nutzlast der Eingangsnachricht überschrieben werden.  
Die Gruppenrolle muss die Berechtigung `sns:Publish` für alle Ziel-Themen erlauben. Weitere Informationen finden Sie unter [Voraussetzungen](#sns-connector-req).
Anzeigename in der AWS IoT Konsole: **Standard-SNS-Thema ARN**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `arn:aws:sns:([a-z]{2}-[a-z]+-\d{1}):(\d{12}):([a-zA-Z0-9-_]+)$`

`IsolationMode`  <a name="IsolationMode"></a>
Der [Containerisierungsmodus](connectors.md#connector-containerization) für diesen Konnektor. Die Standardeinstellung ist`GreengrassContainer`, was bedeutet, dass der Konnektor in einer isolierten Laufzeitumgebung innerhalb des AWS IoT Greengrass Containers ausgeführt wird.  
Die Standardeinstellung für Containerisierung für die Gruppe gilt nicht für Konnektoren.
Anzeigename in der AWS IoT Konsole: **Container-Isolationsmodus**  
Erforderlich: `false`  
Typ: `string`  
Gültige Werte: `GreengrassContainer` oder `NoContainer`.  
Gültiges Muster: `^NoContainer$|^GreengrassContainer$`

------
#### [ Versions 1 - 3 ]

`DefaultSNSArn`  <a name="sns-DefaultSNSArn"></a>
Der ARN des Standard-SNS-Themas, in dem Nachrichten veröffentlicht werden sollen. Das Ziel-Thema kann durch die Eigenschaft `sns_topic_arn` in der Nutzlast der Eingangsnachricht überschrieben werden.  
Die Gruppenrolle muss die Berechtigung `sns:Publish` für alle Ziel-Themen erlauben. Weitere Informationen finden Sie unter [Voraussetzungen](#sns-connector-req).
Anzeigename in der AWS IoT Konsole: **Standard-SNS-Thema ARN**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `arn:aws:sns:([a-z]{2}-[a-z]+-\d{1}):(\d{12}):([a-zA-Z0-9-_]+)$`

------

### Beispiel für das Erstellen eines Konnektors (AWS CLI)
<a name="sns-connector-create"></a>

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)](connectors-console.md).

## Eingabedaten
<a name="sns-connector-data-input"></a>

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.

<a name="topic-filter"></a>**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 beinhaltet:    
`message`  
Der Inhalt der Nachricht liegt als Zeichenfolge oder im JSON-Format vor. Beispiele finden Sie unter [Beispieleingabe](#sns-connector-data-input-example).  
Zum Senden von JSON muss die Eigenschaft `message_structure` auf `json` gesetzt sein, und die Nachricht muss eine zeichenfolgenkodiertes JSON-Objekt mit einem `default`-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.  
Die Gruppenrolle muss die Berechtigung `sns:Publish` für jedes Ziel-Thema erlauben. Weitere Informationen finden Sie unter [Voraussetzungen](#sns-connector-req).
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**  <a name="sns-connector-data-input-example"></a>
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
<a name="sns-connector-data-output"></a>

Dieser Connector veröffentlicht Statusinformationen als Ausgabedaten im MQTT-Thema.

<a name="topic-filter"></a>**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
<a name="sns-connector-usage"></a>

<a name="connectors-setup-intro"></a>Verwenden Sie die folgenden allgemeinen Schritte, um eine Python-3.7-Lambda-Beispielfunktion einzurichten, mit der Sie den Konnektor ausprobieren können.

**Anmerkung**  <a name="connectors-setup-get-started-topics"></a>
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)](connectors-console.md) und [Erste Schritte mit Konnektoren (CLI)](connectors-cli.md) wird ausführlich beschrieben, wie Sie einen Beispielkonnektor für Twilio-Benachrichtigungen konfigurieren und bereitstellen.

1. Stellen Sie sicher, dass Sie die [Anforderungen](#sns-connector-req) für den Konnektor erfüllen.

   <a name="set-up-group-role"></a>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. Für weitere Informationen siehe [Verwalten der Greengrass-Gruppenrolle (Konsole)](group-role.md#manage-group-role-console) oder [Verwalten der Greengrass-Gruppenrolle (CLI)](group-role.md#manage-group-role-cli).

1. <a name="connectors-setup-function"></a>Erstellen und veröffentlichen Sie eine Lambda-Funktion, die Eingabedaten an den Connector sendet.

   Speichern Sie den [Beispielcode](#sns-connector-usage-example) als PY-Datei. <a name="connectors-setup-function-sdk"></a>Laden Sie das [AWS IoT Greengrass Core SDK für Python](lambda-functions.md#lambda-sdks-core) 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 AWS Lambda hochladen.

   <a name="connectors-setup-function-publish"></a>Nachdem Sie die Lambda-Funktion Python 3.7 erstellt haben, veröffentlichen Sie eine Funktionsversion und erstellen Sie einen Alias.

1. Konfigurieren Sie Ihre Greengrass-Gruppe.

   1. <a name="connectors-setup-gg-function"></a>Fügen Sie die Lambda-Funktion mit ihrem Alias hinzu (empfohlen). Konfigurieren Sie den Lambda-Lebenszyklus als langlebig (oder `"Pinned": true` in der CLI).

   1. Fügen Sie den Konnektor hinzu und konfigurieren Sie seine [Parameter](#sns-connector-param).

   1. Fügen Sie Abonnements hinzu, die es dem Konnektor ermöglichen, [Eingabedaten](#sns-connector-data-input) zu empfangen und [Ausgabedaten](#sns-connector-data-output) zu unterstützten Themenfiltern zu senden.
      + <a name="connectors-setup-subscription-input-data"></a>Legen Sie die Lambda-Funktion als Quelle und den Konnektor als Ziel fest und verwenden Sie einen unterstützten Eingabethemenfilter.
      + <a name="connectors-setup-subscription-output-data"></a>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.

1. <a name="connectors-setup-deploy-group"></a>Stellen Sie die Gruppe bereit.

1. <a name="connectors-setup-test-sub"></a>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": false` in der CLI) setzen und die Gruppe bereitstellen. Dadurch wird verhindert, dass die Funktion Nachrichten sendet.

### Beispiel
<a name="sns-connector-usage-example"></a>

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
<a name="sns-connector-license"></a>

Der SNS-Connector umfasst die folgende Software/Lizenzierung von Drittanbietern:<a name="boto-3-licenses"></a>
+ [AWS SDK für Python (Boto3)](https://pypi.org/project/boto3/)/Apache-Lizenz 2.0
+ [botocore](https://pypi.org/project/botocore/)/Apache-Lizenz 2.0
+ [dateutil](https://pypi.org/project/python-dateutil/1.4/)/PSF-Lizenz
+ [docutils](https://pypi.org/project/docutils/)/BSD-Lizenz, GNU General Public License (GPL), Python Software Foundation License, Public Domain
+ [jmespath](https://pypi.org/project/jmespath/)/MIT-Lizenz
+ [s3transfer](https://pypi.org/project/s3transfer/)/Apache-Lizenz 2.0
+ [urllib3](https://pypi.org/project/urllib3/)/MIT-Lizenz

Dieser Connector ist im Rahmen der [Greengrass Core Software-Lizenzvereinbarung](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf) veröffentlicht.

## Änderungsprotokoll
<a name="sns-connector-changelog"></a>

In der folgenden Tabelle werden die Änderungen in den einzelnen Versionen des Connectors beschrieben.


| Version | Änderungen | 
| --- | --- | 
| 4 | <a name="isolation-mode-changelog"></a>Der Parameter `IsolationMode` wurde hinzugefügt, um den Containerisierungsmodus für den Konnektor zu konfigurieren. | 
| 3 | <a name="upgrade-runtime-py3.7"></a>Die Lambda-Laufzeit wurde auf Python 3.7 aktualisiert, was die Laufzeitanforderungen ändert. | 
| 2 | Beheben, um übermäßige Protokollierung zu reduzieren. | 
| 1 | Erstversion.  | 

<a name="one-conn-version"></a>Eine Greengrass-Gruppe kann jeweils nur eine Version des Connectors enthalten. Weitere Informationen zum Aktualisieren einer Konnektorversion finden Sie unter [Aktualisieren von Konnektorversionen](connectors.md#upgrade-connector-versions).

## Weitere Informationen finden Sie auch unter
<a name="sns-connector-see-also"></a>
+ [Integrieren von Services und Protokollen mit Greengrass-Konnektoren](connectors.md)
+ [Erste Schritte mit Greengrass-Konnektoren (Konsole)](connectors-console.md)
+ [Erste Schritte mit Greengrass-Konnektoren (CLI)](connectors-cli.md)
+ [ Die Veröffentlichen-Aktion](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sns.html#SNS.Client.publish) in der Boto 3-Dokumentation
+ [Was ist Amazon Simple Notification Service?](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) im *Amazon Simple Notification Service-Entwicklerhandbuch*