

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.

# Integrieren von Services und Protokollen mit Greengrass-Konnektoren
<a name="connectors"></a>

Diese Funktion ist für AWS IoT Greengrass Core v1.7 und höher verfügbar.

Bei den Konnektoren AWS IoT Greengrass handelt es sich um vorgefertigte Module, die die Interaktion mit der lokalen Infrastruktur, Geräteprotokollen und anderen Cloud-Diensten effizienter machen. AWS Durch die Verwendung von Konnektoren müssen Sie weniger Zeit mit dem Erlernen neuer Protokolle verbringen APIs und können sich mehr auf die Logik konzentrieren, die für Ihr Unternehmen wichtig ist.

Das folgende Diagramm zeigt, wo Konnektoren in die AWS IoT Greengrass  Landschaft passen können.

![\[Konnektoren verbinden sich mit Geräten, Services und lokalen Ressourcen.\]](http://docs.aws.amazon.com/de_de/greengrass/v1/developerguide/images/connectors/connectors-arch.png)


Viele Konnektoren verwenden MQTT-Nachrichten, um mit Client-Geräten und Greengrass Lambda-Funktionen in der Gruppe oder mit dem lokalen AWS IoT Shadow-Service zu kommunizieren. Im folgenden Beispiel empfängt der Twilio Notifications Connector MQTT-Nachrichten von einer benutzerdefinierten Lambda-Funktion, verwendet eine lokale Referenz eines Geheimnisses von und ruft die AWS Secrets Manager Twilio-API auf.

![\[Ein Konnektor, der eine MQTT-Nachricht von einer Lambda-Funktion empfängt und einen Dienst aufruft.\]](http://docs.aws.amazon.com/de_de/greengrass/v1/developerguide/images/connectors/twilio-solution.png)


Ein Tutorial zum Erstellen dieser Lösung finden Sie unter [Erste Schritte mit Greengrass-Konnektoren (Konsole)](connectors-console.md) und [Erste Schritte mit Greengrass-Konnektoren (CLI)](connectors-cli.md).

Greengrass-Konnektoren können Ihnen helfen, die Gerätefunktionen zu erweitern oder Einzweckgeräte zu entwickeln. Mithilfe von Konnektoren können Sie:
+ Implementieren einer wiederverwendbaren Geschäftslogik.
+ Interagieren Sie mit Cloud- und lokalen Diensten, einschließlich AWS Diensten von Drittanbietern.
+ Erfassen und Verarbeiten von Gerätedaten.
+ Aktivieren Sie device-to-device Aufrufe mithilfe von MQTT-Themenabonnements und benutzerdefinierten Lambda-Funktionen.

AWS bietet eine Reihe von Greengrass-Konnektoren, die Interaktionen mit gängigen Diensten und Datenquellen vereinfachen. Diese vorgefertigten Module ermöglichen Szenarien für Protokollierung und Diagnose, Nachschubplanung, industrielle Datenverarbeitung sowie für Alarm und Meldung. Weitere Informationen finden Sie unter [AWS-mitgelieferte Greengrass-Anschlüsse](connectors-list.md).

## Voraussetzungen
<a name="connectors-reqs"></a>

Beachten Sie bei der Verwendung von Konnektoren die folgenden Punkte:
+ Für jeden Konnektor, den Sie verwenden, gelten Anforderungen, die Sie erfüllen müssen. Zu diesen Anforderungen können die Mindestversion der AWS IoT Greengrass Core-Software, die Gerätevoraussetzungen, die erforderlichen Berechtigungen und Beschränkungen gehören. Weitere Informationen finden Sie unter [AWS-mitgelieferte Greengrass-Anschlüsse](connectors-list.md).
+ Eine Greengrass-Gruppe kann nur eine konfigurierte Instanz eines bestimmten Connectors enthalten. Sie können die Instanz jedoch in mehreren Abonnements verwenden. Weitere Informationen finden Sie unter [Konfigurationsparameter](#connectors-parameters).
+ Wenn die Standardcontainerisierung für die Greengrass-Gruppe auf [No container (Kein Container)](lambda-group-config.md#lambda-containerization-groupsettings) festgelegt ist, müssen die **Connectors (Konnektoren)** in der Gruppe ohne Containerisierung ausgeführt werden. Informationen zum Suchen von Konnektoren, die den **No Container (Kein Container)**-Modus unterstützen, finden Sie unter [AWS-mitgelieferte Greengrass-Anschlüsse](connectors-list.md).

## Verwenden von Greengrass-Konnektoren
<a name="use-applications"></a>

Ein Konnektor ist ein Typ einer Gruppenkomponente. Wie bei anderen Gruppenkomponenten, wie Client-Geräten und benutzerdefinierten Lambda-Funktionen, fügen Sie Konnektoren zu Gruppen hinzu, konfigurieren ihre Einstellungen und stellen sie im AWS IoT Greengrass Core bereit. Konnektoren werden in der Core-Umgebung ausgeführt.

Sie können einige Konnektoren als einfache eigenständige Anwendungen bereitstellen. Beispielsweise liest der Device Defender-Connector Systemmetriken vom Kerngerät und sendet sie AWS IoT Device Defender zur Analyse an.

Sie können weitere Konnektoren als Bausteine zu größeren Lösungen hinzufügen. Die folgende Beispiellösung verwendet den Modbus-RTU-Protokolladapter-Konnektor zur Verarbeitung von Nachrichten von Sensoren und den Twilio Notifications Connector zur Initiierung von Twilio-Nachrichten.

![\[Datenfluss von der Lambda-Funktion zum Modbus-RTU-Protokolladapter-Anschluss zur Lambda-Funktion zum Twilio Notifications-Konnektor zu Twilio.\]](http://docs.aws.amazon.com/de_de/greengrass/v1/developerguide/images/connectors/modbus-twilio-solution.png)


Lösungen beinhalten häufig benutzerdefinierte Lambda-Funktionen, die sich neben Konnektoren befinden und die Daten verarbeiten, die der Konnektor sendet oder empfängt. In diesem Beispiel empfängt die TempMonitor Funktion Daten vom Modbus-RTU-Protokolladapter, führt einen Teil der Geschäftslogik aus und sendet dann Daten an Twilio Notifications.

Um eine Lösung zu erstellen und bereitzustellen, folgen Sie diesem allgemeinen Prozess:

1. Bilden Sie den übergeordneten Datenfluss ab. Identifizieren Sie die Datenquellen, Datenkanäle, Services, Protokolle und Ressourcen, mit denen Sie arbeiten müssen. In der Beispiellösung beinhaltet dies Daten über das Modbus RTU-Protokoll, die physikalische serielle Modbus-Schnittstelle und Twilio.

1. Identifizieren Sie die Konnektoren, die in die Lösung aufgenommen werden sollen, und fügen Sie sie zu Ihrer Gruppe hinzu. Die Beispiellösung verwendet den Modbus-RTU-Protokolladapter und Twilio-Benachrichtigungen. Damit Sie die Konnektoren leichter finden, die auf Ihr Szenario zutreffen, und um mehr über deren individuelle Anforderungen zu erfahren, konsultieren Sie die [AWS-mitgelieferte Greengrass-Anschlüsse](connectors-list.md).

1. Identifizieren Sie, ob benutzerdefinierte Lambda-Funktionen, Client-Geräte oder Ressourcen benötigt werden, und erstellen Sie sie dann und fügen Sie sie der Gruppe hinzu. Dies kann Funktionen beinhalten, die Geschäftslogik enthalten oder Daten in ein Format verarbeiten, das von einer anderen Entity in der Lösung benötigt wird. Die Beispiellösung verwendet Funktionen, um Modbus-RTU-Anfragen zu senden und Twilio-Benachrichtigungen zu initiieren. Sie enthält auch eine lokale Geräteressource für die serielle Schnittstelle Modbus RTU und eine geheime Ressource für das Twilio-Authentifizierungstoken.
**Anmerkung**  
Eine geheime Ressource meint Passwörter, Token und andere Secrets vom AWS Secrets Manager. Secrets können von Konnektoren und Lambda-Funktionen zur Authentifizierung bei Diensten und Anwendungen verwendet werden. AWS IoT Greengrass Kann standardmäßig auf Geheimnisse zugreifen, deren Namen mit "*greengrass* -“ beginnen. Weitere Informationen finden Sie unter [Setzen Sie Geheimnisse bis ins AWS IoT Greengrass Mark ein](secrets.md).

1. Erstellen Sie Abonnements, die es den Entitäten in der Lösung ermöglichen, MQTT-Nachrichten auszutauschen. Wenn ein Konnektor in einem Abonnement verwendet wird, müssen der Konnektor und die Nachrichtenquelle oder das Ziel die vordefinierte Themensyntax verwenden, die von dem Konnektor unterstützt wird. Weitere Informationen finden Sie unter [Eingaben und Ausgaben](#connectors-inputs-outputs).

1. Bereitstellen der Gruppe auf Greengrass Core.

Informationen zum Erstellen und Bereitstellen eines Connectors finden Sie in den folgenden Tutorials:
+ [Erste Schritte mit Greengrass-Konnektoren (Konsole)](connectors-console.md)
+ [Erste Schritte mit Greengrass-Konnektoren (CLI)](connectors-cli.md)

## Konfigurationsparameter
<a name="connectors-parameters"></a>

Viele Konnektoren stellen Parameter bereit, mit denen Sie Verhalten oder Ausgabe anpassen können. Diese Parameter werden während der Initialisierung, zur Laufzeit oder zu anderen Zeiten im Lebenszyklus des Konnektors verwendet.

Die Parametertypen und -verwendung variieren je nach Konnektor. Beispielsweise hat der SNS-Connector einen Parameter, der das Standard-SNS-Thema konfiguriert, und Device Defender hat einen Parameter, der die Datenabtastrate konfiguriert.

Eine Gruppenversion kann mehrere Konnektoren enthalten, aber nur eine Instance eines bestimmten Konnektor auf einmal. Dies bedeutet, dass jeder Konnektor in der Gruppe nur über eine aktive Konfiguration verfügen kann. Die Konnektor-Instance kann jedoch in mehreren Abonnements in der Gruppe verwendet werden. Sie können beispielsweise Abonnements erstellen, mit denen viele Geräte Daten an den Kinesis Firehose-Connector senden können.

### Parameter für den Zugriff auf Gruppenressourcen
<a name="connectors-parameters-resources"></a>

Greengrass-Konnektoren verwenden Gruppenressourcen für den Zugriff auf das Dateisystem, Ports, Peripheriegeräte und andere lokale Ressourcen auf dem Core-Gerät. Wenn ein Konnektor den Zugriff auf eine Gruppenressource erfordert, stellt er zugehörige Konfigurationsparameter zur Verfügung.

Gruppenressourcen beinhalten:
+ [Lokale Ressourcen](access-local-resources.md). Verzeichnisse, Dateien, Ports, Pins und Peripheriegeräte, die auf dem Greengrass Core-Gerät vorhanden sind.
+ [Ressourcen für maschinelles Lernen](ml-inference.md). Machine Learning-Modelle, die in der Cloud geschult und für den Core für lokale Inferenzen bereitgestellt werden.
+ [Geheime Ressourcen](secrets.md). Lokale, verschlüsselte Kopien von Passwörtern, Schlüsseln, Token oder beliebigem Text von. AWS Secrets Manager Konnektoren können auf diese lokalen Geheimnisse sicher zugreifen und sie verwenden, um sich auf Services oder in der lokalen Infrastruktur zu authentifizieren.

Beispielsweise ermöglichen Parameter für Device Defender den Zugriff auf Systemmetriken im `/proc` Host-Verzeichnis, und Parameter für Twilio-Benachrichtigungen ermöglichen den Zugriff auf ein lokal gespeichertes Twilio-Authentifizierungstoken.

### Aktualisieren von Konnektorparametern
<a name="update-application-parameters-"></a>

Die Parameter werden konfiguriert, wenn der Konnektor zu einer Greengrass-Gruppe hinzugefügt wird. Sie können die Parameterwerte ändern, nachdem der Konnektor hinzugefügt wurde.
+ In der Konsole: Öffnen Sie auf der Gruppenkonfigurationsseite **Connectors (Konnektoren)** und wählen Sie im Kontextmenü des Konnektors **Edit (Bearbeiten)** aus.
**Anmerkung**  
Wenn der Konnektor eine geheime Ressource verwendet, die später geändert wird, um auf ein anderes Secret zu verweisen, müssen Sie die Parameter des Konnektors bearbeiten und die Änderung bestätigen.
+ In der API: Erstellen Sie eine weitere Version des Konnektors, die die neue Konfiguration definiert.

  Die AWS IoT Greengrass API verwendet Versionen, um Gruppen zu verwalten. Versionen sind unveränderlich. Um Gruppenkomponenten — z. B. die Client-Geräte, Funktionen und Ressourcen der Gruppe — hinzuzufügen oder zu ändern, müssen Sie Versionen neuer oder aktualisierter Komponenten erstellen. Anschließend erstellen und implementieren Sie eine Gruppenversion, die die Zielversion jeder Komponente enthält.

Nachdem Sie Änderungen an der Konnektor-Konfiguration der Gruppe vorgenommen haben, müssen Sie die Gruppe bereitstellen, damit die Änderungen zum Core propagiert werden.

## Eingaben und Ausgaben
<a name="connectors-inputs-outputs"></a>

Greengrass-Konnektoren können mit anderen Entitäten kommunizieren, indem sie MQTT-Nachrichten senden und empfangen. Die MQTT-Kommunikation wird durch Abonnements gesteuert, die es einem Connector ermöglichen, Daten mit Lambda-Funktionen, Client-Geräten und anderen Connectoren in der Greengrass-Gruppe oder mit AWS IoT und dem lokalen Shadow-Service auszutauschen. Um diese Kommunikation zuzulassen, müssen Sie Abonnements in der Gruppe erstellen, zu der der Konnektor gehört. Weitere Informationen finden Sie unter [Verwaltete Abonnements im MQTT Messaging-Workflow](gg-sec.md#gg-msg-workflow).

Konnektoren können Nachrichtenabonnenten, Nachrichtenherausgeber oder beides sein. Jeder Konnektor definiert die MQTT-Themen, die er veröffentlicht oder abonniert. Diese vordefinierten Themen müssen in den Abonnements verwendet werden, wobei der Konnektor eine Nachrichtenquelle oder ein Nachrichtenziel ist. Tutorials mit den Schritten für die Konfiguration von Abonnements für einen Konnektor finden Sie unter [Erste Schritte mit Greengrass-Konnektoren (Konsole)](connectors-console.md) und [Erste Schritte mit Greengrass-Konnektoren (CLI)](connectors-cli.md).

**Anmerkung**  
Viele Konnektoren haben auch eingebaute Kommunikationsmodi, um mit Cloud- oder lokalen Services zu interagieren. Diese variieren je nach Konnektor und können erfordern, dass Sie Parameter konfigurieren oder der [Gruppenrolle](group-role.md) Berechtigungen hinzufügen. Weitere Informationen zu den Anforderungen für Konnektoren finden Sie unter [AWS-mitgelieferte Greengrass-Anschlüsse](connectors-list.md).

### Eingabethemen
<a name="connectors-multiple-topics"></a>

Die meisten Konnektoren empfangen Eingabedaten zu MQTT-Themen. Einige Konnektoren abonnieren mehrere Themen für Eingabedaten. Der Serial Stream Connector unterstützt beispielsweise zwei Themen:
+ `serial/+/read/#`
+ `serial/+/write/#`

Für diesen Konnektor werden Lese- und Schreibanforderungen an das zugehörige Thema gesendet. Wenn Sie Abonnements erstellen, stellen Sie sicher, dass Sie das Thema verwenden, das zu Ihrer Implementierung passt.

Die Zeichen `+` und `#` in den vorherigen Beispielen sind Platzhalter. Diese Platzhalter ermöglichen es Abonnenten, Nachrichten zu mehreren Themen zu empfangen, und Herausgebern, die Themen, zu denen sie veröffentlichen, anzupassen.
+ Der Platzhalter `+` kann an beliebiger Stelle in der Themenhierarchie erscheinen. Es kann durch ein Hierarchie-Element ersetzt werden.

  Zum Beispiel können für das Thema `sensor/+/input` Nachrichten zu den Themen `sensor/id-123/input` veröffentlicht werden, nicht aber zu `sensor/group-a/id-123/input`.
+ Der `#` Platzhalter kann nur am Ende der Themenhierarchie erscheinen. Es kann durch null oder mehr Hierarchieelemente ersetzt werden..

  Zum Beispiel können für das Thema `sensor/#` Nachrichten zu `sensor/`, `sensor/id-123` und `sensor/group-a/id-123` veröffentlicht werden, nicht aber zu `sensor`.

Platzhalterzeichen sind nur gültig, wenn Sie Themen abonnieren. Nachrichten können nicht zu Themen veröffentlicht werden, die Platzhalter enthalten. Weitere Informationen zu den Anforderungen an die Eingabe- oder Ausgabethemen finden Sie in der Dokumentation für den Konnektor. Weitere Informationen finden Sie unter [AWS-mitgelieferte Greengrass-Anschlüsse](connectors-list.md).

## Unterstützung der Containerisierung
<a name="connector-containerization"></a>

Standardmäßig werden die meisten Konnektoren auf dem Greengrass Core in einer isolierten Laufzeitumgebung ausgeführt, die von verwaltet wird AWS IoT Greengrass. Diese Laufzeitumgebungen, *Container* genannt, bieten Isolation zwischen Konnektoren und dem Hostsystem. Dies erhöht die Sicherheit für den Host und den Konnektor.

Diese Greengrass-Containerisierung wird jedoch in einigen Umgebungen nicht unterstützt, z. B. wenn Sie sie AWS IoT Greengrass in einem Docker-Container oder auf älteren Linux-Kerneln ohne Cgroups ausführen. In diesen Umgebungen müssen die Konnektoren im Modus **No container (Kein Container)** ausgeführt werden. Informationen zum Suchen von Konnektoren, die den **No Container (Kein Container)**-Modus unterstützen, finden Sie unter [AWS-mitgelieferte Greengrass-Anschlüsse](connectors-list.md). Einige Konnektoren werden in diesem Modus nativ ausgeführt und einige Konnektoren ermöglichen es Ihnen, den Isolationsmodus festzulegen.

Sie können den Isolationsmodus auch in Umgebungen, die die Greengrass-Containerisierung unterstützen, auf **No container (Kein Container)** festlegen. Wir empfehlen jedoch, wenn möglich den Modus **Greengrass container (Greengrass-Container)** zu verwenden.

**Anmerkung**  
Die Standardeinstellung für Containerisierung für die Greengrass-Gruppe gilt nicht für [Konnektoren](lambda-group-config.md#lambda-containerization-groupsettings).

## Aktualisieren von Konnektorversionen
<a name="upgrade-connector-versions"></a>

Konnektoranbieter veröffentlichen möglicherweise neue Versionen eines Konnektors, die neue Funktionen bereitstellen, Probleme beheben oder die Leistung verbessern. Informationen zu verfügbaren Versionen und entsprechenden Änderungen finden Sie in der [Dokumentation zu den einzelnen Konnektoren](connectors-list.md).

In der AWS IoT Konsole können Sie nach neuen Versionen für die Konnektoren in Ihrer Greengrass-Gruppe suchen.

1. <a name="console-gg-groups"></a>Erweitern Sie im Navigationsbereich der AWS IoT Konsole unter **Verwalten** die Option **Greengrass-Geräte** und wählen Sie dann **Gruppen (V1)** aus.

1. Wählen Sie unter **Greengrass-Gruppen** Ihre Gruppe aus.

1. Wählen Sie **Connectors (Konnektoren)**, um die Konnektoren in der Gruppe anzuzeigen.

   Wenn der Connector eine neue Version hat, wird in der Spalte **Upgrade** die Schaltfläche **Verfügbar** angezeigt.

1. So führen Sie ein Upgrade der Konnektorversion aus:

   1. Wählen Sie auf der Seite **Connectors (Konnektoren)** in der Spalte **Upgrade** die Option **Available (Verfügbar)**. Die Seite **Upgrade connector (Konnektor-Upgrade)** wird geöffnet und zeigt gegebenenfalls die aktuellen Parametereinstellungen an.

      Wählen Sie die neue Konnektorversion, definieren Sie die Parameter wie erforderlich und wählen Sie dann **Upgrade**.

   1. Fügen Sie auf der Seite **Subscriptions (Abonnements)** neue Abonnements in der Gruppe hinzu, um alle Abonnements zu ersetzen, die den Konnektor als Quelle oder Ziel verwenden. Entfernen Sie dann die alten Abonnements.

      Abonnements verweisen nach Version auf Konnektoren, sodass sie ungültig werden, wenn Sie die Konnektorversion in der Gruppe ändern.

   1. Wählen Sie im Menü **Actions (Aktionen)** die Option **Deploy (Bereitstellen)**, um Ihre Änderungen im Core bereitzustellen.

Um einen Connector über die AWS IoT Greengrass API zu aktualisieren, erstellen und implementieren Sie eine Gruppenversion, die den aktualisierten Connector und die aktualisierten Abonnements enthält. Gehen Sie genauso vor wie beim Hinzufügen eines Konnektors zu einer Gruppe. Ausführliche Schritte, die Ihnen zeigen, wie Sie den AWS CLI zum Konfigurieren und Bereitstellen eines Beispiel-Connectors für Twilio Notifications verwenden, finden Sie unter[Erste Schritte mit Greengrass-Konnektoren (CLI)](connectors-cli.md).

## Protokollieren für Konnektoren
<a name="connectors-logging"></a>

Greengrass-Konnektoren enthalten Lambda-Funktionen, die Ereignisse und Fehler in Greengrass-Protokolle schreiben. Abhängig von Ihren Gruppeneinstellungen werden Protokolle in Logs, in CloudWatch das lokale Dateisystem oder in beide geschrieben. Protokolle von Konnektoren enthalten den ARN der entsprechenden Funktion. Der folgende Beispiel-ARN stammt vom Kinesis Firehose-Connector:

```
arn:aws:lambda:aws-region:account-id:function:KinesisFirehoseClient:1
```

Die Standardprotokollierungskonfiguration schreibt Info-Level-Protokolle mit der folgenden Verzeichnisstruktur in das Dateisystem:

```
greengrass-root/ggc/var/log/user/region/aws/function-name.log
```

Weitere Hinweise zur Greengrass-Protokollierung finden Sie unter[Überwachung mit AWS IoT Greengrass Protokollen](greengrass-logs-overview.md).

# AWS-mitgelieferte Greengrass-Anschlüsse
<a name="connectors-list"></a>

AWS stellt die folgenden Konnektoren bereit, die allgemeine AWS IoT Greengrass Szenarien unterstützen. Weitere Informationen zur Funktionsweise von Konnektoren finden Sie in der folgenden Dokumentation:
+ [Integrieren von Services und Protokollen mit Greengrass-Konnektoren](connectors.md)
+ [Beginnen Sie mit Konnektoren (Konsole)](connectors-console.md) oder [Erste Schritte mit Konnektoren (CLI)](connectors-cli.md)


| Konnektor | Beschreibung | Unterstützte Lambda-Laufzeiten | Unterstützt **No Container (Kein Container)**-Modus | 
| --- | --- | --- | --- | 
| [CloudWatch Metriken](cloudwatch-metrics-connector.md) | Veröffentlicht benutzerdefinierte Metriken auf Amazon CloudWatch. | <a name="python-connectors-runtime"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/greengrass/v1/developerguide/connectors-list.html) | Ja | 
| [Geräteverteidiger](device-defender-connector.md) | Sendet Systemmetriken an AWS IoT Device Defender. | <a name="python-connectors-runtime"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/greengrass/v1/developerguide/connectors-list.html) | Nein | 
| [Docker-Anwendungsbereitstellung](docker-app-connector.md) | Führt eine Docker Compose-Datei aus, um eine Docker-Anwendung auf dem Core-Gerät zu starten. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/greengrass/v1/developerguide/connectors-list.html) | Ja | 
| [IoT Analytics](iot-analytics-connector.md) | Sendet Daten von Geräten und Sensoren an AWS IoT Analytics. | <a name="python-connectors-runtime"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/greengrass/v1/developerguide/connectors-list.html) | Ja | 
| [IoT-Ethernet-IP-Protokolladapter](ethernet-ip-connector.md) | Sammelt Daten von EtherNet/IP-Geräten. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/greengrass/v1/developerguide/connectors-list.html) | Ja | 
| [IoT SiteWise](iot-sitewise-connector.md) | Sendet Daten von Geräten und Sensoren an Objekteigenschaften in AWS IoT SiteWise. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/greengrass/v1/developerguide/connectors-list.html) | Ja | 
| [Kinesis Firehose](kinesis-firehose-connector.md) | Sendet Daten an Amazon Data Firehose-Lieferdatenströme. | <a name="python-connectors-runtime"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/greengrass/v1/developerguide/connectors-list.html) | Ja | 
| [Feedback zu ML](ml-feedback-connector.md) | Veröffentlicht Machine Learning-Modelleingaben in der Cloud und Ausgaben in einem MQTT-Thema. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/greengrass/v1/developerguide/connectors-list.html) | Nein | 
| [ML-Bildklassifizierung](image-classification-connector.md) | Führt einen lokalen Inferenzdienst zur Bildklassifizierung aus. Dieser Konnektor bietet Versionen für mehrere Plattformen. | <a name="python-connectors-runtime"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/greengrass/v1/developerguide/connectors-list.html) | Nein | 
| [ML-Objekterkennung](obj-detection-connector.md) | Führt einen Inferenzdienst für die lokale Objekterkennung aus. Dieser Konnektor bietet Versionen für mehrere Plattformen. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/greengrass/v1/developerguide/connectors-list.html) | Nein | 
| [Modbus-RTU-Protokolladapter](modbus-protocol-adapter-connector.md) | Sendet Anfragen an Modbus RTU-Geräte. | <a name="python-connectors-runtime"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/greengrass/v1/developerguide/connectors-list.html) | Nein | 
| [Modbus-TCP-Protokolladapter](modbus-tcp-connector.md) | Sammelt Daten von ModbusTCP-Geräten. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/greengrass/v1/developerguide/connectors-list.html) | Ja | 
| [Raspberry Pi GPIO](raspberrypi-gpio-connector.md) | Steuert GPIO-Pins auf einem Raspberry Pi-Core-Gerät. | <a name="python-connectors-runtime"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/greengrass/v1/developerguide/connectors-list.html) | Nein | 
| [Serieller Stream](serial-stream-connector.md) | Liest und schreibt über eine serielle Schnittstelle eines Core-Geräts. | <a name="python-connectors-runtime"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/greengrass/v1/developerguide/connectors-list.html) | Nein | 
| [ServiceNow MetricBase Integration](servicenow-connector.md) | Veröffentlicht Zeitreihenmetriken für ServiceNow MetricBase. | <a name="python-connectors-runtime"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/greengrass/v1/developerguide/connectors-list.html) | Ja | 
| [SNS](sns-connector.md) | Sendet Nachrichten an ein Amazon SNS SNS-Thema. | <a name="python-connectors-runtime"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/greengrass/v1/developerguide/connectors-list.html) | Ja | 
| [Splunk-Integration](splunk-connector.md) | Veröffentlicht Daten in Splunk HEC. | <a name="python-connectors-runtime"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/greengrass/v1/developerguide/connectors-list.html) | Ja | 
| [Twilio-Benachrichtigungen](twilio-notifications-connector.md) | Initiiert eine Twilio-Text- oder Sprachnachricht. | <a name="python-connectors-runtime"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/greengrass/v1/developerguide/connectors-list.html) | Ja | 

\$1 Um die Python 3.8-Laufzeiten zu verwenden, müssen Sie einen symbolischen Link vom standardmäßigen Python 3.7-Installationsordner zu den installierten Python 3.8-Binärdateien erstellen. Weitere Informationen finden Sie in den konnektorspezifischen Anforderungen.

**Anmerkung**  
Wir empfehlen, [Konnektor-Versionen](connectors.md#upgrade-connector-versions) von Python 2.7 auf Python 3.7 zu aktualisieren. Die fortgesetzte Unterstützung für Python 2.7-Konnektoren hängt von der AWS Lambda Laufzeitunterstützung ab. Weitere Informationen finden Sie unter [Richtlinien zur Runtime-Supportunterstützung](https://docs.aws.amazon.com/lambda/latest/dg/runtime-support-policy.html) im *AWS Lambda Entwicklerhandbuch*.

# CloudWatch Konnektor für Kennzahlen
<a name="cloudwatch-metrics-connector"></a>

Der CloudWatch [Metrics-Konnektor](connectors.md) veröffentlicht benutzerdefinierte Metriken von Greengrass-Geräten an Amazon CloudWatch. Der Connector bietet eine zentrale Infrastruktur für die Veröffentlichung von CloudWatch Metriken, mit der Sie die Greengrass-Kernumgebung überwachen und analysieren und auf lokale Ereignisse reagieren können. Weitere Informationen finden Sie unter [Verwenden von CloudWatch Amazon-Metriken](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/working_with_metrics.html) im * CloudWatch Amazon-Benutzerhandbuch*.

Dieser Konnektor empfängt Metrikdaten wie MQTT-Nachrichten. Der Connector stapelt Metriken, die sich im selben Namespace befinden, und veröffentlicht sie CloudWatch in regelmäßigen Abständen.

Dieser Konnektor hat die folgenden Versionen.


| Version | ARN | 
| --- | --- | 
| 5 | `arn:aws:greengrass:region::/connectors/CloudWatchMetrics/versions/5` | 
| 4 | `arn:aws:greengrass:region::/connectors/CloudWatchMetrics/versions/4` | 
| 3 | `arn:aws:greengrass:region::/connectors/CloudWatchMetrics/versions/3` | 
| 2 | `arn:aws:greengrass:region::/connectors/CloudWatchMetrics/versions/2` | 
| 1 | `arn:aws:greengrass:region::/connectors/CloudWatchMetrics/versions/1` | 

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

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

Dieser Konnektor hat die folgenden Anforderungen:

------
#### [ Version 3 - 5 ]
+ <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-cloudwatch-metrics-req-iam-policy"></a>Die [Greengrass-Gruppenrolle](group-role.md) ist so konfiguriert, dass sie die `cloudwatch:PutMetricData` Aktion zulässt, wie in der folgenden Beispielrichtlinie AWS Identity and Access Management (IAM) gezeigt.

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "Stmt1528133056761",
              "Action": [
                  "cloudwatch:PutMetricData"
              ],
              "Effect": "Allow",
              "Resource": "*"
          }
      ]
  }
  ```

------

  <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).

  Weitere Informationen zu CloudWatch Berechtigungen finden Sie in der [ CloudWatch Amazon-Berechtigungsreferenz](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/permissions-reference-cw.html) im *IAM-Benutzerhandbuch*.

------
#### [ 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-cloudwatch-metrics-req-iam-policy"></a>Die [Greengrass-Gruppenrolle](group-role.md) ist so konfiguriert, dass sie die `cloudwatch:PutMetricData` Aktion zulässt, wie in der folgenden Beispielrichtlinie AWS Identity and Access Management (IAM) gezeigt.

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "Stmt1528133056761",
              "Action": [
                  "cloudwatch:PutMetricData"
              ],
              "Effect": "Allow",
              "Resource": "*"
          }
      ]
  }
  ```

------

  <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).

  Weitere Informationen zu CloudWatch Berechtigungen finden Sie in der [ CloudWatch Amazon-Berechtigungsreferenz](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/permissions-reference-cw.html) im *IAM-Benutzerhandbuch*.

------

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

Dieser Konnektor stellt die folgenden Parameter bereit:

------
#### [ Versions 4 - 5 ]

`PublishInterval`  <a name="cw-metrics-PublishInterval"></a>
Die maximale Wartezeit in Sekunden, die bis zur Veröffentlichung von Batch-Metriken für einen bestimmten Namespace vergehen kann. Der maximale Wert beträgt 900. Um den Konnektor so zu konfigurieren, dass er Metriken veröffentlicht, sobald sie empfangen werden (ohne Batching), geben Sie 0 an.  
Der Connector veröffentlicht, CloudWatch nachdem er 20 Metriken im selben Namespace oder nach dem angegebenen Intervall empfangen hat.  
Der Konnektor garantiert nicht die Reihenfolge der veröffentlichten Ereignisse.
Anzeigename in der AWS IoT Konsole: **Veröffentlichungsintervall**  
Erforderlich: `true`  
Typ: `string`  
Zulässige Werte: `0 - 900`  
Gültiges Muster: `[0-9]|[1-9]\d|[1-9]\d\d|900`

`PublishRegion`  <a name="cw-metrics-PublishRegion"></a>
Das AWS-Region , an das CloudWatch Metriken gepostet werden sollen. Dieser Wert überschreibt die standardmäßige Greengrass-Metrik-Region. Er ist nur bei der Veröffentlichung von regionsübergreifenden Metriken erforderlich.  
Anzeigename in der AWS IoT Konsole: **Region veröffentlichen**  
Erforderlich: `false`  
Typ: `string`  
Gültiges Muster: `^$|([a-z]{2}-[a-z]+-\d{1})`

`MemorySize`  <a name="cw-metrics-MemorySize"></a>
Der Speicher (in KB), der dem Konnektor zugewiesen werden soll.  
Anzeigename in der AWS IoT Konsole: **Speichergröße**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `^[0-9]+$`

`MaxMetricsToRetain`  <a name="cw-metrics-MaxMetricsToRetain"></a>
Die maximale Anzahl von Metriken über alle Namespaces hinweg, die im Speicher gespeichert werden können, bevor sie durch neue Metriken ersetzt werden. Der minimale Wert beträgt 2000.  
Diese Begrenzung gilt, wenn keine Verbindung zum Internet besteht und der Konnektor beginnt, die Metriken zu puffern, um sie später zu veröffentlichen. Wenn der Puffer voll ist, werden die ältesten Metriken durch neue Metriken ersetzt. Metriken in einem bestimmten Namespace werden nur durch Metriken im selben Namespace ersetzt.  
Metriken werden nicht gespeichert, wenn der Host-Prozess für den Konnektor unterbrochen wird. Eine solche Unterbrechung kann beispielsweise während der Gruppenbereitstellung oder beim Neustart des Geräts auftreten.
Anzeigename in der AWS IoT Konsole: **Maximale Anzahl der beizubehaltenden Metriken**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `^([2-9]\d{3}|[1-9]\d{4,})$`

`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 ]

`PublishInterval`  <a name="cw-metrics-PublishInterval"></a>
Die maximale Wartezeit in Sekunden, die bis zur Veröffentlichung von Batch-Metriken für einen bestimmten Namespace vergehen kann. Der maximale Wert beträgt 900. Um den Konnektor so zu konfigurieren, dass er Metriken veröffentlicht, sobald sie empfangen werden (ohne Batching), geben Sie 0 an.  
Der Connector veröffentlicht, CloudWatch nachdem er 20 Metriken im selben Namespace oder nach dem angegebenen Intervall empfangen hat.  
Der Konnektor garantiert nicht die Reihenfolge der veröffentlichten Ereignisse.
Anzeigename in der AWS IoT Konsole: **Veröffentlichungsintervall**  
Erforderlich: `true`  
Typ: `string`  
Zulässige Werte: `0 - 900`  
Gültiges Muster: `[0-9]|[1-9]\d|[1-9]\d\d|900`

`PublishRegion`  <a name="cw-metrics-PublishRegion"></a>
Das AWS-Region , an das CloudWatch Metriken gepostet werden sollen. Dieser Wert überschreibt die standardmäßige Greengrass-Metrik-Region. Er ist nur bei der Veröffentlichung von regionsübergreifenden Metriken erforderlich.  
Anzeigename in der AWS IoT Konsole: **Region veröffentlichen**  
Erforderlich: `false`  
Typ: `string`  
Gültiges Muster: `^$|([a-z]{2}-[a-z]+-\d{1})`

`MemorySize`  <a name="cw-metrics-MemorySize"></a>
Der Speicher (in KB), der dem Konnektor zugewiesen werden soll.  
Anzeigename in der AWS IoT Konsole: **Speichergröße**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `^[0-9]+$`

`MaxMetricsToRetain`  <a name="cw-metrics-MaxMetricsToRetain"></a>
Die maximale Anzahl von Metriken über alle Namespaces hinweg, die im Speicher gespeichert werden können, bevor sie durch neue Metriken ersetzt werden. Der minimale Wert beträgt 2000.  
Diese Begrenzung gilt, wenn keine Verbindung zum Internet besteht und der Konnektor beginnt, die Metriken zu puffern, um sie später zu veröffentlichen. Wenn der Puffer voll ist, werden die ältesten Metriken durch neue Metriken ersetzt. Metriken in einem bestimmten Namespace werden nur durch Metriken im selben Namespace ersetzt.  
Metriken werden nicht gespeichert, wenn der Host-Prozess für den Konnektor unterbrochen wird. Eine solche Unterbrechung kann beispielsweise während der Gruppenbereitstellung oder beim Neustart des Geräts auftreten.
Anzeigename in der AWS IoT Konsole: **Maximale Anzahl der beizubehaltenden Metriken**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `^([2-9]\d{3}|[1-9]\d{4,})$`

------

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

Der folgende CLI-Befehl erstellt eine `ConnectorDefinition` mit einer ersten Version, die den CloudWatch Metrics-Connector enthält.

```
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{
    "Connectors": [
        {
            "Id": "MyCloudWatchMetricsConnector",
            "ConnectorArn": "arn:aws:greengrass:region::/connectors/CloudWatchMetrics/versions/4",
            "Parameters": {
                "PublishInterval" : "600",
                "PublishRegion" : "us-west-2",
                "MemorySize" : "16",
                "MaxMetricsToRetain" : "2500",
                "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="cloudwatch-metrics-connector-data-input"></a>

Dieser Connector akzeptiert Metriken zu einem MQTT-Thema und veröffentlicht die Metriken unter. CloudWatch Eingabenachrichten müssen im JSON-Format sein.

<a name="topic-filter"></a>**Themenfilter im Abonnement**  
`cloudwatch/metric/put`

**Nachrichten-Eigenschaften**    
`request`  
Informationen über die Metrik in dieser Meldung.  
Das Anforderungsobjekt enthält die metrischen Daten, die an CloudWatch veröffentlicht werden sollen. Die Metrikwerte müssen den Spezifikationen der [https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_PutMetricData.html](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_PutMetricData.html)API entsprechen. Es werden nur die Eigenschaften `namespace`, `metricData.metricName` und `metricData.value` benötigt.  
Erforderlich: `true`  
Typ: `object` der die folgenden Eigenschaften beinhaltet:    
`namespace`  
Der benutzerdefinierte Namespace für die Metrikdaten in dieser Anfrage. CloudWatch verwendet Namespaces als Container für metrische Datenpunkte.  
Sie können keinen Namespace angeben, der mit der reservierten Zeichenfolge beginnt. `AWS/`
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `[^:].*`  
`metricData`  
Die Daten für die Metrik.  
Erforderlich: `true`  
Typ: `object` der die folgenden Eigenschaften beinhaltet:    
`metricName`  
Name der Metrik.  
Erforderlich: `true`  
Typ: `string`  
`dimensions`  
Die Dimensionen, die der Metrik zugeordnet sind. Dimensionen liefern zusätzliche Informationen über die Metrik und ihre Daten. Eine Metrik kann bis zu 10 Dimensionen definieren.  
Dieser Konnektor enthält automatisch eine Dimension mit dem Namen`coreName`, wobei der Wert dem Namen des Kerns entspricht.  
Erforderlich: `false`  
Typ: `array` von Dimensionsobjekten, die die folgenden Eigenschaften enthalten:    
`name`  
Der Dimensionsname.  
Erforderlich: `false`  
Typ: `string`  
`value`  
Der Dimensionswert.  
Erforderlich: `false`  
Typ: `string`  
`timestamp`  
Die Zeit, zu der die metrischen Daten empfangen wurden, ausgedrückt als Anzahl der Sekunden seit dem`Jan 1, 1970 00:00:00 UTC`. Wenn dieser Wert weggelassen wird, verwendet der Konnektor den Zeitpunkt an dem er die Nachricht empfangen hat.  
Erforderlich: `false`  
Typ: `timestamp`  
Wenn Sie zwischen den Versionen 1 und 4 dieses Connectors verwenden, empfehlen wir, den Zeitstempel für jede Metrik separat abzurufen, wenn Sie mehrere Metriken aus einer einzigen Quelle senden. Verwenden Sie keine Variable, um den Zeitstempel zu speichern.  
`value`  
Der Wert für die Metrik.  
CloudWatch lehnt zu kleine oder zu große Werte ab. Die Werte müssen im Bereich von `8.515920e-109` bis `1.174271e+108` (Base 10) oder `2e-360` bis `2e360` (Base 2) liegen. Spezielle Werte (z. B. `NaN`, `+Infinity`, `-Infinity`) werden nicht unterstützt.
Erforderlich: `true`  
Typ: `double`  
`unit`  
Die Einheit der Metrik.  
Erforderlich: `false`  
Typ: `string`  
Zulässige Werte: `Seconds, Microseconds, Milliseconds, Bytes, Kilobytes, Megabytes, Gigabytes, Terabytes, Bits, Kilobits, Megabits, Gigabits, Terabits, Percent, Count, Bytes/Second, Kilobytes/Second, Megabytes/Second, Gigabytes/Second, Terabytes/Second, Bits/Second, Kilobits/Second, Megabits/Second, Gigabits/Second, Terabits/Second, Count/Second, None`

Einschränkungen  
Alle von der CloudWatch [https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_PutMetricData.html](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_PutMetricData.html)API auferlegten Beschränkungen gelten für Metriken, wenn dieser Connector verwendet wird. Von besonderer Bedeutung sind die folgenden Grenzwerte:  
+ 40 KB Limit auf API-Nutzlast
+ 20 Metriken pro API-Anforderung
+ 150 Transaktionen pro Sekunde (TPS) für die `PutMetricData`-API
Weitere Informationen finden Sie unter [CloudWatch Beschränkungen](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_limits.html) im * CloudWatch Amazon-Benutzerhandbuch*.

**Beispieleingabe**  

```
{
   "request": {
       "namespace": "Greengrass",
       "metricData":
           {
               "metricName": "latency",
               "dimensions": [
                   {
                       "name": "hostname",
                       "value": "test_hostname"
                   }
               ],
               "timestamp": 1539027324,
               "value": 123.0,
               "unit": "Seconds"
            }
    }
}
```

## Ausgabedaten
<a name="cloudwatch-metrics-connector-data-output"></a>

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

<a name="topic-filter"></a>**Themenfilter im Abonnement**  
`cloudwatch/metric/put/status`

**Beispielausgabe: Erfolg**  
Die Antwort umfasst den Namespace der Metrikdaten und das `RequestId` Feld aus der CloudWatch Antwort.  

```
{
   "response": {
        "cloudwatch_rid":"70573243-d723-11e8-b095-75ff2EXAMPLE",
        "namespace": "Greengrass",
        "status":"success"
    }
}
```

**Beispielausgabe: Fehler**  

```
{
   "response" : {
        "namespace": "Greengrass",
        "error": "InvalidInputException",
        "error_message":"cw metric is invalid",
        "status":"fail"
   }
}
```
Wenn der Connector einen Fehler erkennt, der wiederholt werden kann (z. B. Verbindungsfehler), versucht er erneut, die Veröffentlichung im nächsten Batch durchzuführen.

## Beispiel für die Verwendung
<a name="cloudwatch-metrics-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](#cloudwatch-metrics-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](#cloudwatch-metrics-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](#cloudwatch-metrics-connector-param).

   1. Fügen Sie Abonnements hinzu, die es dem Konnektor ermöglichen, [Eingabedaten](#cloudwatch-metrics-connector-data-input) zu empfangen und [Ausgabedaten](#cloudwatch-metrics-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="cloudwatch-metrics-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 = 'cloudwatch/metric/put'

def create_request_with_all_fields():
    return  {
        "request": {
            "namespace": "Greengrass_CW_Connector",
            "metricData": {
                "metricName": "Count1",
                "dimensions": [
                    {
                        "name": "test",
                        "value": "test"
                    }
                ],
                "value": 1,
                "unit": "Seconds",
                "timestamp": time.time()
            }
        }
    }

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="cloudwatch-metrics-connector-license"></a>

Der CloudWatch Metrics-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="cloudwatch-metrics-connector-changelog"></a>

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


| Version | Änderungen | 
| --- | --- | 
| 5 | Der Fehler wurde behoben, um Unterstützung für doppelte Zeitstempel in Eingabedaten hinzuzufügen. | 
| 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="cloudwatch-metrics-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)
+ [Verwendung von CloudWatch Amazon-Metriken](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/working_with_metrics.html) im * CloudWatch Amazon-Benutzerhandbuch*
+ [ PutMetricData](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_PutMetricData.html)in der *Amazon CloudWatch API-Referenz*

# Device Defender-Anschluss
<a name="device-defender-connector"></a>

Der Device [Defender-Connector](connectors.md) benachrichtigt Administratoren über Statusänderungen eines Greengrass-Core-Geräts. Dies kann helfen, ungewöhnliches Verhalten zu erkennen, das auf ein gefährdetes Gerät hinweisen könnte.

Dieser Connector liest Systemmetriken aus dem `/proc` Verzeichnis auf dem Kerngerät und veröffentlicht die Metriken dann auf. AWS IoT Device Defender Einzelheiten zur Berichterstattung über Metriken finden Sie in der [Dokumentspezifikation zu Gerätemetriken](https://docs.aws.amazon.com/iot/latest/developerguide/device-defender-detect.html#DetectMetricsMessagesSpec) im *AWS IoT Entwicklerhandbuch*.

Dieser Konnektor hat die folgenden Versionen.


| Version | ARN | 
| --- | --- | 
| 3 | `arn:aws:greengrass:region::/connectors/DeviceDefender/versions/3` | 
| 2 | `arn:aws:greengrass:region::/connectors/DeviceDefender/versions/2` | 
| 1 | `arn:aws:greengrass:region::/connectors/DeviceDefender/versions/1` | 

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

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

Dieser Konnektor hat die folgenden Anforderungen:

------
#### [ Version 3 ]
+ <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-device-defender-req-itdd-config"></a>AWS IoT Device Defender konfiguriert, um die Erkennungsfunktion zu verwenden, um Verstöße zu verfolgen. Weitere Informationen finden Sie unter [Detect](https://docs.aws.amazon.com/iot/latest/developerguide/device-defender-detect.html) im *AWS IoT Entwicklerhandbuch*.
+ <a name="conn-device-defender-req-proc-dir-resource"></a>Eine [lokale Volume-Ressource](access-local-resources.md) in der Greengrass-Gruppe, die auf das `/proc` Verzeichnis verweist. Die Ressource muss die folgenden Eigenschaften verwenden:
  + Quellpfad: `/proc`
  + Zielpfad: `/host_proc` (oder einen Wert, der dem [gültigen Muster](#param-ProcDestinationPath) entspricht)
  + AutoAddGroupOwner: `true`
+ <a name="conn-device-defender-req-psutil-v3"></a>Die [psutil](https://pypi.org/project/psutil/)-Bibliothek muss auf dem Greengrass Core installiert sein. Version 5.7.0 ist die neueste Version, die nachgewiesenermaßen mit dem Konnektor funktioniert.
+ <a name="conn-device-defender-req-cbor-v3"></a>Die [cbor](https://pypi.org/project/cbor/)-Bibliothek muss auf dem Greengrass Core installiert sein. Version 1.0.0 ist die neueste Version, die nachgewiesenermaßen mit dem Konnektor funktioniert.

------
#### [ 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-device-defender-req-itdd-config"></a>AWS IoT Device Defender konfiguriert, um die Erkennungsfunktion zu verwenden, um Verstöße zu verfolgen. Weitere Informationen finden Sie unter [Detect](https://docs.aws.amazon.com/iot/latest/developerguide/device-defender-detect.html) im *AWS IoT Entwicklerhandbuch*.
+ <a name="conn-device-defender-req-proc-dir-resource"></a>Eine [lokale Volume-Ressource](access-local-resources.md) in der Greengrass-Gruppe, die auf das `/proc` Verzeichnis verweist. Die Ressource muss die folgenden Eigenschaften verwenden:
  + Quellpfad: `/proc`
  + Zielpfad: `/host_proc` (oder einen Wert, der dem [gültigen Muster](#param-ProcDestinationPath) entspricht)
  + AutoAddGroupOwner: `true`
+ <a name="conn-device-defender-req-psutil"></a>Die [psutil](https://pypi.org/project/psutil/)-Bibliothek muss auf dem Greengrass Core installiert sein.
+ <a name="conn-device-defender-req-cbor"></a>Die [cbor](https://pypi.org/project/cbor/)-Bibliothek muss auf dem Greengrass Core installiert sein.

------

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

Dieser Konnektor stellt die folgenden Parameter bereit:

`SampleIntervalSeconds`  
Die Anzahl der Sekunden zwischen jedem Zyklus der Erfassung und Berichterstattung von Metriken. Die Mindestwert beträgt 300 Sekunden (5 Minuten).  
Anzeigename in der AWS IoT Konsole: **Berichtsintervall für Metriken**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `^[0-9]*(?:3[0-9][0-9]|[4-9][0-9]{2}|[1-9][0-9]{3,})$`

`ProcDestinationPath-ResourceId`  
Die ID der Volume-Ressource `/proc`.  
Dieser Konnektor hat nur Lesezugriff auf die Ressource.
Anzeigename in der AWS IoT Konsole: **Ressource für das Verzeichnis /proc**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `[a-zA-Z0-9_-]+`

`ProcDestinationPath`  <a name="param-ProcDestinationPath"></a>
Der Ziel-Pfad der Volume-Ressource `/proc`.  
Anzeigename in der AWS IoT Konsole: **Zielpfad der /proc-Ressource**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `\/[a-zA-Z0-9_-]+`

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

Der folgende CLI-Befehl erstellt eine `ConnectorDefinition` mit einer ersten Version, die den Device Defender-Connector enthält.

```
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{
    "Connectors": [
        {
            "Id": "MyDeviceDefenderConnector",
            "ConnectorArn": "arn:aws:greengrass:region::/connectors/DeviceDefender/versions/3",
            "Parameters": {
                "SampleIntervalSeconds": "600",
                "ProcDestinationPath": "/host_proc",
                "ProcDestinationPath-ResourceId": "my-proc-resource"
            }
        }
    ]
}'
```

**Anmerkung**  
Die Lambda-Funktion in diesem Konnektor hat einen [langlebigen Lebenszyklus](lambda-functions.md#lambda-lifecycle).

**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="device-defender-connector-data-input"></a>

Dieser Connector akzeptiert keine MQTT-Nachrichten als Eingabedaten.

## Ausgabedaten
<a name="device-defender-connector-data-output"></a>

Dieser Connector veröffentlicht Sicherheitsmetriken AWS IoT Device Defender als Ausgabedaten.

<a name="topic-filter"></a>**Themenfilter im Abonnement**  
`$aws/things/+/defender/metrics/json`  
Dies ist die Themensyntax, die AWS IoT Device Defender erwartet wird. Der Konnektor ersetzt den `+`-Platzhalter durch den Gerätenamen (z. B. `$aws/things/thing-name/defender/metrics/json`).

**Beispielausgabe**  
Einzelheiten zur Berichterstattung über Metriken finden Sie in der [Dokumentenspezifikation für Gerätemetriken](https://docs.aws.amazon.com/iot/latest/developerguide/device-defender-detect.html#DetectMetricsMessagesSpec) im *AWS IoT Entwicklerhandbuch*.  

```
{
    "header": {
        "report_id": 1529963534,
        "version": "1.0"
    },
    "metrics": {
        "listening_tcp_ports": {
            "ports": [
                {
                    "interface": "eth0",
                    "port": 24800
                },
                {
                    "interface": "eth0",
                    "port": 22
                },
                {
                    "interface": "eth0",
                    "port": 53
                }
            ],
            "total": 3
        },
        "listening_udp_ports": {
            "ports": [
                {
                    "interface": "eth0",
                    "port": 5353
                },
                {
                    "interface": "eth0",
                    "port": 67
                }
            ],
            "total": 2
        },
        "network_stats": {
            "bytes_in": 1157864729406,
            "bytes_out": 1170821865,
            "packets_in": 693092175031,
            "packets_out": 738917180
        },
        "tcp_connections": {
            "established_connections":{
                "connections": [
                    {
                    "local_interface": "eth0",
                    "local_port": 80,
                    "remote_addr": "192.168.0.1:8000"
                    },
                    {
                    "local_interface": "eth0",
                    "local_port": 80,
                    "remote_addr": "192.168.0.1:8000"
                    }
                ],
                "total": 2
            }
        }
    }
}
```

## Lizenzen
<a name="device-defender-connector-license"></a>

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="device-defender-connector-changelog"></a>

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


| Version | Änderungen | 
| --- | --- | 
| 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="device-defender-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)
+ [Device Defender](https://docs.aws.amazon.com/iot/latest/developerguide/device-defender.html) im *AWS IoT Entwicklerhandbuch*

# Docker-Anwendungsbereitstellungs-Konnektor
<a name="docker-app-connector"></a>

Der Greengrass Docker Application Deployment Connector macht es einfacher, Ihre Docker-Images auf einem Core auszuführen. AWS IoT Greengrass Der Konnektor verwendet Docker Compose, um eine Docker-Anwendung mit mehreren Containern aus einer `docker-compose.yml`-Datei zu starten. Insbesondere führt der Konnektor `docker-compose`-Befehle aus, um Docker-Container auf einem Single-Core-Gerät zu verwalten. Weitere Informationen finden Sie unter [Übersicht über Docker Compose](https://docs.docker.com/compose/) in der Docker-Dokumentation. Der Connector kann auf Docker-Images zugreifen, die in Docker-Container-Registern wie Amazon Elastic Container Registry (Amazon ECR), Docker Hub und privaten vertrauenswürdigen Docker-Registern gespeichert sind.

Nachdem Sie die Greengrass-Gruppe bereitgestellt haben, ruft der Connector die neuesten Images ab und startet die Docker-Container. Er führt den Befehl and aus`docker-compose pull`. `docker-compose up` Anschließend veröffentlicht der Konnektor den Status des Befehls in einem [MQTT-Ausgabethema](#docker-app-connector-data-output). Er protokolliert auch Statusinformationen zum Ausführen von Docker-Containern. Auf diese Weise können Sie Ihre Anwendungsprotokolle in Amazon überwachen CloudWatch. Weitere Informationen finden Sie unter [Überwachung mit AWS IoT Greengrass Protokollen](greengrass-logs-overview.md). Der Konnektor startet auch Docker-Container bei jedem Neustart des Greengrass-Daemons. Die Anzahl der Docker-Container, die auf dem Core ausgeführt werden können, hängt von Ihrer Hardware ab.

Die Docker-Container werden außerhalb der Greengrass-Domäne auf dem Core-Gerät ausgeführt, sodass sie nicht auf die Interprozesskommunikation (IPC) des Cores zugreifen können. Sie können jedoch einige Kommunikationskanäle mit Greengrass-Komponenten konfigurieren, z. B. lokale Lambda-Funktionen. Weitere Informationen finden Sie unter [Kommunikation mit Docker-Containern](#docker-app-connector-communicating).

Sie können den Konnektor für Szenarien wie das Hosten eines Webservers oder eines MySQL-Servers auf Ihrem Core-Gerät verwenden. Lokale Services in Ihren Docker-Anwendungen können miteinander, mit anderen Prozessen in der lokalen Umgebung und mit Cloud-Services kommunizieren. Sie können beispielsweise einen Webserver auf dem Core ausführen, der Anfragen von Lambda-Funktionen an einen Webdienst in der Cloud sendet.

Dieser Konnektor wird im [No container (Kein Container)](lambda-group-config.md#no-container-mode)-Isolationsmodus ausgeführt, so dass Sie ihn für eine Greengrass-Gruppe bereitstellen können, die ohne Greengrass-Containerisierung ausgeführt wird.

Dieser Connector hat die folgenden Versionen.


| Version | ARN | 
| --- | --- | 
| 7 | `arn:aws:greengrass:region::/connectors/DockerApplicationDeployment/versions/7` | 
| 6 | `arn:aws:greengrass:region::/connectors/DockerApplicationDeployment/versions/6` | 
| 5 | `arn:aws:greengrass:region::/connectors/DockerApplicationDeployment/versions/5` | 
| 4 | `arn:aws:greengrass:region::/connectors/DockerApplicationDeployment/versions/4` | 
| 3 | `arn:aws:greengrass:region::/connectors/DockerApplicationDeployment/versions/3` | 
| 2 | `arn:aws:greengrass:region::/connectors/DockerApplicationDeployment/versions/2` | 
| 1 | `arn:aws:greengrass:region::/connectors/DockerApplicationDeployment/versions/1` | 

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

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

Dieser Konnektor hat die folgenden Anforderungen:
+ AWS IoT Greengrass Kernsoftware v1.10 oder höher.
**Anmerkung**  
Dieser Connector wird auf OpenWrt Distributionen nicht unterstützt.
+ <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.
+ Mindestens 36 MB RAM auf dem Greengrass Core für den Konnektor, um laufende Docker-Container zu überwachen. Der Gesamtspeicherbedarf hängt von der Anzahl der Docker-Container ab, die auf dem Core ausgeführt werden.
+ [Docker Engine](https://docs.docker.com/install/) 1.9.1 oder höher muss auf dem Greengrass Core installiert sein. Version 19.0.3 ist die neueste Version, die nachgewiesenermaßen mit dem Konnektor funktioniert.

  Die ausführbare `docker`-Datei muss sich im Verzeichnis `/usr/bin` oder `/usr/local/bin` befinden.
**Wichtig**  
Es wird empfohlen, einen Anmeldeinformationsspeicher zu installieren, um die lokalen Kopien Ihrer Docker-Anmeldeinformationen zu sichern. Weitere Informationen finden Sie unter [Sicherheitshinweise](#docker-app-connector-security).

  Informationen zur Installation von Docker auf Amazon Linux-Distributionen finden Sie unter [Docker-Grundlagen für Amazon ECS im Amazon](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/docker-basics.html) *Elastic Container Service* Developer Guide.
+ [Docker Compose](https://docs.docker.com/compose/install/) installiert auf dem Greengrass Core. Die ausführbare `docker-compose`-Datei muss sich im Verzeichnis `/usr/bin` oder `/usr/local/bin` befinden.

  Die folgenden Docker Compose-Versionen funktionieren nachgewiesenermaßen mit dem Konnektor.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/greengrass/v1/developerguide/docker-app-connector.html)
+ Eine einzelne Docker Compose-Datei (z. B.`docker-compose.yml`), gespeichert in Amazon Simple Storage Service (Amazon S3). Das Format muss mit der auf dem Core installierten Version von Docker Compose kompatibel sein. Sie sollten die Datei testen, bevor Sie sie auf Ihrem Core verwenden. Wenn Sie die Datei bearbeiten, nachdem Sie die Greengrass-Gruppe bereitgestellt haben, müssen Sie die Gruppe erneut bereitstellen, um Ihre lokale Kopie auf dem Core zu aktualisieren.
+ Ein Linux-Benutzer mit der Berechtigung, den lokalen Docker-Daemon aufzurufen und in das Verzeichnis zu schreiben, in dem die lokale Kopie Ihrer Compose-Datei gespeichert ist. Weitere Informationen finden Sie unter [Einrichten des Docker-Benutzers auf dem Core](#docker-app-connector-linux-user).
+ Die [Greengrass-Gruppenrolle](group-role.md) muss so konfiguriert sein, dass sie die Aktion `s3:GetObject` für den S3-Bucket zulässt, der Ihre Compose-Datei enthält. Diese Berechtigung wird in der folgenden Beispiel-IAM-Richtlinie gezeigt.

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "AllowAccessToComposeFileS3Bucket",
              "Action": [
                  "s3:GetObject",
                  "s3:GetObjectVersion"
              ],
              "Effect": "Allow",
              "Resource": "arn:aws:s3:::bucket-name/*" 
          }
      ]
  }
  ```

------
**Anmerkung**  
Wenn Ihr S3-Bucket versioning-fähig ist, muss die Rolle the so konfiguriert werden, dass sie die `s3:GetObjectVersion` Aktion ebenfalls zulässt. Weitere Informationen finden Sie unter [Verwenden der Versionierung](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html) im *Amazon Simple Storage Service-Benutzerhandbuch*.

  <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).
+ <a name="docker-app-connector-ecr-perms"></a>Wenn Ihre Docker Compose-Datei auf ein in Amazon ECR gespeichertes Docker-Image verweist, ist die [Greengrass-Gruppenrolle](group-role.md) so konfiguriert, dass sie Folgendes zulässt:
  + `ecr:GetDownloadUrlForLayer`und `ecr:BatchGetImage` Aktionen in Ihren Amazon ECR-Repositorys, die die Docker-Images enthalten.
  + Die `ecr:GetAuthorizationToken`-Aktion für die Ressourcen.

  Repositorys müssen sich im selben AWS-Konto und AWS-Region wie der Connector befinden.
**Wichtig**  
Berechtigungen in der Gruppenrolle können von allen Lambda-Funktionen und -Konnektoren in der Greengrass-Gruppe übernommen werden. Weitere Informationen finden Sie unter [Sicherheitshinweise](#docker-app-connector-security).

  Diese Berechtigungen werden in der folgenden Beispielrichtlinie angezeigt.

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "AllowGetEcrRepositories",
              "Effect": "Allow",
              "Action": [
                  "ecr:GetDownloadUrlForLayer",
                  "ecr:BatchGetImage"
              ],
              "Resource": [
                  "arn:aws:ecr:us-east-1:123456789012:repository/repository-name"
              ]	
          },
          {
              "Sid": "AllowGetEcrAuthToken",
              "Effect": "Allow",
              "Action": "ecr:GetAuthorizationToken",
              "Resource": "*"
          }
      ]
  }
  ```

------

  Weitere Informationen finden Sie unter [Beispiele für Amazon ECR-Repository-Richtlinien](https://docs.aws.amazon.com/AmazonECR/latest/userguide/RepositoryPolicyExamples.html) im *Amazon ECR-Benutzerhandbuch*.

  <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).
+ Wenn Ihre Docker Compose-Datei auf ein Docker-Abbild aus [AWS Marketplace](https://aws.amazon.com/marketplace) verweist, gelten für den Konnektor außerdem folgende Anforderungen:
  + Sie müssen Container-Produkte abonniert haben. AWS Marketplace Weitere Informationen finden Sie unter [Suchen und Abonnieren von Containerprodukten](https://docs.aws.amazon.com/marketplace/latest/buyerguide/buyer-finding-and-subscribing-to-container-products.html) im *AWS Marketplace -Abonnentenhandbuch*.
  + AWS IoT Greengrass muss so konfiguriert sein, dass es lokale Geheimnisse unterstützt, wie in [Secrets Requirements](secrets.md#secrets-reqs) beschrieben. Der Connector verwendet diese Funktion nur, um Ihre Geheimnisse abzurufen AWS Secrets Manager, nicht um sie zu speichern.
  + Sie müssen in Secrets Manager für jede AWS Marketplace Registrierung, die ein Docker-Image speichert, auf das in Ihrer Compose-Datei verwiesen wird, ein Geheimnis erstellen. Weitere Informationen finden Sie unter [Zugreifen auf Docker-Images aus privaten Repositorys](#access-private-repositories).
+ Wenn Ihre Docker Compose-Datei auf ein Docker-Image aus privaten Repositorys in anderen Registern als Amazon ECR verweist, z. B. Docker Hub, hat der Connector auch die folgenden Anforderungen:
  + AWS IoT Greengrass [muss so konfiguriert sein, dass es lokale Geheimnisse unterstützt, wie in Secrets Requirements beschrieben.](secrets.md#secrets-reqs) Der Connector verwendet diese Funktion nur, um Ihre Geheimnisse abzurufen AWS Secrets Manager, nicht um sie zu speichern.
  + Sie müssen in Secrets Manager für jedes private Repository, das ein Docker-Image speichert, auf das in Ihrer Compose-Datei verwiesen wird, ein Geheimnis erstellen. Weitere Informationen finden Sie unter [Zugreifen auf Docker-Images aus privaten Repositorys](#access-private-repositories).
+ Der Docker-Daemon muss ausgeführt werden, wenn Sie eine Greengrass-Gruppe bereitstellen, die diesen Konnektor enthält.

### Zugreifen auf Docker-Images aus privaten Repositorys
<a name="access-private-repositories"></a>

Wenn Sie Anmeldeinformationen verwenden, um auf Ihre Docker-Abbilder zuzugreifen, müssen Sie dem Konnektor erlauben, darauf zuzugreifen. Wie Sie dies tun, hängt davon ab, wo sich das Docker-Abbild befindet.

Für Docker-Images, die in Amazon ECR gespeichert sind, erteilen Sie die Erlaubnis, Ihr Autorisierungstoken in der Greengrass-Gruppenrolle abzurufen. Weitere Informationen finden Sie unter [Voraussetzungen](#docker-app-connector-req).

Für Docker-Images, die in anderen privaten Repositorys oder Registern gespeichert sind, müssen Sie ein Secret erstellen, in AWS Secrets Manager dem Ihre Anmeldeinformationen gespeichert werden. Dazu gehören Docker-Images, die Sie abonniert haben. AWS Marketplace Erstellen Sie ein Secret für jedes Repository. Wenn Sie Ihre Secrets in Secrets Manager aktualisieren, werden die Änderungen bei der nächsten Bereitstellung der Gruppe auf den Core übertragen.

**Anmerkung**  
Secrets Manager ist ein Dienst, mit dem Sie Ihre Anmeldeinformationen, Schlüssel und andere Geheimnisse sicher speichern und verwalten können AWS Cloud. Weitere Informationen finden Sie unter [Was ist AWS Secrets Manager?](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) im *AWS Secrets Manager Benutzerhandbuch*.

Jedes Secret muss die folgenden Schlüssel enthalten:


| Key (Schlüssel) | Value (Wert) | 
| --- | --- | 
| `username` | Der Benutzername, der für den Zugriff auf das Repository oder die Registrierung verwendet wird. | 
| `password` | Das Passwort, das für den Zugriff auf das Repository oder die Registrierung verwendet wird. | 
| `registryUrl` | Der Endpunkt der Registrierung. Dies muss mit der entsprechenden Registrierungs-URL in der Compose-Datei übereinstimmen. | 

**Anmerkung**  
Um standardmäßig auf ein Secret zugreifen AWS IoT Greengrass zu können, muss der Name des Secrets mit *greengrass-* beginnen. Andernfalls muss Ihre Greengrass-Servicerolle Zugriff gewähren. Weitere Informationen finden Sie unter [Erlaubt das Abrufen geheimer Werte AWS IoT Greengrass](secrets.md#secrets-config-service-role).

**So rufen Sie Anmeldeinformationen für Docker-Abbilder aus AWS Marketplace ab**  

1. Rufen Sie Ihr Passwort für Docker-Images mit dem AWS Marketplace `aws ecr get-login-password` Befehl ab. Weitere Informationen finden Sie unter [get-login-password](https://docs.aws.amazon.com/cli/latest/reference/ecr/get-login.html) in der Referenz zum *AWS CLI -Befehl*.

   ```
   aws ecr get-login-password
   ```

1. Rufen Sie die Registrierungs-URL für das Docker-Image ab. Öffnen Sie die AWS Marketplace Website und die Startseite für das Container-Produkt. Wählen Sie unter **Container-Images** die Option **Container-Image-Details anzeigen** aus, um den Benutzernamen und die Registrierungs-URL zu finden.
Verwenden Sie den abgerufenen Benutzernamen, das Passwort und die Registrierungs-URL, um ein Geheimnis für jede AWS Marketplace Registrierung zu erstellen, in der Docker-Images gespeichert werden, auf die in Ihrer Compose-Datei verwiesen wird. 

**So erstellen Sie Secrets (Konsole)**  
Wählen Sie in der AWS Secrets Manager Konsole **Andere Arten von Geheimnissen aus**. Fügen Sie unter **Angabe der Schlüssel/Wert-Paare, die für dieses Secret gespeichert werden sollen** Zeilen für `username`, `password` und `registryUrl` hinzu. Weitere Informationen finden Sie im *AWS Secrets Manager Benutzerhandbuch* unter [Erstellen eines grundlegenden Geheimnisses](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_create-basic-secret.html).  

![\[Erstellen eines Secrets mit Benutzernamen, Passwort und registryUrl-Schlüsseln.\]](http://docs.aws.amazon.com/de_de/greengrass/v1/developerguide/images/connectors/secret-docker-trusted-registry.png)


**So erstellen Sie Secrets (CLI)**  
Verwenden Sie in der AWS CLI den Secrets Manager `create-secret` Manager-Befehl, wie im folgenden Beispiel gezeigt. Weitere Informationen finden Sie unter [create-secret](https://docs.aws.amazon.com/cli/latest/reference/secretsmanager/create-secret.html) in der *AWS CLI Befehlsreferenz*.  

```
aws secretsmanager create-secret --name greengrass-MySecret --secret-string [{"username":"Mary_Major"},{"password":"abc123xyz456"},{"registryUrl":"https://docker.io"}]
```

**Wichtig**  
Es liegt in Ihrer Verantwortung, das `DockerComposeFileDestinationPath`-Verzeichnis zu sichern, in dem Ihre Docker Compose-Datei und die Anmeldeinformationen für Ihre Docker-Abbilder aus privaten Repositorys gespeichert sind. Weitere Informationen finden Sie unter [Sicherheitshinweise](#docker-app-connector-security).

## Parameters
<a name="docker-app-connector-param"></a>

Dieser Konnektor stellt die folgenden Parameter bereit:

------
#### [ Version 7 ]<a name="docker-app-connector-parameters-v1"></a>

`DockerComposeFileS3Bucket`  
Der Name des S3-Buckets, der Ihre Docker Compose-Datei enthält. Achten Sie bei der Erstellung des Buckets darauf, die [Regeln für Bucket-Namen](https://docs.aws.amazon.com/AmazonS3/latest/userguide/BucketRestrictions.html) zu befolgen, die im *Amazon Simple Storage Service-Benutzerhandbuch* beschrieben sind.  
Anzeigename in der AWS IoT Konsole: **Docker Compose-Datei in S3**  
In der Konsole kombiniert die **Docker Compose-Datei in S3**-Eigenschaft die Parameter `DockerComposeFileS3Bucket`, `DockerComposeFileS3Key` und `DockerComposeFileS3Version`.
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster `[a-zA-Z0-9\\-\\.]{3,63}`

`DockerComposeFileS3Key`  
Der Objektschlüssel für Ihre Docker Compose-Datei in Amazon S3. Weitere Informationen, einschließlich Richtlinien zur Benennung von Objektschlüsseln, finden Sie unter [Objektschlüssel und Metadaten](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingMetadata.html) im *Amazon Simple Storage Service-Benutzerhandbuch*.  
In der Konsole kombiniert die **Docker Compose-Datei in S3**-Eigenschaft die Parameter `DockerComposeFileS3Bucket`, `DockerComposeFileS3Key` und `DockerComposeFileS3Version`.
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster `.+`

`DockerComposeFileS3Version`  
Die Objektversion für Ihre Docker Compose-Datei in Amazon S3. Weitere Informationen, einschließlich Richtlinien zur Benennung von Objektschlüsseln, finden Sie [unter Verwenden der Versionierung](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html) im *Amazon Simple Storage Service-Benutzerhandbuch*.  
In der Konsole kombiniert die **Docker Compose-Datei in S3**-Eigenschaft die Parameter `DockerComposeFileS3Bucket`, `DockerComposeFileS3Key` und `DockerComposeFileS3Version`.
Erforderlich: `false`  
Typ: `string`  
Gültiges Muster `.+`

`DockerComposeFileDestinationPath`  
Der absolute Pfad des lokalen Verzeichnisses, das zum Speichern einer Kopie der Docker Compose-Datei verwendet wird. Dies muss ein vorhandenes Verzeichnis sein. Der für `DockerUserId` angegebene Benutzer muss über die Berechtigung zum Erstellen einer Datei in diesem Verzeichnis verfügen. Weitere Informationen finden Sie unter [Den Docker-Benutzer auf dem Core einrichten AWS IoT Greengrass](#docker-app-connector-linux-user).  
In diesem Verzeichnis werden Ihre Docker Compose-Datei und die Anmeldeinformationen für Ihre Docker-Abbilder aus privaten Repositorys gespeichert. Es liegt in Ihrer Verantwortung, dieses Verzeichnis zu sichern. Weitere Informationen finden Sie unter [Sicherheitshinweise](#docker-app-connector-security).
Anzeigename in der AWS IoT Konsole: **Verzeichnispfad für die lokale Compose-Datei**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster `\/.*\/?`  
Beispiel: `/home/username/myCompose`

`DockerUserId`  
Die UID des Linux-Benutzers, unter dem der Konnektor ausgeführt wird. Dieser Benutzer muss zur `docker`-Linux-Gruppe auf dem Core-Gerät gehören und Schreibberechtigungen für das `DockerComposeFileDestinationPath`-Verzeichnis haben. Weitere Informationen finden Sie unter [Einrichten des Docker-Benutzers auf dem Core](#docker-app-connector-linux-user).  
<a name="avoid-running-as-root"></a>Wir empfehlen Ihnen, eine Ausführung als Root zu vermeiden, sofern dies nicht absolut notwendig ist. Wenn Sie den Root-Benutzer angeben, müssen Sie zulassen, dass Lambda-Funktionen auf dem AWS IoT Greengrass Core als Root ausgeführt werden. Weitere Informationen finden Sie unter [Eine Lambda-Funktion als Root ausführen](lambda-group-config.md#lambda-running-as-root).
Anzeigename in der AWS IoT Konsole: **Docker-Benutzer-ID**  
Erforderlich: `false`  
Typ: `string`  
Gültiges Muster: `^[0-9]{1,5}$`

`AWSSecretsArnList`  
Die Amazon-Ressourcennamen (ARNs) der darin enthaltenen Geheimnisse enthalten die Anmeldeinformationen AWS Secrets Manager , die für den Zugriff auf Ihre Docker-Images in privaten Repositorys verwendet werden. Weitere Informationen finden Sie unter [Zugreifen auf Docker-Images aus privaten Repositorys](#access-private-repositories).  
Anzeigename in der AWS IoT Konsole: **Anmeldeinformationen für** private Repositorys  
Erforderlich: `false`. Dieser Parameter ist erforderlich, um auf Docker-Abbilder zuzugreifen, die in privaten Repositorys gespeichert sind.  
Typ: `array` von `string`  
Gültiges Muster: `[( ?,? ?"(arn:(aws(-[a-z]+)):secretsmanager:[a-z0-9-]+:[0-9]{12}:secret:([a-zA-Z0-9\]+/)[a-zA-Z0-9/_+=,.@-]+-[a-zA-Z0-9]+)")]`

`DockerContainerStatusLogFrequency`  
Die Häufigkeit (in Sekunden), mit der der Konnektor Statusinformationen über die Docker-Container protokolliert, die auf dem Core ausgeführt werden. Der Standardwert ist 300 Sekunden (5 Minuten).  
Anzeigename in der AWS IoT Konsole: **Häufigkeit der Protokollierung**  
Erforderlich: `false`  
Typ: `string`  
Gültiges Muster: `^[1-9]{1}[0-9]{0,3}$`

`ForceDeploy`  
Gibt an, ob die Docker-Bereitstellung erzwungen werden soll, wenn sie aufgrund einer unsachgemäßen Bereinigung der letzten Bereitstellung fehlschlägt. Der Standardwert ist `False`.  
**Anzeigename in der AWS IoT Konsole: Bereitstellung erzwingen**  
Erforderlich: `false`  
Typ: `string`  
Gültiges Muster: `^(true|false)$`

`DockerPullBeforeUp`  
Gibt an, ob der Deployer ausgeführt werden soll, `docker-compose pull` bevor er `docker-compose up` für ein pull-down-up Verhalten ausgeführt wird. Der Standardwert ist `True`.  
Anzeigename in der AWS IoT Konsole: **Docker Pull Before Up**  
Erforderlich: `false`  
Typ: `string`  
Gültiges Muster: `^(true|false)$`

`StopContainersOnNewDeployment`  
Gibt an, ob der Connector die von Docker Deployer verwalteten Docker-Container stoppen soll, wenn GGC gestoppt wird (GGC stoppt, wenn eine neue Gruppe bereitgestellt wird oder der Kernel heruntergefahren wird). Der Standardwert ist `True`.  
**Anzeigename in der AWS IoT Konsole: Docker stoppt bei neuer Bereitstellung**  
Wir empfehlen, für diesen Parameter den `True` Standardwert beizubehalten. Der Parameter to `False` bewirkt, dass Ihr Docker-Container auch nach dem Beenden des AWS IoT Greengrass Cores oder dem Starten einer neuen Bereitstellung weiter ausgeführt wird. Wenn Sie diesen Parameter auf setzen, müssen Sie sicherstellen`False`, dass Ihre Docker-Container im Falle einer Änderung oder Hinzufügung eines `docker-compose` Servicenamens nach Bedarf beibehalten werden.   
Weitere Informationen finden Sie in der Dokumentation zur `docker-compose` Compose-Datei. 
Erforderlich: `false`  
Typ: `string`  
Gültiges Muster: `^(true|false)$`

`DockerOfflineMode`  
Gibt an, ob die vorhandene Docker Compose-Datei verwendet werden soll, wenn sie offline AWS IoT Greengrass gestartet wird. Der Standardwert ist `False`.  
Erforderlich: `false`  
Typ: `string`  
Gültiges Muster: `^(true|false)$`

------
#### [ Version 6 ]<a name="docker-app-connector-parameters-v1"></a>

`DockerComposeFileS3Bucket`  
Der Name des S3-Buckets, der Ihre Docker Compose-Datei enthält. Achten Sie bei der Erstellung des Buckets darauf, die [Regeln für Bucket-Namen](https://docs.aws.amazon.com/AmazonS3/latest/userguide/BucketRestrictions.html) zu befolgen, die im *Amazon Simple Storage Service-Benutzerhandbuch* beschrieben sind.  
Anzeigename in der AWS IoT Konsole: **Docker Compose-Datei in S3**  
In der Konsole kombiniert die **Docker Compose-Datei in S3**-Eigenschaft die Parameter `DockerComposeFileS3Bucket`, `DockerComposeFileS3Key` und `DockerComposeFileS3Version`.
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster `[a-zA-Z0-9\\-\\.]{3,63}`

`DockerComposeFileS3Key`  
Der Objektschlüssel für Ihre Docker Compose-Datei in Amazon S3. Weitere Informationen, einschließlich Richtlinien zur Benennung von Objektschlüsseln, finden Sie unter [Objektschlüssel und Metadaten](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingMetadata.html) im *Amazon Simple Storage Service-Benutzerhandbuch*.  
In der Konsole kombiniert die **Docker Compose-Datei in S3**-Eigenschaft die Parameter `DockerComposeFileS3Bucket`, `DockerComposeFileS3Key` und `DockerComposeFileS3Version`.
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster `.+`

`DockerComposeFileS3Version`  
Die Objektversion für Ihre Docker Compose-Datei in Amazon S3. Weitere Informationen, einschließlich Richtlinien zur Benennung von Objektschlüsseln, finden Sie [unter Verwenden der Versionierung](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html) im *Amazon Simple Storage Service-Benutzerhandbuch*.  
In der Konsole kombiniert die **Docker Compose-Datei in S3**-Eigenschaft die Parameter `DockerComposeFileS3Bucket`, `DockerComposeFileS3Key` und `DockerComposeFileS3Version`.
Erforderlich: `false`  
Typ: `string`  
Gültiges Muster `.+`

`DockerComposeFileDestinationPath`  
Der absolute Pfad des lokalen Verzeichnisses, das zum Speichern einer Kopie der Docker Compose-Datei verwendet wird. Dies muss ein vorhandenes Verzeichnis sein. Der für `DockerUserId` angegebene Benutzer muss über die Berechtigung zum Erstellen einer Datei in diesem Verzeichnis verfügen. Weitere Informationen finden Sie unter [Den Docker-Benutzer auf dem Core einrichten AWS IoT Greengrass](#docker-app-connector-linux-user).  
In diesem Verzeichnis werden Ihre Docker Compose-Datei und die Anmeldeinformationen für Ihre Docker-Abbilder aus privaten Repositorys gespeichert. Es liegt in Ihrer Verantwortung, dieses Verzeichnis zu sichern. Weitere Informationen finden Sie unter [Sicherheitshinweise](#docker-app-connector-security).
Anzeigename in der AWS IoT Konsole: **Verzeichnispfad für die lokale Compose-Datei**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster `\/.*\/?`  
Beispiel: `/home/username/myCompose`

`DockerUserId`  
Die UID des Linux-Benutzers, unter dem der Konnektor ausgeführt wird. Dieser Benutzer muss zur `docker`-Linux-Gruppe auf dem Core-Gerät gehören und Schreibberechtigungen für das `DockerComposeFileDestinationPath`-Verzeichnis haben. Weitere Informationen finden Sie unter [Einrichten des Docker-Benutzers auf dem Core](#docker-app-connector-linux-user).  
<a name="avoid-running-as-root"></a>Wir empfehlen Ihnen, eine Ausführung als Root zu vermeiden, sofern dies nicht absolut notwendig ist. Wenn Sie den Root-Benutzer angeben, müssen Sie zulassen, dass Lambda-Funktionen auf dem AWS IoT Greengrass Core als Root ausgeführt werden. Weitere Informationen finden Sie unter [Eine Lambda-Funktion als Root ausführen](lambda-group-config.md#lambda-running-as-root).
Anzeigename in der AWS IoT Konsole: **Docker-Benutzer-ID**  
Erforderlich: `false`  
Typ: `string`  
Gültiges Muster: `^[0-9]{1,5}$`

`AWSSecretsArnList`  
Die Amazon-Ressourcennamen (ARNs) der darin enthaltenen Geheimnisse enthalten die Anmeldeinformationen AWS Secrets Manager , die für den Zugriff auf Ihre Docker-Images in privaten Repositorys verwendet werden. Weitere Informationen finden Sie unter [Zugreifen auf Docker-Images aus privaten Repositorys](#access-private-repositories).  
Anzeigename in der AWS IoT Konsole: **Anmeldeinformationen für** private Repositorys  
Erforderlich: `false`. Dieser Parameter ist erforderlich, um auf Docker-Abbilder zuzugreifen, die in privaten Repositorys gespeichert sind.  
Typ: `array` von `string`  
Gültiges Muster: `[( ?,? ?"(arn:(aws(-[a-z]+)):secretsmanager:[a-z0-9-]+:[0-9]{12}:secret:([a-zA-Z0-9\]+/)[a-zA-Z0-9/_+=,.@-]+-[a-zA-Z0-9]+)")]`

`DockerContainerStatusLogFrequency`  
Die Häufigkeit (in Sekunden), mit der der Konnektor Statusinformationen über die Docker-Container protokolliert, die auf dem Core ausgeführt werden. Der Standardwert ist 300 Sekunden (5 Minuten).  
Anzeigename in der AWS IoT Konsole: **Häufigkeit der Protokollierung**  
Erforderlich: `false`  
Typ: `string`  
Gültiges Muster: `^[1-9]{1}[0-9]{0,3}$`

`ForceDeploy`  
Gibt an, ob die Docker-Bereitstellung erzwungen werden soll, wenn sie aufgrund einer unsachgemäßen Bereinigung der letzten Bereitstellung fehlschlägt. Der Standardwert ist `False`.  
**Anzeigename in der AWS IoT Konsole: Bereitstellung erzwingen**  
Erforderlich: `false`  
Typ: `string`  
Gültiges Muster: `^(true|false)$`

`DockerPullBeforeUp`  
Gibt an, ob der Deployer ausgeführt werden soll, `docker-compose pull` bevor er `docker-compose up` für ein pull-down-up Verhalten ausgeführt wird. Der Standardwert ist `True`.  
Anzeigename in der AWS IoT Konsole: **Docker Pull Before Up**  
Erforderlich: `false`  
Typ: `string`  
Gültiges Muster: `^(true|false)$`

`StopContainersOnNewDeployment`  
Gibt an, ob der Connector die von Docker Deployer verwalteten Docker-Container stoppen soll, wenn GGC gestoppt wird (wenn eine neue Gruppenbereitstellung erfolgt oder der Kernel heruntergefahren wird). Der Standardwert ist `True`.  
Anzeigename in der AWS IoT Konsole: **Docker** stoppt bei neuer Bereitstellung  
Wir empfehlen, für diesen Parameter den `True` Standardwert beizubehalten. Der Parameter to `False` bewirkt, dass Ihr Docker-Container auch nach dem Beenden des AWS IoT Greengrass Cores oder dem Starten einer neuen Bereitstellung weiter ausgeführt wird. Wenn Sie diesen Parameter auf setzen, müssen Sie sicherstellen`False`, dass Ihre Docker-Container im Falle einer Änderung oder Hinzufügung eines `docker-compose` Servicenamens nach Bedarf beibehalten werden.   
 Weitere Informationen finden Sie in der Dokumentation zur `docker-compose` Compose-Datei. 
Erforderlich: `false`  
Typ: `string`  
Gültiges Muster: `^(true|false)$`

------
#### [ Version 5 ]<a name="docker-app-connector-parameters-v1"></a>

`DockerComposeFileS3Bucket`  
Der Name des S3-Buckets, der Ihre Docker Compose-Datei enthält. Achten Sie bei der Erstellung des Buckets darauf, die [Regeln für Bucket-Namen](https://docs.aws.amazon.com/AmazonS3/latest/userguide/BucketRestrictions.html) zu befolgen, die im *Amazon Simple Storage Service-Benutzerhandbuch* beschrieben sind.  
Anzeigename in der AWS IoT Konsole: **Docker Compose-Datei in S3**  
In der Konsole kombiniert die **Docker Compose-Datei in S3**-Eigenschaft die Parameter `DockerComposeFileS3Bucket`, `DockerComposeFileS3Key` und `DockerComposeFileS3Version`.
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster `[a-zA-Z0-9\\-\\.]{3,63}`

`DockerComposeFileS3Key`  
Der Objektschlüssel für Ihre Docker Compose-Datei in Amazon S3. Weitere Informationen, einschließlich Richtlinien zur Benennung von Objektschlüsseln, finden Sie unter [Objektschlüssel und Metadaten](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingMetadata.html) im *Amazon Simple Storage Service-Benutzerhandbuch*.  
In der Konsole kombiniert die **Docker Compose-Datei in S3**-Eigenschaft die Parameter `DockerComposeFileS3Bucket`, `DockerComposeFileS3Key` und `DockerComposeFileS3Version`.
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster `.+`

`DockerComposeFileS3Version`  
Die Objektversion für Ihre Docker Compose-Datei in Amazon S3. Weitere Informationen, einschließlich Richtlinien zur Benennung von Objektschlüsseln, finden Sie [unter Verwenden der Versionierung](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html) im *Amazon Simple Storage Service-Benutzerhandbuch*.  
In der Konsole kombiniert die **Docker Compose-Datei in S3**-Eigenschaft die Parameter `DockerComposeFileS3Bucket`, `DockerComposeFileS3Key` und `DockerComposeFileS3Version`.
Erforderlich: `false`  
Typ: `string`  
Gültiges Muster `.+`

`DockerComposeFileDestinationPath`  
Der absolute Pfad des lokalen Verzeichnisses, das zum Speichern einer Kopie der Docker Compose-Datei verwendet wird. Dies muss ein vorhandenes Verzeichnis sein. Der für `DockerUserId` angegebene Benutzer muss über die Berechtigung zum Erstellen einer Datei in diesem Verzeichnis verfügen. Weitere Informationen finden Sie unter [Den Docker-Benutzer auf dem Core einrichten AWS IoT Greengrass](#docker-app-connector-linux-user).  
In diesem Verzeichnis werden Ihre Docker Compose-Datei und die Anmeldeinformationen für Ihre Docker-Abbilder aus privaten Repositorys gespeichert. Es liegt in Ihrer Verantwortung, dieses Verzeichnis zu sichern. Weitere Informationen finden Sie unter [Sicherheitshinweise](#docker-app-connector-security).
Anzeigename in der AWS IoT Konsole: **Verzeichnispfad für die lokale Compose-Datei**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster `\/.*\/?`  
Beispiel: `/home/username/myCompose`

`DockerUserId`  
Die UID des Linux-Benutzers, unter dem der Konnektor ausgeführt wird. Dieser Benutzer muss zur `docker`-Linux-Gruppe auf dem Core-Gerät gehören und Schreibberechtigungen für das `DockerComposeFileDestinationPath`-Verzeichnis haben. Weitere Informationen finden Sie unter [Einrichten des Docker-Benutzers auf dem Core](#docker-app-connector-linux-user).  
<a name="avoid-running-as-root"></a>Wir empfehlen Ihnen, eine Ausführung als Root zu vermeiden, sofern dies nicht absolut notwendig ist. Wenn Sie den Root-Benutzer angeben, müssen Sie zulassen, dass Lambda-Funktionen auf dem AWS IoT Greengrass Core als Root ausgeführt werden. Weitere Informationen finden Sie unter [Eine Lambda-Funktion als Root ausführen](lambda-group-config.md#lambda-running-as-root).
Anzeigename in der AWS IoT Konsole: **Docker-Benutzer-ID**  
Erforderlich: `false`  
Typ: `string`  
Gültiges Muster: `^[0-9]{1,5}$`

`AWSSecretsArnList`  
Die Amazon-Ressourcennamen (ARNs) der darin enthaltenen Geheimnisse enthalten die Anmeldeinformationen AWS Secrets Manager , die für den Zugriff auf Ihre Docker-Images in privaten Repositorys verwendet werden. Weitere Informationen finden Sie unter [Zugreifen auf Docker-Images aus privaten Repositorys](#access-private-repositories).  
Anzeigename in der AWS IoT Konsole: **Anmeldeinformationen für** private Repositorys  
Erforderlich: `false`. Dieser Parameter ist erforderlich, um auf Docker-Abbilder zuzugreifen, die in privaten Repositorys gespeichert sind.  
Typ: `array` von `string`  
Gültiges Muster: `[( ?,? ?"(arn:(aws(-[a-z]+)):secretsmanager:[a-z0-9-]+:[0-9]{12}:secret:([a-zA-Z0-9\]+/)[a-zA-Z0-9/_+=,.@-]+-[a-zA-Z0-9]+)")]`

`DockerContainerStatusLogFrequency`  
Die Häufigkeit (in Sekunden), mit der der Konnektor Statusinformationen über die Docker-Container protokolliert, die auf dem Core ausgeführt werden. Der Standardwert ist 300 Sekunden (5 Minuten).  
Anzeigename in der AWS IoT Konsole: **Häufigkeit der Protokollierung**  
Erforderlich: `false`  
Typ: `string`  
Gültiges Muster: `^[1-9]{1}[0-9]{0,3}$`

`ForceDeploy`  
Gibt an, ob die Docker-Bereitstellung erzwungen werden soll, wenn sie aufgrund einer unsachgemäßen Bereinigung der letzten Bereitstellung fehlschlägt. Der Standardwert ist `False`.  
**Anzeigename in der AWS IoT Konsole: Bereitstellung erzwingen**  
Erforderlich: `false`  
Typ: `string`  
Gültiges Muster: `^(true|false)$`

`DockerPullBeforeUp`  
Gibt an, ob der Deployer ausgeführt werden soll, `docker-compose pull` bevor er `docker-compose up` für ein pull-down-up Verhalten ausgeführt wird. Der Standardwert ist `True`.  
Anzeigename in der AWS IoT Konsole: **Docker Pull Before Up**  
Erforderlich: `false`  
Typ: `string`  
Gültiges Muster: `^(true|false)$`

------
#### [ Versions 2 - 4 ]<a name="docker-app-connector-parameters-v1"></a>

`DockerComposeFileS3Bucket`  
Der Name des S3-Buckets, der Ihre Docker Compose-Datei enthält. Achten Sie bei der Erstellung des Buckets darauf, die [Regeln für Bucket-Namen](https://docs.aws.amazon.com/AmazonS3/latest/userguide/BucketRestrictions.html) zu befolgen, die im *Amazon Simple Storage Service-Benutzerhandbuch* beschrieben sind.  
Anzeigename in der AWS IoT Konsole: **Docker Compose-Datei in S3**  
In der Konsole kombiniert die **Docker Compose-Datei in S3**-Eigenschaft die Parameter `DockerComposeFileS3Bucket`, `DockerComposeFileS3Key` und `DockerComposeFileS3Version`.
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster `[a-zA-Z0-9\\-\\.]{3,63}`

`DockerComposeFileS3Key`  
Der Objektschlüssel für Ihre Docker Compose-Datei in Amazon S3. Weitere Informationen, einschließlich Richtlinien zur Benennung von Objektschlüsseln, finden Sie unter [Objektschlüssel und Metadaten](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingMetadata.html) im *Amazon Simple Storage Service-Benutzerhandbuch*.  
In der Konsole kombiniert die **Docker Compose-Datei in S3**-Eigenschaft die Parameter `DockerComposeFileS3Bucket`, `DockerComposeFileS3Key` und `DockerComposeFileS3Version`.
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster `.+`

`DockerComposeFileS3Version`  
Die Objektversion für Ihre Docker Compose-Datei in Amazon S3. Weitere Informationen, einschließlich Richtlinien zur Benennung von Objektschlüsseln, finden Sie [unter Verwenden der Versionierung](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html) im *Amazon Simple Storage Service-Benutzerhandbuch*.  
In der Konsole kombiniert die **Docker Compose-Datei in S3**-Eigenschaft die Parameter `DockerComposeFileS3Bucket`, `DockerComposeFileS3Key` und `DockerComposeFileS3Version`.
Erforderlich: `false`  
Typ: `string`  
Gültiges Muster `.+`

`DockerComposeFileDestinationPath`  
Der absolute Pfad des lokalen Verzeichnisses, das zum Speichern einer Kopie der Docker Compose-Datei verwendet wird. Dies muss ein vorhandenes Verzeichnis sein. Der für `DockerUserId` angegebene Benutzer muss über die Berechtigung zum Erstellen einer Datei in diesem Verzeichnis verfügen. Weitere Informationen finden Sie unter [Den Docker-Benutzer auf dem Core einrichten AWS IoT Greengrass](#docker-app-connector-linux-user).  
In diesem Verzeichnis werden Ihre Docker Compose-Datei und die Anmeldeinformationen für Ihre Docker-Abbilder aus privaten Repositorys gespeichert. Es liegt in Ihrer Verantwortung, dieses Verzeichnis zu sichern. Weitere Informationen finden Sie unter [Sicherheitshinweise](#docker-app-connector-security).
Anzeigename in der AWS IoT Konsole: **Verzeichnispfad für die lokale Compose-Datei**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster `\/.*\/?`  
Beispiel: `/home/username/myCompose`

`DockerUserId`  
Die UID des Linux-Benutzers, unter dem der Konnektor ausgeführt wird. Dieser Benutzer muss zur `docker`-Linux-Gruppe auf dem Core-Gerät gehören und Schreibberechtigungen für das `DockerComposeFileDestinationPath`-Verzeichnis haben. Weitere Informationen finden Sie unter [Einrichten des Docker-Benutzers auf dem Core](#docker-app-connector-linux-user).  
<a name="avoid-running-as-root"></a>Wir empfehlen Ihnen, eine Ausführung als Root zu vermeiden, sofern dies nicht absolut notwendig ist. Wenn Sie den Root-Benutzer angeben, müssen Sie zulassen, dass Lambda-Funktionen auf dem AWS IoT Greengrass Core als Root ausgeführt werden. Weitere Informationen finden Sie unter [Eine Lambda-Funktion als Root ausführen](lambda-group-config.md#lambda-running-as-root).
Anzeigename in der AWS IoT Konsole: **Docker-Benutzer-ID**  
Erforderlich: `false`  
Typ: `string`  
Gültiges Muster: `^[0-9]{1,5}$`

`AWSSecretsArnList`  
Die Amazon-Ressourcennamen (ARNs) der darin enthaltenen Geheimnisse enthalten die Anmeldeinformationen AWS Secrets Manager , die für den Zugriff auf Ihre Docker-Images in privaten Repositorys verwendet werden. Weitere Informationen finden Sie unter [Zugreifen auf Docker-Images aus privaten Repositorys](#access-private-repositories).  
Anzeigename in der AWS IoT Konsole: **Anmeldeinformationen für** private Repositorys  
Erforderlich: `false`. Dieser Parameter ist erforderlich, um auf Docker-Abbilder zuzugreifen, die in privaten Repositorys gespeichert sind.  
Typ: `array` von `string`  
Gültiges Muster: `[( ?,? ?"(arn:(aws(-[a-z]+)):secretsmanager:[a-z0-9-]+:[0-9]{12}:secret:([a-zA-Z0-9\]+/)[a-zA-Z0-9/_+=,.@-]+-[a-zA-Z0-9]+)")]`

`DockerContainerStatusLogFrequency`  
Die Häufigkeit (in Sekunden), mit der der Konnektor Statusinformationen über die Docker-Container protokolliert, die auf dem Core ausgeführt werden. Der Standardwert ist 300 Sekunden (5 Minuten).  
Anzeigename in der AWS IoT Konsole: **Häufigkeit der Protokollierung**  
Erforderlich: `false`  
Typ: `string`  
Gültiges Muster: `^[1-9]{1}[0-9]{0,3}$`

`ForceDeploy`  
Gibt an, ob die Docker-Bereitstellung erzwungen werden soll, wenn sie aufgrund einer unsachgemäßen Bereinigung der letzten Bereitstellung fehlschlägt. Der Standardwert ist `False`.  
**Anzeigename in der AWS IoT Konsole: Bereitstellung erzwingen**  
Erforderlich: `false`  
Typ: `string`  
Gültiges Muster: `^(true|false)$`

------
#### [ Version 1 ]<a name="docker-app-connector-parameters-v1"></a>

`DockerComposeFileS3Bucket`  
Der Name des S3-Buckets, der Ihre Docker Compose-Datei enthält. Achten Sie bei der Erstellung des Buckets darauf, die [Regeln für Bucket-Namen](https://docs.aws.amazon.com/AmazonS3/latest/userguide/BucketRestrictions.html) zu befolgen, die im *Amazon Simple Storage Service-Benutzerhandbuch* beschrieben sind.  
Anzeigename in der AWS IoT Konsole: **Docker Compose-Datei in S3**  
In der Konsole kombiniert die **Docker Compose-Datei in S3**-Eigenschaft die Parameter `DockerComposeFileS3Bucket`, `DockerComposeFileS3Key` und `DockerComposeFileS3Version`.
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster `[a-zA-Z0-9\\-\\.]{3,63}`

`DockerComposeFileS3Key`  
Der Objektschlüssel für Ihre Docker Compose-Datei in Amazon S3. Weitere Informationen, einschließlich Richtlinien zur Benennung von Objektschlüsseln, finden Sie unter [Objektschlüssel und Metadaten](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingMetadata.html) im *Amazon Simple Storage Service-Benutzerhandbuch*.  
In der Konsole kombiniert die **Docker Compose-Datei in S3**-Eigenschaft die Parameter `DockerComposeFileS3Bucket`, `DockerComposeFileS3Key` und `DockerComposeFileS3Version`.
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster `.+`

`DockerComposeFileS3Version`  
Die Objektversion für Ihre Docker Compose-Datei in Amazon S3. Weitere Informationen, einschließlich Richtlinien zur Benennung von Objektschlüsseln, finden Sie [unter Verwenden der Versionierung](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html) im *Amazon Simple Storage Service-Benutzerhandbuch*.  
In der Konsole kombiniert die **Docker Compose-Datei in S3**-Eigenschaft die Parameter `DockerComposeFileS3Bucket`, `DockerComposeFileS3Key` und `DockerComposeFileS3Version`.
Erforderlich: `false`  
Typ: `string`  
Gültiges Muster `.+`

`DockerComposeFileDestinationPath`  
Der absolute Pfad des lokalen Verzeichnisses, das zum Speichern einer Kopie der Docker Compose-Datei verwendet wird. Dies muss ein vorhandenes Verzeichnis sein. Der für `DockerUserId` angegebene Benutzer muss über die Berechtigung zum Erstellen einer Datei in diesem Verzeichnis verfügen. Weitere Informationen finden Sie unter [Den Docker-Benutzer auf dem Core einrichten AWS IoT Greengrass](#docker-app-connector-linux-user).  
In diesem Verzeichnis werden Ihre Docker Compose-Datei und die Anmeldeinformationen für Ihre Docker-Abbilder aus privaten Repositorys gespeichert. Es liegt in Ihrer Verantwortung, dieses Verzeichnis zu sichern. Weitere Informationen finden Sie unter [Sicherheitshinweise](#docker-app-connector-security).
Anzeigename in der AWS IoT Konsole: **Verzeichnispfad für die lokale Compose-Datei**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster `\/.*\/?`  
Beispiel: `/home/username/myCompose`

`DockerUserId`  
Die UID des Linux-Benutzers, unter dem der Konnektor ausgeführt wird. Dieser Benutzer muss zur `docker`-Linux-Gruppe auf dem Core-Gerät gehören und Schreibberechtigungen für das `DockerComposeFileDestinationPath`-Verzeichnis haben. Weitere Informationen finden Sie unter [Einrichten des Docker-Benutzers auf dem Core](#docker-app-connector-linux-user).  
<a name="avoid-running-as-root"></a>Wir empfehlen Ihnen, eine Ausführung als Root zu vermeiden, sofern dies nicht absolut notwendig ist. Wenn Sie den Root-Benutzer angeben, müssen Sie zulassen, dass Lambda-Funktionen auf dem AWS IoT Greengrass Core als Root ausgeführt werden. Weitere Informationen finden Sie unter [Eine Lambda-Funktion als Root ausführen](lambda-group-config.md#lambda-running-as-root).
Anzeigename in der AWS IoT Konsole: **Docker-Benutzer-ID**  
Erforderlich: `false`  
Typ: `string`  
Gültiges Muster: `^[0-9]{1,5}$`

`AWSSecretsArnList`  
Die Amazon-Ressourcennamen (ARNs) der darin enthaltenen Geheimnisse enthalten die Anmeldeinformationen AWS Secrets Manager , die für den Zugriff auf Ihre Docker-Images in privaten Repositorys verwendet werden. Weitere Informationen finden Sie unter [Zugreifen auf Docker-Images aus privaten Repositorys](#access-private-repositories).  
Anzeigename in der AWS IoT Konsole: **Anmeldeinformationen für** private Repositorys  
Erforderlich: `false`. Dieser Parameter ist erforderlich, um auf Docker-Abbilder zuzugreifen, die in privaten Repositorys gespeichert sind.  
Typ: `array` von `string`  
Gültiges Muster: `[( ?,? ?"(arn:(aws(-[a-z]+)):secretsmanager:[a-z0-9-]+:[0-9]{12}:secret:([a-zA-Z0-9\]+/)[a-zA-Z0-9/_+=,.@-]+-[a-zA-Z0-9]+)")]`

`DockerContainerStatusLogFrequency`  
Die Häufigkeit (in Sekunden), mit der der Konnektor Statusinformationen über die Docker-Container protokolliert, die auf dem Core ausgeführt werden. Der Standardwert ist 300 Sekunden (5 Minuten).  
Anzeigename in der AWS IoT Konsole: **Häufigkeit der Protokollierung**  
Erforderlich: `false`  
Typ: `string`  
Gültiges Muster: `^[1-9]{1}[0-9]{0,3}$`

------

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

Der folgende CLI-Befehl erstellt einen `ConnectorDefinition` mit einer ersten Version, die den Greengrass Docker Application Deployment Connector enthält.

```
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{
    "Connectors": [
        {
            "Id": "MyDockerAppplicationDeploymentConnector",
            "ConnectorArn": "arn:aws:greengrass:region::/connectors/DockerApplicationDeployment/versions/5",
            "Parameters": {
                "DockerComposeFileS3Bucket": "amzn-s3-demo-bucket",
                "DockerComposeFileS3Key": "production-docker-compose.yml",
                "DockerComposeFileS3Version": "123",
                "DockerComposeFileDestinationPath": "/home/username/myCompose",
                "DockerUserId": "1000",
                "AWSSecretsArnList": "[\"arn:aws:secretsmanager:region:account-id:secret:greengrass-secret1-hash\",\"arn:aws:secretsmanager:region:account-id:secret:greengrass-secret2-hash\"]",
                "DockerContainerStatusLogFrequency": "30",
                "ForceDeploy": "True",
                "DockerPullBeforeUp": "True"
            }
        }
    ]
}'
```

**Anmerkung**  
Die Lambda-Funktion in diesem Konnektor hat einen [langlebigen Lebenszyklus](lambda-functions.md#lambda-lifecycle).

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

Dieser Konnektor benötigt oder akzeptiert keine Eingabedaten.

## Ausgabedaten
<a name="docker-app-connector-data-output"></a>

Dieser Konnektor veröffentlicht den Status des `docker-compose up`-Befehls als Ausgabedaten.

<a name="topic-filter"></a>**Themenfilter im Abonnement**  
`dockerapplicationdeploymentconnector/message/status`

**Beispielausgabe: Erfolg**  

```
{
  "status":"success",
  "GreengrassDockerApplicationDeploymentStatus":"Successfully triggered docker-compose up", 
  "S3Bucket":"amzn-s3-demo-bucket",
  "ComposeFileName":"production-docker-compose.yml",
  "ComposeFileVersion":"123"
}
```

**Beispielausgabe: Fehler**  

```
{
  "status":"fail",
  "error_message":"description of error",
  "error":"InvalidParameter"
}
```
Der Fehlertyp kann `InvalidParameter` oder `InternalError` sein.

## Den Docker-Benutzer auf dem Core einrichten AWS IoT Greengrass
<a name="docker-app-connector-linux-user"></a>

Der Greengrass Docker Application Deployment Connector wird als der Benutzer ausgeführt, den Sie für den `DockerUserId` Parameter angeben. Wenn Sie keinen Wert angeben, wird der Konnektor als `ggc_user` ausgeführt. Dies ist die standardmäßige Greengrass-Zugriffsidentität.

Damit der Konnektor mit dem Docker-Daemon interagieren kann, muss der Docker-Benutzer zur `docker`-Linux-Gruppe auf dem Core gehören. Der Docker-Benutzer muss auch über Schreibberechtigungen für das `DockerComposeFileDestinationPath`-Verzeichnis verfügen. Hier speichert der Konnektor Ihre lokale `docker-compose.yml`-Datei und die Docker-Anmeldeinformationen.

**Anmerkung**  
Es wird empfohlen, einen Linux-Benutzer zu erstellen, anstatt den Standard-`ggc_user` zu verwenden. Andernfalls kann jede Lambda-Funktion in der Greengrass-Gruppe auf die Compose-Datei und die Docker-Anmeldeinformationen zugreifen.
<a name="avoid-running-as-root"></a>Wir empfehlen Ihnen, eine Ausführung als Root zu vermeiden, sofern dies nicht absolut notwendig ist. Wenn Sie den Root-Benutzer angeben, müssen Sie zulassen, dass Lambda-Funktionen auf dem AWS IoT Greengrass Core als Root ausgeführt werden. Weitere Informationen finden Sie unter [Eine Lambda-Funktion als Root ausführen](lambda-group-config.md#lambda-running-as-root).

1. Erstellen Sie den Benutzer. Sie können den `useradd`-Befehl ausführen und die optionale `-u`-Option zum Zuweisen einer UID hinzufügen. Beispiel:

   ```
   sudo useradd -u 1234 user-name
   ```

1. Fügen Sie den Benutzer der `docker`-Gruppe auf dem Core hinzu. Beispiel:

   ```
   sudo usermod -aG docker user-name
   ```

   Weitere Informationen, einschließlich dem Erstellen der `docker`-Gruppe, finden Sie unter [Verwalten von Docker als Nicht-Root-Benutzer](https://docs.docker.com/install/linux/linux-postinstall/#manage-docker-as-a-non-root-user) in der Docker-Dokumentation.

1. Erteilen Sie dem Benutzer die Berechtigungen, in das für den `DockerComposeFileDestinationPath`-Parameter angegebene Verzeichnis zu schreiben. Beispiel:

   1. So legen Sie den Benutzer als Besitzer des Verzeichnisses fest. In diesem Beispiel wird die UID aus Schritt 1 verwendet.

      ```
      chown 1234 docker-compose-file-destination-path
      ```

   1. So erteilen Sie dem Besitzer Lese- und Schreibberechtigungen.

      ```
      chmod 700 docker-compose-file-destination-path
      ```

      Weitere Informationen finden Sie unter [How To Manage File And Folder Permissions In Linux](https://www.linux.com/tutorials/how-manage-file-and-folder-permissions-linux/) in der Linux Foundation-Dokumentation.

   1. Wenn Sie beim Erstellen des Benutzers keine UID zugewiesen haben oder wenn Sie einen vorhandenen Benutzer verwendet haben, führen Sie den `id`-Befehl aus, um die UID zu suchen.

      ```
      id -u user-name
      ```

      Sie verwenden die UID, um den `DockerUserId`-Parameter für den Konnektor zu konfigurieren.

## Informationen zur Nutzung
<a name="docker-app-connector-usage-info"></a>

Wenn Sie den Greengrass Docker Application Deployment Connector verwenden, sollten Sie die folgenden implementierungsspezifischen Nutzungsinformationen beachten.
+ **Das Präfix für Projektnamen wurde korrigiert.** Der Konnektor stellt das `greengrassdockerapplicationdeployment`-Präfix den Namen der Docker-Container vor, die er startet. Der Konnektor verwendet dieses Präfix als Projektname in den ausgeführten `docker-compose`-Befehlen.
+ **Verhalten beim Protokollieren.** Der Konnektor schreibt Statusinformationen und Fehlerbehebungsinformationen in eine Protokolldatei. Sie können so konfigurieren AWS IoT Greengrass , dass CloudWatch Protokolle an Logs gesendet und Logs lokal geschrieben werden. Weitere Informationen finden Sie unter [Protokollieren für Konnektoren](connectors.md#connectors-logging). Dies ist der Pfad zum lokalen Protokoll für den Konnektor:

  ```
  /greengrass-root/ggc/var/log/user/region/aws/DockerApplicationDeployment.log
  ```

  Sie müssen über Root-Berechtigungen verfügen, um auf lokale Protokolle zugreifen zu können.
+ **Docker-Images werden aktualisiert.** Docker speichert Abbilder auf dem Core-Gerät zwischen. Wenn Sie ein Docker-Abbild aktualisieren und die Änderung an das Core-Gerät weitergeben möchten, stellen Sie sicher, dass Sie das Tag für das Abbild in der Compose-Datei ändern. Änderungen werden wirksam, nachdem die Greengrass-Gruppe bereitgestellt wurde.
+ **10-minütiges Timeout für Aufräumarbeiten.** Wenn der Greengrass-Daemon während eines Neustarts stoppt, wird der `docker-compose down` Befehl initiiert. Alle Docker-Container haben nach der Initiierung maximal 10 Minuten Zeit, um alle `docker-compose down` Bereinigungsvorgänge durchzuführen. Wenn die Bereinigung nicht innerhalb von 10 Minuten abgeschlossen ist, müssen Sie die verbleibenden Container manuell bereinigen. Weitere Informationen finden Sie unter [docker rm](https://docs.docker.com/engine/reference/commandline/rm/) in der Docker-CLI-Dokumentation.
+ **Docker-Befehle ausführen.** Um Probleme zu beheben, können Sie Docker-Befehle in einem Terminalfenster auf dem Core-Gerät ausführen. Führen Sie beispielsweise den folgenden Befehl aus, um die Docker-Container anzuzeigen, die vom Konnektor gestartet wurden:

  ```
  docker ps --filter name="greengrassdockerapplicationdeployment"
  ```
+ **Reservierte Ressourcen-ID.** Der Konnektor verwendet die `DOCKER_DEPLOYER_SECRET_RESOURCE_RESERVED_ID_index`-ID für die Greengrass-Ressourcen, die er in der Greengrass-Gruppe erstellt. Die Ressource IDs muss in der Gruppe eindeutig sein. Weisen Sie daher keine Ressourcen-ID zu, die mit dieser reservierten Ressourcen-ID in Konflikt geraten könnte.
+ **Offline-Modus.** Wenn Sie den `DockerOfflineMode` Konfigurationsparameter auf setzen`True`, kann der Docker-Connector im *Offline-Modus* betrieben werden. Dies kann passieren, wenn eine Greengrass-Gruppenbereitstellung neu gestartet wird, während das Kerngerät offline ist und der Connector keine Verbindung zu Amazon S3 oder Amazon ECR herstellen kann, um die Docker Compose-Datei abzurufen.

  Wenn der Offline-Modus aktiviert ist, versucht der Connector, Ihre Compose-Datei herunterzuladen und `docker login` Befehle auszuführen, wie dies bei einem normalen Neustart der Fall wäre. Wenn diese Versuche fehlschlagen, sucht der Connector nach einer lokal gespeicherten Compose-Datei in dem Ordner, der mit dem `DockerComposeFileDestinationPath` Parameter angegeben wurde. Wenn eine lokale Compose-Datei vorhanden ist, folgt der Konnektor der normalen `docker-compose` Befehlsfolge und bezieht Daten aus lokalen Bildern. Wenn die Compose-Datei oder die lokalen Bilder nicht vorhanden sind, schlägt der Connector fehl. Das Verhalten der `StopContainersOnNewDeployment` Parameter `ForceDeploy` und bleibt im Offline-Modus gleich. 

## Kommunikation mit Docker-Containern
<a name="docker-app-connector-communicating"></a>

AWS IoT Greengrass unterstützt die folgenden Kommunikationskanäle zwischen Greengrass-Komponenten und Docker-Containern:
+ Greengrass Lambda-Funktionen können REST verwenden, APIs um mit Prozessen in Docker-Containern zu kommunizieren. Sie können einen Server in einem Docker-Container einrichten, der einen Port öffnet. Lambda-Funktionen können mit dem Container an diesem Port kommunizieren.
+ Prozesse in Docker-Containern können MQTT-Nachrichten über den lokalen Greengrass-Nachrichtenbroker austauschen. Sie können den Docker-Container als Client-Gerät in der Greengrass-Gruppe einrichten und dann Abonnements erstellen, damit der Container mit Greengrass Lambda-Funktionen, Client-Geräten und anderen Connectoren in der Gruppe oder mit AWS IoT und dem lokalen Shadow-Service kommunizieren kann. Weitere Informationen finden Sie unter [Konfigurieren der MQTT-Kommunikation mit Docker-Containern](#docker-app-connector-mqtt-communication).
+ Die Lambda-Funktionen von Greengrass können eine gemeinsam genutzte Datei aktualisieren, um Informationen an Docker-Container weiterzuleiten. Sie können die Compose-Datei für ein Bind-Mount des freigegebenen Dateipfads für einen Docker-Container verwenden.

### Konfigurieren der MQTT-Kommunikation mit Docker-Containern
<a name="docker-app-connector-mqtt-communication"></a>

Sie können einen Docker-Container als Client-Gerät konfigurieren und ihn einer Greengrass-Gruppe hinzufügen. Anschließend können Sie Abonnements erstellen, die die MQTT-Kommunikation zwischen dem Docker-Container und Greengrass-Komponenten oder AWS IoT ermöglichen. Im folgenden Verfahren erstellen Sie ein Abonnement, mit dem das Docker-Containergerät Schattenaktualisierungsmeldungen vom lokalen Schattenservice empfangen kann. Sie können diesem Muster folgen, um andere Abonnements zu erstellen.

**Anmerkung**  
Bei diesem Verfahren wird davon ausgegangen, dass Sie bereits eine Greengrass-Gruppe und einen Greengrass-Kern (v1.10 oder höher) erstellt haben. Informationen zum Erstellen einer Greengrass-Gruppe und eines Greengrass-Kerns finden Sie unter[Erste Schritte mit AWS IoT Greengrass](gg-gs.md).

**Um einen Docker-Container als Client-Gerät zu konfigurieren und ihn einer Greengrass-Gruppe hinzuzufügen**

1. Erstellen Sie einen Ordner auf dem Core-Gerät, um die Zertifikate und Schlüssel zu speichern, die zur Authentifizierung des Greengrass-Geräts verwendet werden.

   Der Dateipfad muss auf dem Docker-Container gemountet werden, den Sie starten möchten. Das folgende Snippet zeigt, wie Sie einen Dateipfad in Ihrer Compose-Datei mounten. Stellt in diesem Beispiel den Ordner *path-to-device-certs* dar, den Sie in diesem Schritt erstellt haben.

   ```
   version: '3.3'
   services:
     myService:
       image: user-name/repo:image-tag
       volumes:
         -  /path-to-device-certs/:/path-accessible-in-container
   ```

1. <a name="console-gg-groups"></a>Erweitern Sie im Navigationsbereich der AWS IoT Konsole unter **Verwalten** die Option **Greengrass-Geräte** und wählen Sie dann **Gruppen (V1)** aus.

1. <a name="group-choose-target-group"></a>Wählen Sie die Zielgruppe aus.

1. <a name="gg-group-add-device"></a>Wählen Sie auf der Gruppenkonfigurationsseite die Option **Client-Geräte** und dann **Associate** aus.

1. <a name="gg-group-create-device"></a>Wählen **Sie im Modal Ein Client-Gerät mit dieser Gruppe verknüpfen** die Option **Neues Objekt erstellen AWS IoT aus**.

   Die Seite „**Dinge erstellen**“ wird auf einer neuen Registerkarte geöffnet.

1. <a name="gg-group-create-single-thing"></a>Wählen Sie auf der Seite „**Dinge erstellen**“ die Option „**Einzelnes Ding erstellen**“ und dann „**Weiter**“ aus.

1. Geben Sie auf der Seite „**Eigenschaften des Objekts angeben**“ einen Namen für das Gerät ein und wählen Sie dann **Weiter** aus.

1. <a name="gg-group-create-device-configure-certificate"></a>Wählen Sie auf der Seite **Gerätezertifikat konfigurieren** die Option **Weiter** aus.

1. <a name="gg-group-create-device-attach-policy"></a>Führen Sie auf der Seite **Richtlinien an Zertifikat anhängen** einen der folgenden Schritte aus:
   + Wählen Sie eine bestehende Richtlinie aus, die Berechtigungen gewährt, die Client-Geräte benötigen, und wählen Sie dann **Ding erstellen** aus.

     Es öffnet sich ein Fenster, in dem Sie die Zertifikate und Schlüssel herunterladen können, die das Gerät für die Verbindung mit dem Core AWS Cloud und dem Core verwendet.
   + Erstellen Sie eine neue Richtlinie, die Client-Geräteberechtigungen gewährt, und fügen Sie sie an. Gehen Sie wie folgt vor:

     1. Wählen Sie **Richtlinie erstellen** aus.

        Die Seite **Create policy (Richtlinie erstellen)** wird in einer neuen Registerkarte geöffnet.

     1. Führen Sie auf der Seite **Create policy (Richtlinie erstellen)** die folgenden Schritte aus:

        1. Geben Sie als **Richtlinienname** einen Namen ein, der die Richtlinie beschreibt, z. **GreengrassV1ClientDevicePolicy** B.

        1. Wählen Sie auf der Registerkarte **Richtlinienerklärungen** unter **Richtliniendokument die** Option **JSON** aus.

        1. Geben Sie das folgende Richtliniendokument ein. Diese Richtlinie ermöglicht es dem Client-Gerät, Greengrass-Kerne zu erkennen und zu allen MQTT-Themen zu kommunizieren. Informationen darüber, wie Sie den Zugriff dieser Richtlinie einschränken können, finden Sie unter. [Geräteauthentifizierung und Autorisierung für AWS IoT Greengrass](device-auth.md)

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

****  

           ```
           {
             "Version":"2012-10-17",		 	 	 
             "Statement": [
               {
                 "Effect": "Allow",
                 "Action": [
                   "iot:Publish",
                   "iot:Subscribe",
                   "iot:Connect",
                   "iot:Receive"
                 ],
                 "Resource": [
                   "*"
                 ]
               },
               {
                 "Effect": "Allow",
                 "Action": [
                   "greengrass:*"
                 ],
                 "Resource": [
                   "*"
                 ]
               }
             ]
           }
           ```

------

        1. Wählen Sie **Create** (Erstellen) aus, um die Richtlinie zu erstellen.

     1. Kehren Sie zur Browser-Registerkarte zurück, auf der die Seite **Richtlinien an Zertifikat anhängen** geöffnet ist. Gehen Sie wie folgt vor:

        1. Wählen Sie in der Liste **Richtlinien** die Richtlinie aus, die Sie erstellt haben, z. **GreengrassV1ClientDevicePolicy**B.

           Wenn Sie die Richtlinie nicht sehen, klicken Sie auf die Schaltfläche „Aktualisieren“.

        1. Wählen Sie **Objekt erstellen** aus.

           Es öffnet sich ein Fenster, in dem Sie die Zertifikate und Schlüssel herunterladen können, die das Gerät für die Verbindung mit dem Core AWS Cloud und dem Core verwendet.

1. <a name="gg-group-create-device-download-certs"></a>**Laden Sie im Modal Zertifikate und Schlüssel** herunterladen die Zertifikate des Geräts herunter.
**Wichtig**  
Laden Sie die Sicherheitsressourcen herunter, bevor Sie „**Fertig**“ wählen.

   Gehen Sie wie folgt vor:

   1. Wählen Sie **unter Gerätezertifikat** die Option **Herunterladen** aus, um das Gerätezertifikat herunterzuladen.

   1. Wählen Sie unter **Datei mit öffentlichem Schlüssel** die Option **Herunterladen** aus, um den öffentlichen Schlüssel für das Zertifikat herunterzuladen.

   1. Wählen Sie unter **Datei mit privatem Schlüssel** die Option **Herunterladen** aus, um die Datei mit dem privaten Schlüssel für das Zertifikat herunterzuladen.

   1. Lesen Sie die [Serverauthentifizierung](https://docs.aws.amazon.com/iot/latest/developerguide/server-authentication.html) im *AWS IoT Entwicklerhandbuch* und wählen Sie das entsprechende Root-CA-Zertifikat aus. Wir empfehlen die Verwendung von Amazon Trust Services (ATS) -Endpunkten und ATS-Root-CA-Zertifikaten. Wählen Sie unter **Root-CA-Zertifikate** die Option **Herunterladen** für ein Root-CA-Zertifikat aus.

   1. Wählen Sie **Fertig** aus.

   Notieren Sie sich die Zertifikat-ID, die in den Dateinamen für das Gerätezertifikat und die Schlüssel häufig vorkommt. Sie benötigen sie später.

1. Kopieren Sie die Zertifikate und Schlüssel in den Ordner, den Sie in Schritt 1 erstellt haben.

Erstellen Sie als Nächstes ein Abonnement in der Gruppe. In diesem Beispiel können Sie ein Abonnement erstellen, damit das Docker-Containergerät MQTT-Nachrichten vom lokalen Schattenservice empfangen kann.

**Anmerkung**  
Die maximale Größe eines Schattendokuments beträgt 8 KB. Weitere Informationen finden Sie unter [AWS IoT -Kontingente](https://docs.aws.amazon.com/iot/latest/developerguide/limits-iot.html) im *AWS IoT -Entwicklerhandbuch*.

**So erstellen Sie ein Abonnement, mit dem das Docker-Containergerät MQTT-Nachrichten vom lokalen Schattenservice empfangen kann**

1. <a name="shared-subscriptions-addsubscription"></a>Wählen Sie auf der Gruppenkonfigurationsseite die Registerkarte **Abonnements** und dann **Abonnement hinzufügen** aus.

1. Konfigurieren Sie auf der Seite **Select your source and target** die Quelle und das Ziel wie folgt:

   1. Wählen Sie für **Eine Quelle auswählen** die Option **Services** und danach **Local Shadow Service (Service lokaler Schatten)** aus.

   1. Wählen Sie für **Ziel auswählen** die Option **Geräte** und dann Ihr Gerät aus.

   1. Wählen Sie **Weiter** aus.

   1. Wählen Sie auf der Seite **Ihre Daten mit einem Thema filtern** für **Themenfilter** die Option **\$1aws/things/*MyDockerDevice*/shadow/update/accepted** und dann **Weiter** aus. *MyDockerDevice*Ersetzen Sie es durch den Namen des Geräts, das Sie zuvor erstellt haben.

   1. Wählen Sie **Finish** (Abschließen).

Fügen Sie den folgenden Codeausschnitt in das Docker-Abbild ein, das Sie in der Compose-Datei referenzieren. Das ist der Greengrass-Gerätecode. Fügen Sie außerdem Code in Ihrem Docker-Container hinzu, der das Greengrass-Gerät innerhalb des Containers startet. Es kann als separater Prozess im Abbild oder in einem separaten Thread ausgeführt werden.

```
import os
import sys
import time
import uuid

from AWSIoTPythonSDK.core.greengrass.discovery.providers import DiscoveryInfoProvider
from AWSIoTPythonSDK.exception.AWSIoTExceptions import DiscoveryInvalidRequestException
from AWSIoTPythonSDK.MQTTLib import AWSIoTMQTTClient

# Replace thingName with the name you registered for the Docker device.
thingName = "MyDockerDevice"
clientId = thingName

# Replace host with the IoT endpoint for your &AWS-account;.
host = "myPrefix.iot.region.amazonaws.com"

# Replace topic with the topic where the Docker container subscribes.
topic = "$aws/things/MyDockerDevice/shadow/update/accepted"

# Replace these paths based on the download location of the certificates for the Docker container.
rootCAPath = "/path-accessible-in-container/AmazonRootCA1.pem"
certificatePath = "/path-accessible-in-container/certId-certificate.pem.crt"
privateKeyPath = "/path-accessible-in-container/certId-private.pem.key"


# Discover Greengrass cores.
discoveryInfoProvider = DiscoveryInfoProvider()
discoveryInfoProvider.configureEndpoint(host)
discoveryInfoProvider.configureCredentials(rootCAPath, certificatePath, privateKeyPath)
discoveryInfoProvider.configureTimeout(10)  # 10 seconds.

GROUP_CA_PATH = "./groupCA/"
MQTT_QOS = 1

discovered = False
groupCA = None
coreInfo = None

try:
    # Get discovery info from AWS IoT.
    discoveryInfo = discoveryInfoProvider.discover(thingName)
    caList = discoveryInfo.getAllCas()
    coreList = discoveryInfo.getAllCores()

    # Use first discovery result.
    groupId, ca = caList[0]
    coreInfo = coreList[0]

    # Save the group CA to a local file.
    groupCA = GROUP_CA_PATH + groupId + "_CA_" + str(uuid.uuid4()) + ".crt"
    if not os.path.exists(GROUP_CA_PATH):
        os.makedirs(GROUP_CA_PATH)
    groupCAFile = open(groupCA, "w")
    groupCAFile.write(ca)
    groupCAFile.close()
    discovered = True
except DiscoveryInvalidRequestException as e:
    print("Invalid discovery request detected!")
    print("Type: %s" % str(type(e)))
    print("Error message: %s" % str(e))
    print("Stopping...")
except BaseException as e:
    print("Error in discovery!")
    print("Type: %s" % str(type(e)))
    print("Error message: %s" % str(e))
    print("Stopping...")

myAWSIoTMQTTClient = AWSIoTMQTTClient(clientId)
myAWSIoTMQTTClient.configureCredentials(groupCA, privateKeyPath, certificatePath)


# Try to connect to the Greengrass core.
connected = False
for connectivityInfo in coreInfo.connectivityInfoList:
    currentHost = connectivityInfo.host
    currentPort = connectivityInfo.port
    myAWSIoTMQTTClient.configureEndpoint(currentHost, currentPort)
    try:
        myAWSIoTMQTTClient.connect()
        connected = True
    except BaseException as e:
        print("Error in connect!")
        print("Type: %s" % str(type(e)))
        print("Error message: %s" % str(e))
    if connected:
        break

if not connected:
    print("Cannot connect to core %s. Exiting..." % coreInfo.coreThingArn)
    sys.exit(-2)

# Handle the MQTT message received from GGShadowService.
def customCallback(client, userdata, message):
    print("Received an MQTT message")
    print(message)

# Subscribe to the MQTT topic.
myAWSIoTMQTTClient.subscribe(topic, MQTT_QOS, customCallback)

# Keep the process alive to listen for messages.
while True:
    time.sleep(1)
```

## Sicherheitshinweise
<a name="docker-app-connector-security"></a>

Wenn Sie den Greengrass Docker Application Deployment Connector verwenden, sollten Sie die folgenden Sicherheitsaspekte beachten.

  
**Lokale Speicherung der Docker Compose-Datei**  
Der Konnektor speichert eine Kopie der Compose-Datei in dem für den `DockerComposeFileDestinationPath`-Parameter angegebenen Verzeichnis.  
Es liegt in Ihrer Verantwortung, dieses Verzeichnis zu sichern. Sie sollten Dateisystemberechtigungen verwenden, um den Zugriff auf das Verzeichnis zu beschränken.

  
**Lokale Speicherung der Docker-Anmeldeinformationen**  
Wenn Ihre Docker-Abbilder in privaten Repositorys gespeichert sind, speichert der Konnektor Ihre Docker-Anmeldeinformationen in dem für den `DockerComposeFileDestinationPath`-Parameter angegebenen Verzeichnis.  
Es liegt in Ihrer Verantwortung, diese Anmeldeinformationen zu sichern. Beispielsweise sollten Sie [credential-helper](https://docs.docker.com/engine/reference/commandline/login/#credentials-store) auf dem Core-Gerät verwenden, wenn Sie Docker Engine installieren.

  
**Installieren von Docker Engine von einer vertrauenswürdigen Quelle**  
Es liegt in Ihrer Verantwortung, Docker Engine von einer vertrauenswürdigen Quelle zu installieren. Dieser Konnektor verwendet den Docker-Daemon auf dem Core-Gerät, um auf Ihre Docker-Komponenten zuzugreifen und Docker-Container zu verwalten.

  
**Umfang der Greengrass-Gruppenrollenberechtigungen**  
Berechtigungen, die Sie in der Greengrass-Gruppenrolle hinzufügen, können von allen Lambda-Funktionen und -Konnektoren in der Greengrass-Gruppe übernommen werden. Dieser Konnektor erfordert Zugriff auf Ihre Docker Compose-Datei, die in einem S3-Bucket gespeichert ist. Außerdem ist Zugriff auf Ihr Amazon ECR-Autorisierungstoken erforderlich, wenn Ihre Docker-Images in einem privaten Repository in Amazon ECR gespeichert sind.

## Lizenzen
<a name="docker-app-connector-license"></a>

Der Greengrass Docker Application Deployment 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="docker-app-connector-changelog"></a>

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


|  Version  |  Änderungen  | 
| --- | --- | 
|  7  |  Es wurde hinzugefügt`DockerOfflineMode`, um eine vorhandene Docker Compose-Datei zu verwenden, wenn sie offline AWS IoT Greengrass gestartet wird. Wiederholungsversuche für den `docker login` Befehl wurden implementiert. Support für 32-Bit UIDs.   | 
|  6  |  Es wurde hinzugefügt`StopContainersOnNewDeployment`, um die Container-Bereinigung zu überschreiben, wenn eine neue Bereitstellung erfolgt oder GGC beendet wird. Sicherere Mechanismen zum Herunterfahren und Starten. Fehlerbehebung bei der YAML-Validierung.  | 
|  5  |  Bilder werden vor der Ausführung `docker-compose down` abgerufen.  | 
|  4  |   pull-before-upVerhalten zum Aktualisieren von Docker-Images hinzugefügt.  | 
|  3  |  Es wurde ein Problem beim Suchen von Umgebungsvariablen behoben.  | 
|  2  |  Der Parameter `ForceDeploy` wurde hinzugefügt.  | 
|  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="docker-app-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)

# IoT-Analytics-Konnektor
<a name="iot-analytics-connector"></a>

**Warnung**  <a name="connectors-extended-life-phase-warning"></a>
Dieser Connector befindet sich in der *Phase mit verlängerter Lebensdauer* und AWS IoT Greengrass wird keine Updates veröffentlichen, die Funktionen, Verbesserungen vorhandener Funktionen, Sicherheitspatches oder Bugfixes bieten. Weitere Informationen finden Sie unter [AWS IoT Greengrass Version 1 Wartungspolitik](maintenance-policy.md).

Der IoT Analytics Analytics-Connector sendet lokale Gerätedaten an AWS IoT Analytics. Sie können diesen Anschluss als zentralen Hub verwenden, um Daten von Sensoren auf dem Greengrass-Core-Gerät und von [verbundenen Client-Geräten](what-is-gg.md#greengrass-devices) zu sammeln. Der Connector sendet die Daten an AWS IoT Analytics Kanäle in der aktuellen Region AWS-Konto und in 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 sammeln, speichern, verarbeiten und abfragen können. Darin 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?](https://docs.aws.amazon.com/iotanalytics/latest/userguide/welcome.html) im *AWS IoT Analytics Benutzerhandbuch*.

Der Konnektor akzeptiert formatierte und unformatierte Daten zu [Eingabe-MQTT-Themen](#iot-analytics-connector-data-input). 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](connectors.md#connectors-inputs-outputs) sind. Dies kann verwendet werden, um Nachrichten von Client-Geräten weiterzuleiten, die zu festen Themen veröffentlichen oder unstrukturierte oder stapelabhängige Daten von Geräten mit eingeschränkten Ressourcen verarbeiten.

Dieser Connector verwendet die [https://docs.aws.amazon.com/iotanalytics/latest/userguide/api.html#cli-iotanalytics-batchputmessage](https://docs.aws.amazon.com/iotanalytics/latest/userguide/api.html#cli-iotanalytics-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 | `arn:aws:greengrass:region::/connectors/IoTAnalytics/versions/4` | 
| 3 | `arn:aws:greengrass:region::/connectors/IoTAnalytics/versions/3` | 
| 2 | `arn:aws:greengrass:region::/connectors/IoTAnalytics/versions/2` | 
| 1 | `arn:aws:greengrass:region::/connectors/IoTAnalytics/versions/1` | 

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

## Voraussetzungen
<a name="iot-analytics-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-iot-analytics-req-regions"></a>Dieser Connector kann nur in Amazon Web Services Services-Regionen verwendet werden, in denen [AWS IoT Greengrass](https://docs.aws.amazon.com/general/latest/gr/greengrass.html)sowohl als auch unterstützt [AWS IoT Analytics](https://docs.aws.amazon.com/general/latest/gr/iot-analytics.html)werden.
+ <a name="conn-iot-analytics-req-ita-config"></a>Alle zugehörigen AWS IoT Analytics Entitäten und Workflows werden erstellt und konfiguriert. Zu den Entitäten gehören Kanäle, Pipeline, Datastores und Datasets. Weitere Informationen finden Sie unter [AWS CLI](https://docs.aws.amazon.com/iotanalytics/latest/userguide/getting-started.html) oder [Konsolenprozeduren](https://docs.aws.amazon.com/iotanalytics/latest/userguide/quickstart.html) im *AWS IoT Analytics -Benutzerhandbuch*.
**Anmerkung**  
 AWS IoT Analytics Zielkanäle müssen dasselbe Konto verwenden und sich im selben AWS-Region Connector befinden.
+ <a name="conn-iot-analytics-req-iam-policy"></a>Die [Greengrass-Gruppenrolle](group-role.md) ist so konfiguriert, dass sie die `iotanalytics:BatchPutMessage` Aktion auf Zielkanälen zulässt, wie im folgenden Beispiel für eine IAM-Richtlinie gezeigt. Die Kanäle müssen sich im aktuellen Bereich AWS-Konto und in der Region befinden.

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "Stmt1528133056761",
              "Action": [
                  "iotanalytics:BatchPutMessage"
              ],
              "Effect": "Allow",
              "Resource": [
              "arn:aws:iotanalytics:us-east-1:123456789012:channel/channel_1_name",
      "arn:aws:iotanalytics:us-east-1:123456789012:channel/channel_2_name"
              ]
          }
      ]
  }
  ```

------

  <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-iot-analytics-req-regions"></a>Dieser Connector kann nur in Amazon Web Services Services-Regionen verwendet werden, in denen [AWS IoT Greengrass](https://docs.aws.amazon.com/general/latest/gr/greengrass.html)sowohl als auch unterstützt [AWS IoT Analytics](https://docs.aws.amazon.com/general/latest/gr/iot-analytics.html)werden.
+ <a name="conn-iot-analytics-req-ita-config"></a>Alle zugehörigen AWS IoT Analytics Entitäten und Workflows werden erstellt und konfiguriert. Zu den Entitäten gehören Kanäle, Pipeline, Datastores und Datasets. Weitere Informationen finden Sie unter [AWS CLI](https://docs.aws.amazon.com/iotanalytics/latest/userguide/getting-started.html) oder [Konsolenprozeduren](https://docs.aws.amazon.com/iotanalytics/latest/userguide/quickstart.html) im *AWS IoT Analytics -Benutzerhandbuch*.
**Anmerkung**  
 AWS IoT Analytics Zielkanäle müssen dasselbe Konto verwenden und sich im selben AWS-Region Connector befinden.
+ <a name="conn-iot-analytics-req-iam-policy"></a>Die [Greengrass-Gruppenrolle](group-role.md) ist so konfiguriert, dass sie die `iotanalytics:BatchPutMessage` Aktion auf Zielkanälen zulässt, wie im folgenden Beispiel für eine IAM-Richtlinie gezeigt. Die Kanäle müssen sich im aktuellen Bereich AWS-Konto und in der Region befinden.

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "Stmt1528133056761",
              "Action": [
                  "iotanalytics:BatchPutMessage"
              ],
              "Effect": "Allow",
              "Resource": [
              "arn:aws:iotanalytics:us-east-1:123456789012:channel/channel_1_name",
      "arn:aws:iotanalytics:us-east-1:123456789012:channel/channel_2_name"
              ]
          }
      ]
  }
  ```

------

  <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).

------

## Parameters
<a name="iot-analytics-connector-param"></a>

`MemorySize`  
Die Speichergröße (in KB), die diesem Konnektor zugewiesen werden soll.  
Anzeigename in der AWS IoT Konsole: **Speichergröße**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `^[0-9]+$`

`PublishRegion`  
Das AWS-Region , in dem Ihre AWS IoT Analytics Kanäle erstellt wurden. Verwenden Sie dieselbe Region wie dem Konnektor.  
Diese muss ebenfalls der Region für die Kanäle entsprechen, die in der [Gruppenrolle](#iot-analytics-connector-req) angegeben sind.
Anzeigename in der AWS IoT Konsole: **Region veröffentlichen**  
Erforderlich: `false`  
Typ: `string`  
Gültiges Muster: `^$|([a-z]{2}-[a-z]+-\\d{1})`

`PublishInterval`  
Das Intervall (in Sekunden), in dem ein Stapel empfangener Daten veröffentlicht wird AWS IoT Analytics.  
Anzeigename in der AWS IoT Konsole: **Veröffentlichungsintervall**  
Erforderlich: `false`  
Typ: `string`  
Standardwert: `1`  
Gültiges Muster: `$|^[0-9]+$`

`IotAnalyticsMaxActiveChannels`  
Die maximale Anzahl von AWS IoT Analytics Kanälen, nach denen der Connector aktiv sucht. 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 der AWS 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 der AWS IoT Konsole: **Verhalten beim Löschen der Warteschlange**  
Erforderlich: `false`  
Typ: `string`  
Gültige Werte: `DROP_NEWEST` oder `DROP_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 der AWS IoT Konsole: **Maximale Warteschlangengröße pro Kanal**  
Erforderlich: `false`  
Typ: `string`  
Standardwert: `2048`  
Gültiges Muster: `^$|^[1-9][0-9]*$`

`IotAnalyticsBatchSizePerChannel`  
Die maximale Anzahl von Nachrichten, die in einer Batch-Anfrage an einen AWS IoT Analytics Kanal gesendet werden können. Dieser Wert muss größer als 0 sein.  
Anzeigename in der AWS IoT Konsole: **Maximale Anzahl von Nachrichten, die pro Kanal gebündelt** werden können  
Erforderlich: `false`  
Typ: `string`  
Standardwert: `5`  
Gültiges Muster: `^$|^[1-9][0-9]*$`

`IotAnalyticsDefaultChannelName`  
Der Name des AWS IoT Analytics Kanals, den dieser Connector für Nachrichten verwendet, die an ein vom Kunden definiertes Eingabethema gesendet werden.  
Anzeigename in der AWS IoT Konsole: **Standardname des Kanals**  
Erforderlich: `false`  
Typ: `string`  
Gültiges Muster: `^[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$`

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

Der folgende CLI-Befehl erstellt eine `ConnectorDefinition` 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](lambda-functions.md#lambda-lifecycle).

**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="iot-analytics-connector-data-input"></a>

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](#iot-analytics-connector-data-input-json) 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](connectors.md#connectors-inputs-outputs).

Die Gruppenrolle muss die `iotanalytics:BatchPutMessage`-Aktion auf allen Zielkanälen erlauben. Weitere Informationen finden Sie unter [Voraussetzungen](#iot-analytics-connector-req).

**Themenfilter:** `iotanalytics/channels/+/messages/put`  <a name="iot-analytics-connector-data-input-json"></a>
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 Connector überprüft, IDs ob jede Nachricht in der ausgehenden `BatchPutMessage` Anfrage, an die er sendet, eindeutig ist. AWS IoT Analytics 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` der die folgenden Eigenschaften beinhaltet:    
`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. Vor dem Senden der Nachrichten an AWS IoT Analytics kodiert und formatiert der Connector sie 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](#iot-analytics-connector-data-input-json) 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. Vor dem Senden der Nachrichten an AWS IoT Analytics kodiert und formatiert der Connector sie entsprechend den API-Anforderungen: `BatchPutMessage`  
+ 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
<a name="iot-analytics-connector-data-output"></a>

Dieser Connector veröffentlicht Statusinformationen als Ausgabedaten im MQTT-Thema. Diese Information enthält die Antwort, die von AWS IoT Analytics für jede Eingangsnachricht zurückgegeben wird, an die er empfängt und an die er sendet. AWS IoT Analytics

<a name="topic-filter"></a>**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"
}
```
Wenn der Connector einen Fehler erkennt, der wiederholt werden kann (z. B. Verbindungsfehler), versucht er erneut, die Veröffentlichung im nächsten Batch durchzuführen. Der exponentielle Backoff wird vom SDK abgewickelt. AWS Anfragen mit wiederholbaren Fehlern werden zur weiteren Veröffentlichung entsprechend dem `IotAnalyticsQueueDropBehavior`-Parameter wieder der Kanalwarteschlange hinzugefügt.

## Beispiel für eine Verwendung
<a name="iot-analytics-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](#iot-analytics-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](#iot-analytics-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](#iot-analytics-connector-param).

   1. Fügen Sie Abonnements hinzu, die es dem Konnektor ermöglichen, [Eingabedaten](#iot-analytics-connector-data-input) zu empfangen und [Ausgabedaten](#iot-analytics-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="iot-analytics-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 = '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
<a name="iot-analytics-connector-limits"></a>

Dieser Konnektor unterliegt den folgenden Einschränkungen.
+ Alle Grenzwerte, die von der AWS SDK für Python (Boto3) für die AWS IoT Analytics [https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/iotanalytics.html#IoTAnalytics.Client.batch_put_message](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/iotanalytics.html#IoTAnalytics.Client.batch_put_message)Aktion festgelegt wurden.
+ Alle von der AWS IoT Analytics [ BatchPutMessage](https://docs.aws.amazon.com/iotanalytics/latest/userguide/api.html#cli-iotanalytics-batchputmessage)API auferlegten Kontingente. Weitere Informationen finden Sie unter [Servicekontingente](https://docs.aws.amazon.com/general/latest/gr/iot-analytics.html#limits_iot_analytics) für AWS 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 Kanäle ARNs), sodass das Senden von Daten an regionsübergreifende oder kontoübergreifende Kanäle nicht unterstützt wird.
+ Alle vom Core auferlegten Kontingente. AWS IoT Greengrass Weitere Informationen finden Sie unter [Service Quotas](https://docs.aws.amazon.com/general/latest/gr/greengrass.html#limits_greengrass) für den AWS 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
<a name="iot-analytics-connector-license"></a>

Der IoT Analytics Analytics-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="iot-analytics-connector-changelog"></a>

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


| Version | Änderungen | 
| --- | --- | 
| 4 | Fügt den `IsolationMode` Parameter hinzu, 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="iot-analytics-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)
+  [Was ist AWS IoT Analytics?](https://docs.aws.amazon.com/iotanalytics/latest/userguide/welcome.html) im *AWS IoT Analytics Benutzerhandbuch*

# IoT-Ethernet-IP-Protokolladapteranschluss
<a name="ethernet-ip-connector"></a>

Der [IoT-Ethernet-IP-Protokolladapter-Anschluss](connectors.md) sammelt Daten von lokalen Geräten mithilfe des EtherNet/IP-Protokolls. Sie können diesen Connector verwenden, um Daten von mehreren Geräten zu sammeln und sie in einem `StreamManager` Nachrichtenstream zu veröffentlichen. 

Sie können diesen Connector auch mit dem SiteWise IoT-Connector und Ihrem SiteWise IoT-Gateway verwenden. Ihr Gateway muss die Konfiguration für den Connector bereitstellen. Weitere Informationen finden [Sie unter Konfiguration einer EtherNet/IP (EIP) -Quelle](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/configure-eip-source.html) im SiteWise IoT-Benutzerhandbuch. 

**Anmerkung**  
Dieser Connector wird im Modus „[Keine Container-Isolierung](lambda-group-config.md#no-container-mode)“ ausgeführt, sodass Sie ihn für eine AWS IoT Greengrass Gruppe bereitstellen können, die in einem Docker-Container ausgeführt wird. 

Dieser Connector hat die folgenden Versionen.


| Version | ARN | 
| --- | --- | 
| 2 (empfohlen) | `arn:aws:greengrass:region::/connectors/IoTEIPProtocolAdaptor/versions/2` | 
| 1 | `arn:aws:greengrass:region::/connectors/IoTEIPProtocolAdaptor/versions/1` | 

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

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

Dieser Konnektor hat die folgenden Anforderungen:

------
#### [ Version 1 and 2 ]
+ AWS IoT Greengrass Kernsoftware v1.10.2 oder höher.
+ Stream Manager ist für die AWS IoT Greengrass Gruppe aktiviert.
+ Java 8 wurde auf dem Core-Gerät installiert und der `PATH` Umgebungsvariablen hinzugefügt.
+ Mindestens 256 MB zusätzlicher RAM. Diese Anforderung gilt zusätzlich zu den Anforderungen an den AWS IoT Greengrass Kernspeicher.

**Anmerkung**  
 Dieser Connector ist nur in den folgenden Regionen verfügbar:   
cn-north-1
ap-southeast-1
ap-southeast-2
eu-central-1
eu-west-1
us-east-1
us-west-2

------

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

Dieser Konnektor unterstützt die folgenden Parameter:

`LocalStoragePath`  
Das Verzeichnis auf dem AWS IoT Greengrass Host, in das der SiteWise IoT-Connector persistente Daten schreiben kann. Das Standardverzeichnis ist `/var/sitewise`.  
Anzeigename in der AWS IoT Konsole: **Lokaler Speicherpfad**  
Erforderlich: `false`  
Typ: `string`  
Gültiges Muster: `^\s*$|\/.`

`ProtocolAdapterConfiguration`  
Der Satz von EtherNet/IP-Collector-Konfigurationen, von denen der Connector Daten sammelt oder mit denen er eine Verbindung herstellt. Dies kann eine leere Liste sein.  
Anzeigename in der AWS IoT Konsole: **Konfiguration des Protokolladapters**  
Erforderlich: `true`  
Typ: Eine wohlgeformte JSON-Zeichenfolge, die den Satz der unterstützten Feedback-Konfigurationen definiert.

 Das Folgende ist ein Beispiel für: `ProtocolAdapterConfiguration` 

```
{
    "sources": [
        {
            "type": "EIPSource",
            "name": "TestSource",
            "endpoint": {
                "ipAddress": "52.89.2.42",
                "port": 44818
            },
            "destination": {
                "type": "StreamManager",
                "streamName": "MyOutput_Stream",
                "streamBufferSize": 10
            },
            "destinationPathPrefix": "EIPSource_Prefix",
            "propertyGroups": [
                {
                    "name": "DriveTemperatures",
                    "scanMode": {
                        "type": "POLL",
                        "rate": 10000
                    },
                    "tagPathDefinitions": [
                        {
                            "type": "EIPTagPath",
                            "path": "arrayREAL[0]",
                            "dstDataType": "double"
                        }
                    ]
                }
            ]
        }
    ]
}
```

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

Der folgende CLI-Befehl erstellt einen Connector `ConnectorDefinition` mit einer ersten Version, die den IoT Ethernet IP Protocol Adapter Connector enthält.

```
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version 
'{
    "Connectors": [
        {
            "Id": "MyIoTEIPProtocolConnector",
            "ConnectorArn": "arn:aws:greengrass:region::/connectors/IoTEIPProtocolAdaptor/versions/2",
            "Parameters": {
                "ProtocolAdaptorConfiguration": "{ \"sources\": [{ \"type\": \"EIPSource\", \"name\": \"Source1\", \"endpoint\": { \"ipAddress\": \"54.245.77.218\", \"port\": 44818 }, \"destinationPathPrefix\": \"EIPConnector_Prefix\", \"propertyGroups\": [{ \"name\": \"Values\", \"scanMode\": { \"type\": \"POLL\", \"rate\": 2000 }, \"tagPathDefinitions\": [{ \"type\": \"EIPTagPath\", \"path\": \"arrayREAL[0]\", \"dstDataType\": \"double\" }]}]}]}",
                "LocalStoragePath": "/var/MyIoTEIPProtocolConnectorState"
            }
        }
    ]
}'
```

**Anmerkung**  
Die Lambda-Funktion in diesem Konnektor hat einen [langlebigen Lebenszyklus](lambda-functions.md#lambda-lifecycle).

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

Dieser Konnektor akzeptiert keine MQTT-Nachrichten als Eingabedaten.

## Ausgabedaten
<a name="ethernet-ip-connector-data-output"></a>

Dieser Konnektor veröffentlicht Daten für`StreamManager`. Sie müssen den Zielnachrichtenstream konfigurieren. Die Ausgabenachrichten haben die folgende Struktur:

```
{
    "alias": "string",
    "messages": [
        {
            "name": "string",
            "value": boolean|double|integer|string,
            "timestamp": number,
            "quality": "string"
        }
    ]
}
```

## Lizenzen
<a name="ethernet-ip-connector-license"></a>

Der IoT Ethernet IP Protocol Adapter-Connector umfasst die folgende Software/Lizenzierung von Drittanbietern:
+ [EtherNet/IP-Client](https://github.com/digitalpetri/ethernet-ip/blob/master/LICENSE)
+ [MapDB](https://github.com/jankotek/mapdb/blob/master/LICENSE.txt)
+ [Elsa](https://github.com/jankotek/elsa/blob/master/LICENSE.txt)

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="ethernet-ip-connector-changelog"></a>

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


| Version | Änderungen | Datum | 
| --- | --- | --- | 
| 2 | Diese Version enthält Fehlerkorrekturen. | 23. Dezember 2021 | 
| 1 | Erstversion. | 15. Dezember 2020 | 

<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="ethernet-ip-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)

# SiteWise IoT-Anschluss
<a name="iot-sitewise-connector"></a>

Der SiteWise IoT-Connector sendet lokale Geräte- und Gerätedaten an Anlagenimmobilien in AWS IoT SiteWise. Sie können diesen Connector verwenden, um Daten von mehreren OPC-UA-Servern zu sammeln und im IoT zu veröffentlichen. SiteWise Der Konnektor sendet die Daten an Objekteigenschaften in der aktuellen Region AWS-Konto und in der Region.

**Anmerkung**  
IoT SiteWise ist ein vollständig verwalteter Service, der Daten von industriellen Geräten und Anlagen sammelt, verarbeitet und visualisiert. Sie können Komponenteneigenschaften konfigurieren, die Rohdaten verarbeiten, die von diesem Konnektor an die Messeigenschaften Ihrer Komponenten gesendet werden. Sie können beispielsweise eine Transformationseigenschaft definieren, die die Celsius-Temperaturdatenpunkte eines Geräts in Fahrenheit konvertiert. Sie können auch eine Metrikeigenschaft definieren, die die durchschnittliche stündliche Temperatur berechnet. Weitere Informationen finden Sie unter [Was ist AWS IoT SiteWise?](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/) im *AWS IoT SiteWise -Benutzerhandbuch*.

Der Connector sendet Daten SiteWise mit den OPC-UA-Datenstream-Pfaden, die von den OPC-UA-Servern gesendet werden, an das IoT. Beispielsweise könnte der Datenstream-Pfad `/company/windfarm/3/turbine/7/temperature` den Temperatursensor der Turbine \$17 im Windpark \$13 darstellen. Wenn der AWS IoT Greengrass Core die Verbindung zum Internet verliert, speichert der Connector Daten im Cache, bis er erfolgreich eine Verbindung zum herstellen kann. AWS Cloud Sie können die maximale Datenträgerpuffergröße konfigurieren, die zum Zwischenspeichern von Daten verwendet wird. Wenn die Cachegröße die maximale Datenträgerpuffergröße überschreitet, verwirft der Konnektor die ältesten Daten aus der Warteschlange.

Nachdem Sie den SiteWise IoT-Connector konfiguriert und bereitgestellt haben, können Sie ein Gateway und OPC-UA-Quellen in der [ SiteWise IoT-Konsole](https://console.aws.amazon.com/iotsitewise/) hinzufügen. Wenn Sie eine Quelle in der Konsole konfigurieren, können Sie die vom SiteWise IoT-Connector gesendeten OPC-UA-Datenstream-Pfade filtern oder mit einem Präfix versehen. Anweisungen zum Abschluss der Einrichtung des Gateways und der Quellen finden Sie unter [Hinzufügen des Gateways](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/configure-gateway.html#add-gateway) im *AWS IoT SiteWise -Benutzerhandbuch*.

IoT SiteWise empfängt Daten nur aus Datenströmen, die Sie den Messeigenschaften von SiteWise IoT-Anlagen zugeordnet haben. Um Datenstreams Objekteigenschaften zuzuordnen, können Sie den Alias einer Eigenschaft so einstellen, dass er einem OPC-UA-Datenstream-Pfad entspricht. Weitere Informationen zum Definieren von Komponentenmodellen und zum Erstellen von Komponenten finden Sie unter [Modellieren von industriellen Komponenten](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/industrial-asset-models) im *AWS IoT SiteWise -Benutzerhandbuch*.

**Hinweise**  
Sie können den Stream Manager verwenden, um Daten SiteWise von anderen Quellen als OPC-UA-Servern in das IoT hochzuladen. Stream Manager bietet auch anpassbare Unterstützung für Persistenz- und Bandbreitenmanagement. Weitere Informationen finden Sie unter [Datenströme auf dem AWS IoT Greengrass Core verwalten](stream-manager.md).  
Dieser Connector wird im Modus [Keine Container-Isolierung](lambda-group-config.md#no-container-mode) ausgeführt, sodass Sie ihn in einer Greengrass-Gruppe bereitstellen können, die in einem Docker-Container ausgeführt wird.

Dieser Connector hat die folgenden Versionen.


| Version | ARN | 
| --- | --- | 
| 12 (empfohlen) | `arn:aws:greengrass:region::/connectors/IoTSiteWise/versions/12` | 
| 11 | `arn:aws:greengrass:region::/connectors/IoTSiteWise/versions/11` | 
| 10 | `arn:aws:greengrass:region::/connectors/IoTSiteWise/versions/10` | 
| 9 | `arn:aws:greengrass:region::/connectors/IoTSiteWise/versions/9` | 
| 8 | `arn:aws:greengrass:region::/connectors/IoTSiteWise/versions/8` | 
| 7 | `arn:aws:greengrass:region::/connectors/IoTSiteWise/versions/7` | 
| 6 | `arn:aws:greengrass:region::/connectors/IoTSiteWise/versions/6` | 
| 5 | `arn:aws:greengrass:region::/connectors/IoTSiteWise/versions/5` | 
| 4 | `arn:aws:greengrass:region::/connectors/IoTSiteWise/versions/4` | 
| 3 | `arn:aws:greengrass:region::/connectors/IoTSiteWise/versions/3` | 
| 2 | `arn:aws:greengrass:region::/connectors/IoTSiteWise/versions/2` | 
| 1 | `arn:aws:greengrass:region::/connectors/IoTSiteWise/versions/1` | 

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

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

Dieser Konnektor hat die folgenden Anforderungen:

------
#### [ Version 9, 10, 11, and 12 ]

**Wichtig**  
Diese Version führt neue Anforderungen ein: AWS IoT Greengrass Kernsoftware v1.10.2 und [Stream Manager](stream-manager.md).
+ AWS IoT Greengrass Kernsoftware v1.10.2.
+ <a name="conn-sitewise-req-stream-manager"></a>[Stream-Manager](stream-manager.md) muss für die Greengrass-Gruppe aktiviert sein.
+ <a name="conn-sitewise-req-java-8"></a>Java 8 auf dem Core-Gerät installiert und der Umgebungsvariablen PATH hinzugefügt.
+ <a name="conn-sitewise-req-regions"></a>Dieser Connector kann nur in Amazon Web Services Services-Regionen verwendet werden, in denen [AWS IoT Greengrass](https://docs.aws.amazon.com/general/latest/gr/greengrass.html)sowohl [IoT als auch IoT](https://docs.aws.amazon.com/general/latest/gr/iot-sitewise.html) unterstützt SiteWise werden.
+ <a name="conn-sitewise-req-policy-v3"></a>Der Greengrass-Gruppenrolle wurde eine IAM-Richtlinie hinzugefügt. Diese Rolle ermöglicht der AWS IoT Greengrass Gruppe den Zugriff auf die `iotsitewise:BatchPutAssetPropertyValue` Aktion für das Ziel-Root-Asset und seine untergeordneten Objekte, wie im folgenden Beispiel gezeigt. Sie können das `Condition` aus der Richtlinie entfernen, damit der Connector auf alle Ihre SiteWise IoT-Assets zugreifen kann.

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
               "Effect": "Allow",
               "Action": "iotsitewise:BatchPutAssetPropertyValue",
               "Resource": "*",
               "Condition": {
                   "StringLike": {
                       "iotsitewise:assetHierarchyPath": [
                           "/root node asset ID",
                           "/root node asset ID/*"
                       ]
                   }
               }
          }
      ]
  }
  ```

------

  Weitere Informationen finden Sie unter [Hinzufügen und Entfernen von IAM-Richtlinien](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html) im *IAM-Benutzerhandbuch*.

------
#### [ Versions 6, 7, and 8 ]

**Wichtig**  
[Diese Version führt neue Anforderungen ein: AWS IoT Greengrass Kernsoftware v1.10.0 und Stream Manager.](stream-manager.md)
+ <a name="conn-sitewise-req-ggc-1010"></a>AWS IoT Greengrass Kernsoftware v1.10.0.
+ <a name="conn-sitewise-req-stream-manager"></a>[Stream-Manager](stream-manager.md) muss für die Greengrass-Gruppe aktiviert sein.
+ <a name="conn-sitewise-req-java-8"></a>Java 8 auf dem Core-Gerät installiert und der Umgebungsvariablen PATH hinzugefügt.
+ <a name="conn-sitewise-req-regions"></a>Dieser Connector kann nur in Amazon Web Services Services-Regionen verwendet werden, in denen [AWS IoT Greengrass](https://docs.aws.amazon.com/general/latest/gr/greengrass.html)sowohl [IoT als auch IoT](https://docs.aws.amazon.com/general/latest/gr/iot-sitewise.html) unterstützt SiteWise werden.
+ <a name="conn-sitewise-req-policy-v3"></a>Der Greengrass-Gruppenrolle wurde eine IAM-Richtlinie hinzugefügt. Diese Rolle ermöglicht der AWS IoT Greengrass Gruppe den Zugriff auf die `iotsitewise:BatchPutAssetPropertyValue` Aktion für das Ziel-Root-Asset und seine untergeordneten Objekte, wie im folgenden Beispiel gezeigt. Sie können das `Condition` aus der Richtlinie entfernen, damit der Connector auf alle Ihre SiteWise IoT-Assets zugreifen kann.

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
               "Effect": "Allow",
               "Action": "iotsitewise:BatchPutAssetPropertyValue",
               "Resource": "*",
               "Condition": {
                   "StringLike": {
                       "iotsitewise:assetHierarchyPath": [
                           "/root node asset ID",
                           "/root node asset ID/*"
                       ]
                   }
               }
          }
      ]
  }
  ```

------

  Weitere Informationen finden Sie unter [Hinzufügen und Entfernen von IAM-Richtlinien](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html) im *IAM-Benutzerhandbuch*.

------
#### [ Version 5 ]
+ <a name="conn-sitewise-req-ggc-194"></a>AWS IoT Greengrass Kernsoftware v1.9.4.
+ <a name="conn-sitewise-req-java-8"></a>Java 8 auf dem Core-Gerät installiert und der Umgebungsvariablen PATH hinzugefügt.
+ <a name="conn-sitewise-req-regions"></a>Dieser Connector kann nur in Amazon Web Services Services-Regionen verwendet werden, in denen [AWS IoT Greengrass](https://docs.aws.amazon.com/general/latest/gr/greengrass.html)sowohl [IoT als auch IoT](https://docs.aws.amazon.com/general/latest/gr/iot-sitewise.html) unterstützt SiteWise werden.
+ <a name="conn-sitewise-req-policy-v3"></a>Der Greengrass-Gruppenrolle wurde eine IAM-Richtlinie hinzugefügt. Diese Rolle ermöglicht der AWS IoT Greengrass Gruppe den Zugriff auf die `iotsitewise:BatchPutAssetPropertyValue` Aktion für das Ziel-Root-Asset und seine untergeordneten Objekte, wie im folgenden Beispiel gezeigt. Sie können das `Condition` aus der Richtlinie entfernen, damit der Connector auf alle Ihre SiteWise IoT-Assets zugreifen kann.

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
               "Effect": "Allow",
               "Action": "iotsitewise:BatchPutAssetPropertyValue",
               "Resource": "*",
               "Condition": {
                   "StringLike": {
                       "iotsitewise:assetHierarchyPath": [
                           "/root node asset ID",
                           "/root node asset ID/*"
                       ]
                   }
               }
          }
      ]
  }
  ```

------

  Weitere Informationen finden Sie unter [Hinzufügen und Entfernen von IAM-Richtlinien](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html) im *IAM-Benutzerhandbuch*.

------
#### [ Version 4 ]
+ <a name="conn-sitewise-req-ggc-1010"></a>AWS IoT Greengrass Kernsoftware v1.10.0.
+ <a name="conn-sitewise-req-java-8"></a>Java 8 auf dem Core-Gerät installiert und der Umgebungsvariablen PATH hinzugefügt.
+ <a name="conn-sitewise-req-regions"></a>Dieser Connector kann nur in Amazon Web Services Services-Regionen verwendet werden, in denen [AWS IoT Greengrass](https://docs.aws.amazon.com/general/latest/gr/greengrass.html)sowohl [IoT als auch IoT](https://docs.aws.amazon.com/general/latest/gr/iot-sitewise.html) unterstützt SiteWise werden.
+ <a name="conn-sitewise-req-policy-v3"></a>Der Greengrass-Gruppenrolle wurde eine IAM-Richtlinie hinzugefügt. Diese Rolle ermöglicht der AWS IoT Greengrass Gruppe den Zugriff auf die `iotsitewise:BatchPutAssetPropertyValue` Aktion für das Ziel-Root-Asset und seine untergeordneten Objekte, wie im folgenden Beispiel gezeigt. Sie können das `Condition` aus der Richtlinie entfernen, damit der Connector auf alle Ihre SiteWise IoT-Assets zugreifen kann.

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
               "Effect": "Allow",
               "Action": "iotsitewise:BatchPutAssetPropertyValue",
               "Resource": "*",
               "Condition": {
                   "StringLike": {
                       "iotsitewise:assetHierarchyPath": [
                           "/root node asset ID",
                           "/root node asset ID/*"
                       ]
                   }
               }
          }
      ]
  }
  ```

------

  Weitere Informationen finden Sie unter [Hinzufügen und Entfernen von IAM-Richtlinien](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html) im *IAM-Benutzerhandbuch*.

------
#### [ Version 3 ]
+ <a name="conn-sitewise-req-ggc-194"></a>AWS IoT Greengrass Kernsoftware v1.9.4.
+ <a name="conn-sitewise-req-java-8"></a>Java 8 auf dem Core-Gerät installiert und der Umgebungsvariablen PATH hinzugefügt.
+ <a name="conn-sitewise-req-regions"></a>Dieser Connector kann nur in Amazon Web Services Services-Regionen verwendet werden, in denen [AWS IoT Greengrass](https://docs.aws.amazon.com/general/latest/gr/greengrass.html)sowohl [IoT als auch IoT](https://docs.aws.amazon.com/general/latest/gr/iot-sitewise.html) unterstützt SiteWise werden.
+ <a name="conn-sitewise-req-policy-v3"></a>Der Greengrass-Gruppenrolle wurde eine IAM-Richtlinie hinzugefügt. Diese Rolle ermöglicht der AWS IoT Greengrass Gruppe den Zugriff auf die `iotsitewise:BatchPutAssetPropertyValue` Aktion für das Ziel-Root-Asset und seine untergeordneten Objekte, wie im folgenden Beispiel gezeigt. Sie können das `Condition` aus der Richtlinie entfernen, damit der Connector auf alle Ihre SiteWise IoT-Assets zugreifen kann.

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
               "Effect": "Allow",
               "Action": "iotsitewise:BatchPutAssetPropertyValue",
               "Resource": "*",
               "Condition": {
                   "StringLike": {
                       "iotsitewise:assetHierarchyPath": [
                           "/root node asset ID",
                           "/root node asset ID/*"
                       ]
                   }
               }
          }
      ]
  }
  ```

------

  Weitere Informationen finden Sie unter [Hinzufügen und Entfernen von IAM-Richtlinien](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html) im *IAM-Benutzerhandbuch*.

------
#### [ Versions 1 and 2 ]
+ <a name="conn-sitewise-req-ggc-194"></a>AWS IoT Greengrass Kernsoftware v1.9.4.
+ <a name="conn-sitewise-req-java-8"></a>Java 8 auf dem Core-Gerät installiert und der Umgebungsvariablen PATH hinzugefügt.
+ <a name="conn-sitewise-req-regions"></a>Dieser Connector kann nur in Amazon Web Services Services-Regionen verwendet werden, in denen [AWS IoT Greengrass](https://docs.aws.amazon.com/general/latest/gr/greengrass.html)sowohl [IoT als auch IoT](https://docs.aws.amazon.com/general/latest/gr/iot-sitewise.html) unterstützt SiteWise werden.
+ <a name="conn-sitewise-req-policy-v1"></a>Der Greengrass-Gruppenrolle wurde eine IAM-Richtlinie hinzugefügt, die den Zugriff auf das Ziel-Root-Asset AWS IoT Core und seine untergeordneten Objekte und die entsprechenden `iotsitewise:BatchPutAssetPropertyValue` Aktionen ermöglicht, wie im folgenden Beispiel gezeigt. Sie können das `Condition` aus der Richtlinie entfernen, damit der Connector auf alle Ihre SiteWise IoT-Assets zugreifen kann.

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
               "Effect": "Allow",
               "Action": "iotsitewise:BatchPutAssetPropertyValue",
               "Resource": "*",
               "Condition": {
                   "StringLike": {
                       "iotsitewise:assetHierarchyPath": [
                           "/root node asset ID",
                           "/root node asset ID/*"
                       ]
                   }
               }
          },
          {
              "Effect": "Allow",
              "Action": [
                   "iot:Connect",
                   "iot:DescribeEndpoint",
                   "iot:Publish",
                   "iot:Receive",
                   "iot:Subscribe"
              ],
              "Resource": "*"
          }
      ]
  }
  ```

------

  Informationen finden Sie im Abschnitt [Hinzufügen und Entfernen von IAM-Identitätsberechtigungen](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html) im *-IAM-Benutzerhandbuch*.

------

## Parameters
<a name="iot-sitewise-connector-param"></a>

------
#### [ Versions 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, and 12 ]<a name="conn-sitewise-params-v2"></a>

`SiteWiseLocalStoragePath`  
Das Verzeichnis auf dem AWS IoT Greengrass Host, in das der SiteWise IoT-Connector persistente Daten schreiben kann. Standardeinstellung: `/var/sitewise`.  
Anzeigename in der AWS IoT Konsole: **Lokaler Speicherpfad**  
Erforderlich: `false`  
Typ: `string`  
Gültiges Muster: `^\s*$|\/.`

`AWSSecretsArnList`  
Eine Liste von Geheimnissen AWS Secrets Manager , die jeweils ein Schlüssel-Wert-Paar aus OPC-UA-Benutzername und Passwort enthalten. Alle Secrets müssen vom Typ Schlüssel-Wert-Paar sein.  
Anzeigename in der AWS IoT Konsole: **Liste** von vier OPC-UA-Geheimnissen ARNs username/password   
Erforderlich: `false`  
Typ: `JsonArrayOfStrings`  
Gültiges Muster: `\[( ?,? ?\"(arn:(aws(-[a-z]+)*):secretsmanager:[a-z0-9\\-]+:[0-9]{12}:secret:([a-zA-Z0-9\\\\]+\/)*[a-zA-Z0-9\/_+=,.@\\-]+-[a-zA-Z0-9]+)*\")*\]`

`MaximumBufferSize`  
Die maximale Größe in GB für die Nutzung von SiteWise IoT-Festplatten. Standardmäßig 10 GB.  
Anzeigename in der AWS IoT Konsole: **Maximale Festplattenpuffergröße**  
Erforderlich: `false`  
Typ: `string`  
Gültiges Muster: `^\s*$|[0-9]+`

------
#### [ Version 1 ]<a name="conn-sitewise-params-v1"></a>

`SiteWiseLocalStoragePath`  
Das Verzeichnis auf dem AWS IoT Greengrass Host, in das der SiteWise IoT-Connector persistente Daten schreiben kann. Standardeinstellung: `/var/sitewise`.  
Anzeigename in der AWS IoT Konsole: **Lokaler Speicherpfad**  
Erforderlich: `false`  
Typ: `string`  
Gültiges Muster: `^\s*$|\/.`

`SiteWiseOpcuaUserIdentityTokenSecretArn`  
Das darin enthaltene Geheimnis enthält AWS Secrets Manager das Schlüssel-Wert-Paar aus OPC-UA-Benutzername und Passwort. Dieses Secret muss ein Schlüssel-Wert-Paar-Typ-Secret sein.  
Anzeigename in der AWS IoT Konsole: **ARN von username/password OPC-UA** Secret  
Erforderlich: `false`  
Typ: `string`  
Gültiges Muster: `^$|arn:(aws(-[a-z]+)*):secretsmanager:[a-z0-9\\-]+:[0-9]{12}:secret:([a-zA-Z0-9\\\\]+/)*[a-zA-Z0-9/_+=,.@\\-]+-[a-zA-Z0-9]+`

`SiteWiseOpcuaUserIdentityTokenSecretArn-ResourceId`  
Die geheime Ressource in der AWS IoT Greengrass Gruppe, die auf einen OPC-UA-Benutzernamen und ein geheimes Passwort verweist.  
Anzeigename in der AWS IoT Konsole: Geheime ** username/password OPC-UA-Ressource**  
Erforderlich: `false`  
Typ: `string`  
Gültiges Muster: `^$|.+`

`MaximumBufferSize`  
Die maximale Größe in GB für die Nutzung von SiteWise IoT-Festplatten. Standardmäßig 10 GB.  
Anzeigename in der AWS IoT Konsole: **Maximale Festplattenpuffergröße**  
Erforderlich: `false`  
Typ: `string`  
Gültiges Muster: `^\s*$|[0-9]+`

------

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

Der folgende AWS CLI Befehl erstellt eine `ConnectorDefinition` mit einer ersten Version, die den SiteWise IoT-Connector enthält.

```
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{
    "Connectors": [
        {
            "Id": "MyIoTSiteWiseConnector",
            "ConnectorArn": "arn:aws:greengrass:region::/connectors/IoTSiteWise/versions/11"
        }
    ]
}'
```

**Anmerkung**  
Die Lambda-Funktionen in diesem Konnektor haben einen [langlebigen Lebenszyklus](lambda-functions.md#lambda-lifecycle).

**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="iot-sitewise-connector-data-input"></a>

Dieser Connector akzeptiert keine MQTT-Nachrichten als Eingabedaten.

## Ausgabedaten
<a name="iot-sitewise-connector-data-output"></a>

Dieser Konnektor veröffentlicht keine MQTT-Nachrichten als Ausgabedaten.

## Einschränkungen
<a name="iot-sitewise-connector-limits"></a>

Dieser Anschluss unterliegt den folgenden allen vom IoT auferlegten Grenzwerten SiteWise, einschließlich der folgenden. Weitere Informationen finden Sie unter [AWS IoT SiteWise Endpunkte und Kontingente](https://docs.aws.amazon.com/general/latest/gr/iot-sitewise.html) im. *Allgemeine AWS-Referenz* 
+ Maximale Anzahl von Gateways pro. AWS-Konto
+ Maximale Anzahl von OPC-UA-Quellen pro Gateway.
+ Maximale Rate an gespeicherten timestamp-quality-value (TQV) Datenpunkten pro. AWS-Konto
+ Maximale Rate der pro Objekteigenschaft gespeicherten TQV-Datenpunkte.

## Lizenzen
<a name="iot-sitewise-connector-license"></a>

------
#### [ Version 9, 10, 11, and 12 ]

Der SiteWise IoT-Connector umfasst die folgende Software/Lizenzierung von Drittanbietern:
+  [MapDB](https://github.com/jankotek/mapdb/blob/master/LICENSE.txt) 
+  [Elsa](https://github.com/jankotek/elsa/blob/master/LICENSE.txt) 
+ [Verfinstere Milo](https://github.com/eclipse/milo/blob/maintenance/0.2/LICENSE)

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.

------
#### [ Versions 6, 7, and 8 ]

Der SiteWise IoT-Connector umfasst die folgende Software/Lizenzierung von Drittanbietern:
+ [Milo](https://github.com/eclipse/milo/) / EDL 1.0

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.

------
#### [ Versions 1, 2, 3, 4, and 5 ]

Der SiteWise IoT-Connector umfasst die folgende Software/Lizenzierung von Drittanbietern:
+ [Milo](https://github.com/eclipse/milo/) / EDL 1.0
+ [Chronicle-Queue](https://github.com/OpenHFT/Chronicle-Queue)/Apache-Lizenz 2.0

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="iot-sitewise-connector-changelog"></a>

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


| Version | Änderungen | Date | 
| --- | --- | --- | 
|  12  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/greengrass/v1/developerguide/iot-sitewise-connector.html)  |  22. Dezember 2021  | 
|  11  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/greengrass/v1/developerguide/iot-sitewise-connector.html)  |  24. März 2021  | 
|  10  |  Konfiguriert`StreamManager`, um die Handhabung zu verbessern, wenn die Quellverbindung verloren geht und wieder hergestellt wird. Diese Version akzeptiert auch OPC-UA-Werte mit einem, `ServerTimestamp` wenn kein `SourceTimestamp` verfügbar ist.  |  22. Januar 2021  | 
|  9  |  Support für benutzerdefinierte `StreamManager` Greengrass-Stream-Ziele, OPC-UA-Deadbanding, benutzerdefinierten Scanmodus und benutzerdefinierte Scanrate eingeführt. Beinhaltet auch eine verbesserte Leistung bei Konfigurationsupdates, die über das SiteWise IoT-Gateway vorgenommen werden.  |  15. Dezember 2020  | 
|  8  |  Verbesserte Stabilität bei intermittierender Netzwerkkonnektivität des Connectors.  |  19. November 2020  | 
|  7  |  Ein Problem mit Gateway-Metriken wurde behoben.  |  14. August 2020  | 
|  6  |  Unterstützung für CloudWatch Metriken und automatische Erkennung neuer OPC-UA-Tags hinzugefügt. Diese Version erfordert [Stream Manager](stream-manager.md) und AWS IoT Greengrass Core-Software v1.10.0 oder höher.  |  29. April 2020  | 
|  5  |  Ein Kompatibilitätsproblem mit der AWS IoT Greengrass Core-Software v1.9.4 wurde behoben.  |  12. Februar 2020  | 
|  4  |  Ein Problem mit der erneuten Verbindung des OPC-UA Servers wurde behoben.  |  7. Februar 2020  | 
|  3  |  Die `iot:*`-Berechtigungsanforderung wurde entfernt.  |  17. Dezember 2019  | 
|  2  |  Unterstützung für mehrere OPC-UA-Secret-Ressourcen hinzugefügt.  |  10. Dezember 2019  | 
|  1  |  Erstversion.  |  02. Dezember 2019  | 

<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="iot-sitewise-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)
+ Weitere Informationen finden Sie in den folgenden Themen im *AWS IoT SiteWise -Benutzerhandbuch*:
  + [Was ist AWS IoT SiteWise?](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/)
  + [Verwenden eines Gateways](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/gateway-connector.html)
  + [ CloudWatch Gateway-Metriken](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/monitor-cloudwatch-metrics.html#gateway-metrics)
  + [Fehlerbehebung bei einem SiteWise IoT-Gateway](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/troubleshooting.html#troubleshooting-gateway)

# Kinesis Firehose
<a name="kinesis-firehose-connector"></a>

Der Kinesis [Firehose-Konnektor](connectors.md) veröffentlicht Daten über einen Amazon Firehose Firehose-Lieferstream an Ziele wie Amazon S3, Amazon Redshift oder Amazon Service. OpenSearch 

Dieser Connector ist ein Datenproduzent für einen Kinesis-Lieferstream. Er empfängt Eingabedaten zu einem MQTT-Thema und sendet die Daten an einen angegebenen Bereitstellungs-Stream. Der Bereitstellungs-Stream sendet dann den Datensatz an das konfigurierte Ziel (z. B. einen S3-Bucket).

Dieser Konnektor hat die folgenden Versionen.


| Version | ARN | 
| --- | --- | 
| 5 | `arn:aws:greengrass:region::/connectors/KinesisFirehose/versions/5` | 
| 4 | `arn:aws:greengrass:region::/connectors/KinesisFirehose/versions/4` | 
| 3 | `arn:aws:greengrass:region::/connectors/KinesisFirehose/versions/3` | 
| 2 | `arn:aws:greengrass:region::/connectors/KinesisFirehose/versions/2` | 
| 1 | `arn:aws:greengrass:region::/connectors/KinesisFirehose/versions/1` | 

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

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

Dieser Konnektor hat die folgenden Anforderungen:

------
#### [ Version 4 - 5 ]
+ <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="req-kinesis-firehose-stream"></a>Ein konfigurierter Kinesis-Lieferstream. Weitere Informationen finden Sie unter [Creating a Amazon Data Firehose Delivery Stream](https://docs.aws.amazon.com/firehose/latest/dev/basic-create.html) im *Amazon Kinesis Firehose* Developer Guide.
+ <a name="req-kinesis-firehose-iam-policy-v2"></a>Die [Greengrass-Gruppenrolle](group-role.md) ist so konfiguriert, dass sie die `firehose:PutRecordBatch` Aktionen `firehose:PutRecord` und für den Zielzustellungsstream zulässt, wie in der folgenden IAM-Beispielrichtlinie gezeigt.

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement":[
          {
              "Sid":"Stmt1528133056761",
              "Action":[
                  "firehose:PutRecord",
                  "firehose:PutRecordBatch"
              ],
              "Effect":"Allow",
              "Resource":[
              "arn:aws:firehose:us-east-1:123456789012:deliverystream/stream-name"
              ]
          }
      ]
   }
  ```

------

  Mit diesem Konnektor können Sie den standardmäßigen Bereitstellungs-Stream in der Nutzlast der Input-Message dynamisch überschreiben. Wenn Ihre Implementierung diese Funktion verwendet, sollte die IAM-Richtlinie alle Zielstreams als Ressourcen enthalten. 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 2 - 3 ]
+ <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="req-kinesis-firehose-stream"></a>Ein konfigurierter Kinesis-Lieferstream. Weitere Informationen finden Sie unter [Creating a Amazon Data Firehose Delivery Stream](https://docs.aws.amazon.com/firehose/latest/dev/basic-create.html) im *Amazon Kinesis Firehose* Developer Guide.
+ <a name="req-kinesis-firehose-iam-policy-v2"></a>Die [Greengrass-Gruppenrolle](group-role.md) ist so konfiguriert, dass sie die `firehose:PutRecordBatch` Aktionen `firehose:PutRecord` und für den Zielzustellungsstream zulässt, wie in der folgenden IAM-Beispielrichtlinie gezeigt.

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement":[
          {
              "Sid":"Stmt1528133056761",
              "Action":[
                  "firehose:PutRecord",
                  "firehose:PutRecordBatch"
              ],
              "Effect":"Allow",
              "Resource":[
              "arn:aws:firehose:us-east-1:123456789012:deliverystream/stream-name"
              ]
          }
      ]
   }
  ```

------

  Mit diesem Konnektor können Sie den standardmäßigen Bereitstellungs-Stream in der Nutzlast der Input-Message dynamisch überschreiben. Wenn Ihre Implementierung diese Funktion verwendet, sollte die IAM-Richtlinie alle Zielstreams als Ressourcen enthalten. 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).

------
#### [ Version 1 ]
+ <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="req-kinesis-firehose-stream"></a>Ein konfigurierter Kinesis-Lieferstream. Weitere Informationen finden Sie unter [Creating a Amazon Data Firehose Delivery Stream](https://docs.aws.amazon.com/firehose/latest/dev/basic-create.html) im *Amazon Kinesis Firehose* Developer Guide.
+ Die [Greengrass-Gruppenrolle](group-role.md) ist so konfiguriert, dass sie die `firehose:PutRecord` Aktion auf dem Zielzustellungsstream zulässt, wie in der folgenden IAM-Beispielrichtlinie gezeigt.

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement":[
          {
              "Sid":"Stmt1528133056761",
              "Action":[
                  "firehose:PutRecord"
              ],
              "Effect":"Allow",
              "Resource":[
              "arn:aws:firehose:us-east-1:123456789012:deliverystream/stream-name"
              ]
          }
      ]
   }
  ```

------

  <a name="role-resources"></a>Mit diesem Konnektor können Sie den standardmäßigen Bereitstellungs-Stream in der Nutzlast der Input-Message dynamisch überschreiben. Wenn Ihre Implementierung diese Funktion verwendet, sollte die IAM-Richtlinie alle Zielstreams als Ressourcen enthalten. 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="kinesis-firehose-connector-param"></a>

Dieser Konnektor stellt die folgenden Parameter bereit:

------
#### [ Versions 5 ]

`DefaultDeliveryStreamArn`  <a name="kinesis-firehose-DefaultDeliveryStreamArn"></a>
Der ARN des Standard-Firehose-Lieferstreams, an den Daten gesendet werden sollen. Der Ziel-Stream kann durch die Eigenschaft `delivery_stream_arn` in der Nutzlast der Eingangsnachricht überschrieben werden.  
Die Gruppenrolle muss die entsprechenden Aktionen für alle Zielbereitstellungsströme ermöglichen. Weitere Informationen finden Sie unter [Voraussetzungen](#kinesis-firehose-connector-req).
Anzeigename in der AWS IoT Konsole: **Standard-Lieferstream-ARN**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `arn:aws:firehose:([a-z]{2}-[a-z]+-\d{1}):(\d{12}):deliverystream/([a-zA-Z0-9_\-.]+)$`

`DeliveryStreamQueueSize`  <a name="kinesis-firehose-DeliveryStreamQueueSize"></a>
Die maximale Anzahl der im Speicher behaltenen Datensätze, bevor neue Datensätze für den gleichen Bereitstellungsstrom abgelehnt werden. Der minimale Wert beträgt 2000.  
Anzeigename in der AWS IoT Konsole: **Maximale Anzahl der zu puffernden Datensätze (pro Stream)**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `^([2-9]\\d{3}|[1-9]\\d{4,})$`

`MemorySize`  <a name="kinesis-firehose-MemorySize"></a>
Die Speichergröße (in KB), die diesem Konnektor zugewiesen werden soll.  
Anzeigename in der AWS IoT Konsole: **Speichergröße**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `^[0-9]+$`

`PublishInterval`  <a name="kinesis-firehose-PublishInterval"></a>
Das Intervall (in Sekunden) für die Veröffentlichung von Datensätzen in Firehose. Setzen Sie diesen Wert auf 0, um die Stapelverarbeitung zu deaktivieren.  
Anzeigename in der AWS IoT Konsole: **Veröffentlichungsintervall**  
Erforderlich: `true`  
Typ: `string`  
Zulässige Werte: `0 - 900`  
Gültiges Muster: `[0-9]|[1-9]\\d|[1-9]\\d\\d|900`

`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 2 - 4 ]

`DefaultDeliveryStreamArn`  <a name="kinesis-firehose-DefaultDeliveryStreamArn"></a>
Der ARN des Standard-Firehose-Lieferstreams, an den Daten gesendet werden sollen. Der Ziel-Stream kann durch die Eigenschaft `delivery_stream_arn` in der Nutzlast der Eingangsnachricht überschrieben werden.  
Die Gruppenrolle muss die entsprechenden Aktionen für alle Zielbereitstellungsströme ermöglichen. Weitere Informationen finden Sie unter [Voraussetzungen](#kinesis-firehose-connector-req).
Anzeigename in der AWS IoT Konsole: **Standard-Lieferstream-ARN**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `arn:aws:firehose:([a-z]{2}-[a-z]+-\d{1}):(\d{12}):deliverystream/([a-zA-Z0-9_\-.]+)$`

`DeliveryStreamQueueSize`  <a name="kinesis-firehose-DeliveryStreamQueueSize"></a>
Die maximale Anzahl der im Speicher behaltenen Datensätze, bevor neue Datensätze für den gleichen Bereitstellungsstrom abgelehnt werden. Der minimale Wert beträgt 2000.  
Anzeigename in der AWS IoT Konsole: **Maximale Anzahl der zu puffernden Datensätze (pro Stream)**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `^([2-9]\\d{3}|[1-9]\\d{4,})$`

`MemorySize`  <a name="kinesis-firehose-MemorySize"></a>
Die Speichergröße (in KB), die diesem Konnektor zugewiesen werden soll.  
Anzeigename in der AWS IoT Konsole: **Speichergröße**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `^[0-9]+$`

`PublishInterval`  <a name="kinesis-firehose-PublishInterval"></a>
Das Intervall (in Sekunden) für die Veröffentlichung von Datensätzen in Firehose. Setzen Sie diesen Wert auf 0, um die Stapelverarbeitung zu deaktivieren.  
Anzeigename in der AWS IoT Konsole: **Veröffentlichungsintervall**  
Erforderlich: `true`  
Typ: `string`  
Zulässige Werte: `0 - 900`  
Gültiges Muster: `[0-9]|[1-9]\\d|[1-9]\\d\\d|900`

------
#### [ Version 1 ]

`DefaultDeliveryStreamArn`  <a name="kinesis-firehose-DefaultDeliveryStreamArn"></a>
Der ARN des Standard-Firehose-Lieferstreams, an den Daten gesendet werden sollen. Der Ziel-Stream kann durch die Eigenschaft `delivery_stream_arn` in der Nutzlast der Eingangsnachricht überschrieben werden.  
Die Gruppenrolle muss die entsprechenden Aktionen für alle Zielbereitstellungsströme ermöglichen. Weitere Informationen finden Sie unter [Voraussetzungen](#kinesis-firehose-connector-req).
Anzeigename in der AWS IoT Konsole: **Standard-Lieferstream-ARN**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `arn:aws:firehose:([a-z]{2}-[a-z]+-\d{1}):(\d{12}):deliverystream/([a-zA-Z0-9_\-.]+)$`

------

**Example**  <a name="kinesis-firehose-connector-create"></a>
**Beispiel für Connector erstellen (AWS CLI)**  
Der folgende CLI-Befehl erstellt eine `ConnectorDefinition` mit einer ersten Version, die den Connector enthält.  

```
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{
    "Connectors": [
        {
            "Id": "MyKinesisFirehoseConnector",
            "ConnectorArn": "arn:aws:greengrass:region::/connectors/KinesisFirehose/versions/5",
            "Parameters": {
                "DefaultDeliveryStreamArn": "arn:aws:firehose:region:account-id:deliverystream/stream-name",
                "DeliveryStreamQueueSize": "5000",
                "MemorySize": "65535",
                "PublishInterval": "10", 
                "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="kinesis-firehose-connector-data-input"></a>

Dieser Konnektor akzeptiert Stream-Inhalte zu MQTT-Themen und sendet die Inhalte dann an den Ziel-Bereitstellungs-Stream. Er akzeptiert zwei Arten von Eingabedaten:
+ JSON-Daten zum `kinesisfirehose/message`-Thema.
+ Binäre Daten zum `kinesisfirehose/message/binary/#`-Thema.

------
#### [ Versions 2 - 5 ]<a name="kinesis-firehose-input-data"></a>

**Themenfilter:** `kinesisfirehose/message`  
Verwenden Sie dieses Thema, um eine Nachricht zu senden, die JSON-Daten enthält.    
**Nachrichten-Eigenschaften**    
`request`  
Die zu sendenden Daten an den Lieferstrom und den Ziel-Lieferstrom, falls sie sich vom Standard-Stream unterscheiden.  
Erforderlich: `true`  
Typ: `object` der die folgenden Eigenschaften beinhaltet:    
`data`  
Die Daten, die an den Lieferstrom gesendet werden sollen.  
Erforderlich: `true`  
Typ: `string`  
`delivery_stream_arn`  
Der ARN des Kinesis-Ziel-Lieferstreams. Fügen Sie diese Eigenschaft hinzu, um den standardmäßigen Lieferstrom zu überschreiben.  
Erforderlich: `false`  
Typ: `string`  
Gültiges Muster: `arn:aws:firehose:([a-z]{2}-[a-z]+-\d{1}):(\d{12}):deliverystream/([a-zA-Z0-9_\-.]+)$`  
`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: `.*`  
**Beispieleingabe**  

```
{
     "request": {
        "delivery_stream_arn": "arn:aws:firehose:region:account-id:deliverystream/stream2-name",
        "data": "Data to send to the delivery stream."
     },
     "id": "request123"
}
```
 

**Themenfilter:** `kinesisfirehose/message/binary/#`  
Verwenden Sie dieses Thema, um eine Nachricht zu senden, die binäre Daten enthält. Der Konnektor analysiert keine binären Daten. Die Daten werden unverändert gestreamt.  
Um die Eingabeaufforderung einer Ausgabeaufgabe zuzuordnen, ersetzen Sie den Platzhalter `#` im Meldungsthema durch eine beliebige Anforderungs-ID. Wenn Sie beispielsweise eine Nachricht an `kinesisfirehose/message/binary/request123` veröffentlichen, wird die Eigenschaft `id` im Antwortobjekt auf `request123` gesetzt.  
Wenn Sie eine Anfrage nicht auf eine Antwort abbilden möchten, können Sie Ihre Nachrichten unter `kinesisfirehose/message/binary/` veröffentlichen. Achten Sie darauf, dass Sie den nachlaufenden Schrägstrich verwenden.

------
#### [ Version 1 ]<a name="kinesis-firehose-input-data"></a>

**Themenfilter:** `kinesisfirehose/message`  
Verwenden Sie dieses Thema, um eine Nachricht zu senden, die JSON-Daten enthält.    
**Nachrichten-Eigenschaften**    
`request`  
Die zu sendenden Daten an den Lieferstrom und den Ziel-Lieferstrom, falls sie sich vom Standard-Stream unterscheiden.  
Erforderlich: `true`  
Typ: `object` der die folgenden Eigenschaften beinhaltet:    
`data`  
Die Daten, die an den Lieferstrom gesendet werden sollen.  
Erforderlich: `true`  
Typ: `string`  
`delivery_stream_arn`  
Der ARN des Kinesis-Ziel-Lieferstreams. Fügen Sie diese Eigenschaft hinzu, um den standardmäßigen Lieferstrom zu überschreiben.  
Erforderlich: `false`  
Typ: `string`  
Gültiges Muster: `arn:aws:firehose:([a-z]{2}-[a-z]+-\d{1}):(\d{12}):deliverystream/([a-zA-Z0-9_\-.]+)$`  
`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: `.*`  
**Beispieleingabe**  

```
{
     "request": {
        "delivery_stream_arn": "arn:aws:firehose:region:account-id:deliverystream/stream2-name",
        "data": "Data to send to the delivery stream."
     },
     "id": "request123"
}
```
 

**Themenfilter:** `kinesisfirehose/message/binary/#`  
Verwenden Sie dieses Thema, um eine Nachricht zu senden, die binäre Daten enthält. Der Konnektor analysiert keine binären Daten. Die Daten werden unverändert gestreamt.  
Um die Eingabeaufforderung einer Ausgabeaufgabe zuzuordnen, ersetzen Sie den Platzhalter `#` im Meldungsthema durch eine beliebige Anforderungs-ID. Wenn Sie beispielsweise eine Nachricht an `kinesisfirehose/message/binary/request123` veröffentlichen, wird die Eigenschaft `id` im Antwortobjekt auf `request123` gesetzt.  
Wenn Sie eine Anfrage nicht auf eine Antwort abbilden möchten, können Sie Ihre Nachrichten unter `kinesisfirehose/message/binary/` veröffentlichen. Achten Sie darauf, dass Sie den nachlaufenden Schrägstrich verwenden.

------

## Ausgabedaten
<a name="kinesis-firehose-connector-data-output"></a>

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

------
#### [ Versions 2 - 5 ]

<a name="topic-filter"></a>**Themenfilter im Abonnement**  <a name="kinesis-firehose-output-topic-status"></a>
`kinesisfirehose/message/status`

**Beispielausgabe**  
Die Antwort enthält den Status jedes im Stapel gesendeten Datensatzes.  

```
{
    "response": [
        {
            "ErrorCode": "error",
            "ErrorMessage": "test error",
            "id": "request123",
            "status": "fail"
        },
        {
            "firehose_record_id": "xyz2",
            "id": "request456",
            "status": "success"
        },
        {
            "firehose_record_id": "xyz3",
            "id": "request890",
            "status": "success"
        }
    ]
}
```
Wenn der Connector einen Fehler erkennt, der wiederholt werden kann (z. B. Verbindungsfehler), versucht er die Veröffentlichung im nächsten Batch erneut. Der exponentielle Backoff wird vom SDK abgewickelt. AWS Anfragen, die mit wiederholbaren Fehlern fehlschlagen, werden zur weiteren Veröffentlichung wieder am Ende der Warteschlange hinzugefügt.

------
#### [ Version 1 ]

<a name="topic-filter"></a>**Themenfilter im Abonnement**  <a name="kinesis-firehose-output-topic-status"></a>
`kinesisfirehose/message/status`

**Beispielausgabe: Erfolg**  

```
{
   "response": {
       "firehose_record_id": "1lxfuuuFomkpJYzt/34ZU/r8JYPf8Wyf7AXqlXm",
       "status": "success"
    },
    "id": "request123"
}
```

**Beispielausgabe: Fehler**  

```
{
   "response" : {
       "error": "ResourceNotFoundException",
       "error_message": "An error occurred (ResourceNotFoundException) when calling the PutRecord operation: Firehose test1 not found under account 123456789012.",
       "status": "fail"
   },
   "id": "request123"
}
```

------

## Beispiel für eine Verwendung
<a name="kinesis-firehose-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](#kinesis-firehose-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](#kinesis-firehose-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](#kinesis-firehose-connector-param).

   1. Fügen Sie Abonnements hinzu, die es dem Konnektor ermöglichen, [JSON-Eingabedaten](#kinesis-firehose-connector-data-input) zu empfangen und [Ausgabedaten](#kinesis-firehose-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="kinesis-firehose-connector-usage-example"></a>

Die folgende Lambda-Beispielfunktion sendet eine Eingabenachricht an den Konnektor. Diese Nachricht enthält JSON-Daten.

```
import greengrasssdk
import time
import json

iot_client = greengrasssdk.client('iot-data')
send_topic = 'kinesisfirehose/message'

def create_request_with_all_fields():
    return  {
        "request": {
            "data": "Message from Firehose 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="kinesis-firehose-connector-license"></a>

Der Kinesis Firehose-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="kinesis-firehose-connector-changelog"></a>

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


| Version | Änderungen | 
| --- | --- | 
| 5 | <a name="isolation-mode-changelog"></a>Der Parameter `IsolationMode` wurde hinzugefügt, um den Containerisierungsmodus für den Konnektor zu konfigurieren. | 
| 4 | <a name="upgrade-runtime-py3.7"></a>Die Lambda-Laufzeit wurde auf Python 3.7 aktualisiert, was die Laufzeitanforderungen ändert. | 
| 3 | Korrektur, um übermäßige Protokollierung und andere kleinere Fehlerbehebungen zu reduzieren.  | 
| 2 | Unterstützung für das Senden von Batch-Datensätzen an Firehose in einem bestimmten Intervall hinzugefügt. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/greengrass/v1/developerguide/kinesis-firehose-connector.html)  | 
| 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="kinesis-firehose-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)
+ [Was ist Amazon Kinesis Data Firehose?](https://docs.aws.amazon.com/firehose/latest/dev/what-is-this-service.html) im *Amazon Kinesis Developer Guide*

# ML Feedback-Anschluss
<a name="ml-feedback-connector"></a>

**Warnung**  <a name="connectors-extended-life-phase-warning"></a>
Dieser Konnektor befindet sich in der *Phase der verlängerten Lebensdauer* und veröffentlicht AWS IoT Greengrass keine Updates, die Funktionen, Verbesserungen vorhandener Funktionen, Sicherheitspatches oder Bugfixes bieten. Weitere Informationen finden Sie unter [AWS IoT Greengrass Version 1 Wartungspolitik](maintenance-policy.md).

Der ML-Feedback-Konnektor erleichtert den Zugriff auf Ihre Modelldaten für maschinelles Lernen (ML) für das erneute Trainieren und Analysieren von Modellen. Der Konnektor:
+ Lädt Eingabedaten (Beispiele), die von Ihrem ML-Modell verwendet werden, auf Amazon S3 hoch. Die Modelleingabe kann in einem beliebigen Format vorliegen, z. B. in Form von Bildern, im JSON-Format oder als Audio. Nachdem Beispiele in die Cloud hochgeladen wurden, können Sie diese verwenden, um das Modell neu zu schulen und so die Genauigkeit und Präzision seiner Prognosen zu verbessern. Sie können beispielsweise [SageMaker KI Ground Truth](https://docs.aws.amazon.com/sagemaker/latest/dg/sms.html) verwenden, um Ihre Proben zu kennzeichnen, und [SageMaker KI](https://docs.aws.amazon.com/sagemaker/latest/dg/whatis.html), um das Modell neu zu trainieren.
+ Veröffentlicht die Prognoseergebnisse aus dem Modell als MQTT-Nachrichten. Auf diese Weise können Sie die Inferenzqualität Ihres Modells in Echtzeit überwachen und analysieren. Sie können die Prognoseergebnisse auch speichern und mit ihrer Hilfe Trends im Laufe der Zeit analysieren.
+ Veröffentlicht Metriken zu Beispiel-Uploads und Beispieldaten auf Amazon CloudWatch.

Um diesen Konnektor zu konfigurieren, beschreiben Sie Ihre unterstützten *Feedback-Konfigurationen* im JSON-Format. Eine Feedback-Konfiguration definiert Eigenschaften wie den Amazon S3-Ziel-Bucket, den Inhaltstyp und die [Sampling-Strategie](#ml-feedback-connector-sampling-strategies). (Mit einer Samplingstrategie wird ermittelt, welche Beispiele hochgeladen werden sollen.)

Sie können den ML-Feedback-Connector in den folgenden Szenarien verwenden:
+ Mit benutzerdefinierten Lambda-Funktionen. Ihre lokalen Inferenz-Lambda-Funktionen verwenden das AWS IoT Greengrass Machine Learning SDK, um diesen Konnektor aufzurufen und die Ziel-Feedback-Konfiguration, die Modelleingabe und die Modellausgabe (Vorhersageergebnisse) weiterzuleiten. Ein Beispiel finden Sie unter [Beispiel für die Verwendung](#ml-feedback-connector-usage).
+ Mit dem [ML Image Classification Connector (v2](image-classification-connector.md)). Um diesen Konnektor mit dem ML Image Classification-Konnektor zu verwenden, konfigurieren Sie den `MLFeedbackConnectorConfigId` Parameter für den ML Image Classification-Konnektor.
+ Mit dem [ML Object Detection-Konnektor](obj-detection-connector.md). Um diesen Konnektor mit dem ML-Objekterkennungs-Konnektor zu verwenden, konfigurieren Sie den `MLFeedbackConnectorConfigId` Parameter für den ML-Objekterkennungs-Konnektor.

**ARN**: `arn:aws:greengrass:region::/connectors/MLFeedback/versions/1`

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

Dieser Konnektor hat die folgenden Anforderungen:
+ 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.
+ Ein oder mehrere Amazon S3 S3-Buckets. Wie viele Buckets Sie verwenden, hängt von Ihrer Samplingstrategie ab.
+ Die [Greengrass-Gruppenrolle](group-role.md) ist so konfiguriert, dass sie die `s3:PutObject` Aktion für Objekte im Amazon S3 S3-Ziel-Bucket zulässt, wie in der folgenden IAM-Beispielrichtlinie dargestellt.

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": "s3:PutObject",
              "Resource": [
                  "arn:aws:s3:::bucket-name/*"
              ]
          }
      ]
  }
  ```

------

  Die Richtlinie sollte alle Ziel-Buckets als Ressourcen enthalten. 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).
+ Der [CloudWatch Metrics-Konnektor](cloudwatch-metrics-connector.md) wurde der Greengrass-Gruppe hinzugefügt und konfiguriert. Nur erforderlich, wenn Sie die Berichterstellungsfunktion für Metriken verwenden möchten.
+ AWS IoT Greengrass Für die Interaktion mit diesem Connector ist das [Machine Learning SDK](lambda-functions.md#lambda-sdks-ml) v1.1.0 erforderlich.

## Parameters
<a name="ml-feedback-connector-param"></a>

`FeedbackConfigurationMap`  
Eine Reihe von einer oder mehreren Feedback-Konfigurationen, die der Connector verwenden kann, um Proben auf Amazon S3 hochzuladen. Eine Feedback-Konfiguration definiert Parameter wie z. B. den Ziel-Bucket, den Inhaltstyp und die [Samplingstrategie](#ml-feedback-connector-sampling-strategies). Wenn dieser Konnektor aufgerufen wird, spezifiziert die aufrufende Lambda-Funktion oder der aufrufende Connector eine Ziel-Feedback-Konfiguration.  
Anzeigename in der AWS IoT Konsole: **Feedback-Konfigurationsübersicht**  
Erforderlich: `true`  
Typ: Eine wohlgeformte JSON-Zeichenfolge, die den Satz der unterstützten Feedback-Konfigurationen definiert. Ein Beispiel finden Sie unter [FeedbackConfigurationMap Beispiel](#ml-feedback-connector-feedbackconfigmap).    
  
Für die ID eines Feedback-Konfigurationsobjekts gelten folgende Anforderungen.    
  
Die ID:  
+ Muss für alle Konfigurationsobjekte eindeutig sein.
+ Muss mit einem Buchstaben oder einer Zahl beginnen. Kann Kleinbuchstaben und Großbuchstaben, Zahlen und Bindestriche enthalten.
+ Muss zwischen 2 und 63 Zeichen lang sein.
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `^[a-zA-Z0-9][a-zA-Z0-9-]{1,62}$`  
Beispiele: `MyConfig0`, `config-a`, `12id`.
Der Text eines Feedback-Konfigurationsobjekts enthält die folgenden Eigenschaften.    
`s3-bucket-name`  
Der Name des Amazon S3-Ziel-Buckets.  
Die Gruppenrolle muss die Aktion `s3:PutObject` auf allen Ziel-Buckets erlauben. Weitere Informationen finden Sie unter [Voraussetzungen](#ml-feedback-connector-req).
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `^[a-z0-9\.\-]{3,63}$`  
`content-type`  
Der Inhaltstyp der hochzuladenden Beispiele. Alle Inhalte für eine einzelne Feedback-Konfiguration müssen denselben Typ aufweisen.  
Erforderlich: `true`  
Typ: `string`  
Beispiele: `image/jpeg`, `application/json`, `audio/ogg`.  
`s3-prefix`  
Das Schlüsselpräfix, das für hochgeladene Beispiele verwendet werden soll. Ein Präfix ist einem Verzeichnisnamen ähnlich. Es bietet Ihnen die Möglichkeit, ähnliche Daten unter demselben Verzeichnis in einem Bucket zu speichern. Weitere Informationen finden Sie unter [Objektschlüssel und Metadaten](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingMetadata.html) im *Amazon Simple Storage Service-Benutzerhandbuch*.  
Erforderlich: `false`  
Typ: `string`  
`file-ext`  
Die Dateierweiterung, die für hochgeladene Beispiele verwendet werden soll. Es muss sich um eine gültige Dateierweiterung für den Inhaltstyp handeln.  
Erforderlich: `false`  
Typ: `string`  
Beispiele: `jpg`, `json`, `ogg`.  
`sampling-strategy`  
Die [Samplingstrategie](#ml-feedback-connector-sampling-strategies) zum Filtern der hochzuladenden Beispiele. Wenn nicht angegeben, versucht der Konnektor, alle empfangenen Beispiele hochzuladen.  
Erforderlich: `false`  
Typ: Eine wohlgeformte JSON-Zeichenfolge, die die folgenden Eigenschaften enthält.    
`strategy-name`  
Der Name der Samplingstrategie.  
Erforderlich: `true`  
Typ: `string`  
Gültige Werte: `RANDOM_SAMPLING`, `LEAST_CONFIDENCE`, `MARGIN` oder `ENTROPY`  
`rate`  
Die Rate für die [Random](#ml-feedback-connector-sampling-strategies-random)-Samplingstrategie.  
Erforderlich: `true` wenn `strategy-name` ja`RANDOM_SAMPLING`.  
Typ: `number`  
Zulässige Werte: `0.0 - 1.0`  
`threshold`  
Der Schwellenwert für die Samplingstrategie [Least Confidence (Geringste Zuverlässigkeit)](#ml-feedback-connector-sampling-strategies-least-confidence), [Margin (Abstand)](#ml-feedback-connector-sampling-strategies-margin) oder [Entropy (Entropie)](#ml-feedback-connector-sampling-strategies-entropy).  
Erforderlich: `true` wenn `strategy-name` ist `LEAST_CONFIDENCE``MARGIN`, oder`ENTROPY`.  
Typ: `number`  
Zulässige Werte:  
+ `0.0 - 1.0` für die Strategie `LEAST_CONFIDENCE` oder `MARGIN`.
+ `0.0 - no limit` für die Strategie `ENTROPY`.

`RequestLimit`  
Die maximale Anzahl von Anforderungen, die der Konnektor gleichzeitig verarbeiten kann.  
Mithilfe dieses Parameters können Sie die Speicherbelegung einschränken, indem Sie die Anzahl der Anforderungen begrenzen, die der Konnektor gleichzeitig verarbeitet. Über dieses Limit hinausgehende Anforderungen werden ignoriert.  
Anzeigename in der AWS IoT Konsole: **Limit anfordern**  
Erforderlich: `false`  
Typ: `string`  
Zulässige Werte: `0 - 999`  
Gültiges Muster: `^$|^[0-9]{1,3}$`

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

Der folgende CLI-Befehl erstellt eine `ConnectorDefinition` mit einer ersten Version, die den ML-Feedback-Konnektor enthält.

```
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{
    "Connectors": [
        {
            "Id": "MyMLFeedbackConnector",
            "ConnectorArn": "arn:aws:greengrass:region::/connectors/MLFeedback/versions/1",
            "Parameters": {
                "FeedbackConfigurationMap": "{  \"RandomSamplingConfiguration\": {  \"s3-bucket-name\": \"my-aws-bucket-random-sampling\",  \"content-type\": \"image/png\",  \"file-ext\": \"png\",  \"sampling-strategy\": {  \"strategy-name\": \"RANDOM_SAMPLING\",  \"rate\": 0.5  } },  \"LeastConfidenceConfiguration\": {  \"s3-bucket-name\": \"my-aws-bucket-least-confidence-sampling\",  \"content-type\": \"image/png\",  \"file-ext\": \"png\",  \"sampling-strategy\": {  \"strategy-name\": \"LEAST_CONFIDENCE\",  \"threshold\": 0.4  } } }", 
                "RequestLimit": "10"
            }
        }
    ]
}'
```

### FeedbackConfigurationMap Beispiel
<a name="ml-feedback-connector-feedbackconfigmap"></a>

Im Folgenden sehen Sie einen erweiterten Beispielwert für den Parameter `FeedbackConfigurationMap`. Dieses Beispiel enthält mehrere Feedback-Konfigurationen, die verschiedene Samplingstrategien verwenden.

```
{
    "ConfigID1": {
        "s3-bucket-name": "my-aws-bucket-random-sampling",
        "content-type": "image/png",
        "file-ext": "png",
        "sampling-strategy": {
            "strategy-name": "RANDOM_SAMPLING",
            "rate": 0.5
        }
    },
    "ConfigID2": {
        "s3-bucket-name": "my-aws-bucket-margin-sampling",
        "content-type": "image/png",
        "file-ext": "png",
        "sampling-strategy": {
            "strategy-name": "MARGIN",
            "threshold": 0.4
        }
    },
    "ConfigID3": {
        "s3-bucket-name": "my-aws-bucket-least-confidence-sampling",
        "content-type": "image/png",
        "file-ext": "png",
        "sampling-strategy": {
            "strategy-name": "LEAST_CONFIDENCE",
            "threshold": 0.4
        }
    },
    "ConfigID4": {
        "s3-bucket-name": "my-aws-bucket-entropy-sampling",
        "content-type": "image/png",
        "file-ext": "png",
        "sampling-strategy": {
            "strategy-name": "ENTROPY",
            "threshold": 2
        }
    },
    "ConfigID5": {
        "s3-bucket-name": "my-aws-bucket-no-sampling",
        "s3-prefix": "DeviceA",
        "content-type": "application/json"
    }
}
```

### Samplingstrategien
<a name="ml-feedback-connector-sampling-strategies"></a>

Der Konnektor unterstützt vier Samplingstrategien, die bestimmen, ob Beispiele hochgeladen werden sollen, die an den Konnektor übergeben werden. Beispiele sind einzelne Dateninstanzen, die von einem Modell für eine Prognose verwendet werden. Sie können Samplingstrategien verwenden, um nach den Beispielen zu filtern, die die Modellgenauigkeit am ehesten verbessern.

`RANDOM_SAMPLING`  <a name="ml-feedback-connector-sampling-strategies-random"></a>
Lädt nach dem Zufallsprinzip Beispiele basierend auf der angegebenen Rate hoch. Ein Beispiel wird hochgeladen, wenn ein zufällig generierter Wert kleiner als die Rate ist. Je höher die Rate, desto mehr Beispiele werden hochgeladen.  
Diese Strategie ignoriert alle bereitgestellten Modellprognosen.

`LEAST_CONFIDENCE`  <a name="ml-feedback-connector-sampling-strategies-least-confidence"></a>
Lädt Beispiele hoch, deren maximale Zuverlässigkeitswahrscheinlichkeit unter den angegebenen Schwellenwert fällt.    
Beispielszenario:  
Schwellenwert: `.6`  
Modellprognose: `[.2, .2, .4, .2]`  
Maximale Zuverlässigkeitswahrscheinlichkeit: `.4`  
Ergebnis:  
Verwenden Sie das Beispiel, da die maximale Zuverlässigkeitswahrscheinlichkeit (`.4`) <= Schwellenwert (`.6`) ist.

`MARGIN`  <a name="ml-feedback-connector-sampling-strategies-margin"></a>
Lädt Beispiele hoch, wenn der Abstand zwischen den beiden höchsten Zuverlässigkeitswahrscheinlichkeiten innerhalb des angegebenen Schwellenwerts liegt. Der Abstand ist die Differenz zwischen den beiden höchsten Zuverlässigkeitswahrscheinlichkeiten.    
Beispielszenario:  
Schwellenwert: `.02`  
Modellprognose: `[.3, .35, .34, .01]`  
Zwei höchste Zuverlässigkeitswahrscheinlichkeiten: `[.35, .34]`  
Abstand: `.01` (`.35 - .34`)  
Ergebnis:  
Verwenden Sie das Beispiel, da der Abstand (`.01`) <= Schwellenwert (`.02`) ist.

`ENTROPY`  <a name="ml-feedback-connector-sampling-strategies-entropy"></a>
Lädt Beispiele hoch, deren Entropie größer als der angegebene Schwellenwert ist. Verwendet die normalisierte Entropie der Modellprognose.    
Beispielszenario:  
Schwellenwert: `0.75`  
Modellprognose: `[.5, .25, .25]`  
Entropie für die Prognose: `1.03972`  
Ergebnis:  
Verwenden Sie das Beispiel, da die Entropie (`1.03972`) > Schwellenwert (`0.75`) ist.

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

Benutzerdefinierte Lambda-Funktionen verwenden die `publish` Funktion des `feedback` Clients im AWS IoT Greengrass Machine Learning SDK, um den Connector aufzurufen. Ein Beispiel finden Sie unter [Beispiel für die Verwendung](#ml-feedback-connector-usage).

**Anmerkung**  
Dieser Konnektor akzeptiert keine MQTT-Nachrichten als Eingabedaten.

Die `publish`-Funktion verwendet die folgenden Argumente:

ConfigId  
Die ID der Ziel-Feedback-Konfiguration. Dies muss mit der ID einer Feedback-Konfiguration übereinstimmen, die im [FeedbackConfigurationMap](#ml-feedback-connector-param)Parameter für den ML-Feedback-Konnektor definiert ist.  
Erforderlich: wahr  
Type: Zeichenkette

ModelInput  
Die Eingabedaten, die an ein Modell zur Inferenz übergeben wurden. Diese Eingabedaten werden unter Verwendung der Zielkonfiguration hochgeladen, es sei denn, sie werden basierend auf der Samplingstrategie herausgefiltert.  
Erforderlich: wahr  
Typ: Bytes

ModelPrediction  
Die Prognoseergebnisse aus dem Modell. Ergebnistyp kann ein Wörterbuch oder eine Liste sein. Beispielsweise handelt es sich bei den Prognoseergebnissen des ML Image Classification-Konnektors um eine Liste von Wahrscheinlichkeiten (z. B.`[0.25, 0.60, 0.15]`). Diese Daten werden im Thema `/feedback/message/prediction` veröffentlicht.  
Erforderlich: wahr  
Typ: Wörterbuch oder `float` Werteliste

Metadaten  
Kundendefinierte, anwendungsspezifische Metadaten, die an das hochgeladene Beispiel angefügt und im Thema `/feedback/message/prediction` veröffentlicht werden. Der Konnektor fügt auch einen `publish-ts`-Schlüssel mit einem Zeitstempelwert in die Metadaten ein.  
Erforderlich: falsch  
Typ: Wörterbuch  
Beispiel: `{"some-key": "some value"}`

## Ausgabedaten
<a name="ml-feedback-connector-data-output"></a>

Dieser Konnektor veröffentlicht Daten in drei MQTT-Themen:
+ Statusinformationen vom Konnektor im Thema `feedback/message/status`.
+ Prognoseergebnisse im Thema `feedback/message/prediction`.
+ Metriken, die für das CloudWatch `cloudwatch/metric/put` Thema bestimmt sind.

<a name="connectors-input-output-subscriptions"></a>Sie müssen Abonnements konfigurieren, damit der Konnektor über MQTT-Themen kommunizieren kann. Weitere Informationen finden Sie unter [Eingaben und Ausgaben](connectors.md#connectors-inputs-outputs).

**Themenfilter:** `feedback/message/status`  
Verwenden Sie dieses Thema, um den Status von Beispiel-Uploads und verworfenen Beispielen zu überwachen. Der Konnektor veröffentlicht jedes Mal, wenn er eine Anforderung erhält, in diesem Thema.     
**Beispielausgabe: Beispiel-Upload erfolgreich**  

```
{
  "response": {
    "status": "success",
    "s3_response": {
      "ResponseMetadata": {
        "HostId": "IOWQ4fDEXAMPLEQM+ey7N9WgVhSnQ6JEXAMPLEZb7hSQDASK+Jd1vEXAMPLEa3Km",
        "RetryAttempts": 1,
        "HTTPStatusCode": 200,
        "RequestId": "79104EXAMPLEB723",
        "HTTPHeaders": {
          "content-length": "0",
          "x-amz-id-2": "lbbqaDVFOhMlyU3gRvAX1ZIdg8P0WkGkCSSFsYFvSwLZk3j7QZhG5EXAMPLEdd4/pEXAMPLEUqU=",
          "server": "AmazonS3",
          "x-amz-expiration": "expiry-date=\"Wed, 17 Jul 2019 00:00:00 GMT\", rule-id=\"OGZjYWY3OTgtYWI2Zi00ZDllLWE4YmQtNzMyYzEXAMPLEoUw\"",
          "x-amz-request-id": "79104EXAMPLEB723",
          "etag": "\"b9c4f172e64458a5fd674EXAMPLE5628\"",
          "date": "Thu, 11 Jul 2019 00:12:50 GMT",
          "x-amz-server-side-encryption": "AES256"
        }
      },
      "bucket": "greengrass-feedback-connector-data-us-west-2",
      "ETag": "\"b9c4f172e64458a5fd674EXAMPLE5628\"",
      "Expiration": "expiry-date=\"Wed, 17 Jul 2019 00:00:00 GMT\", rule-id=\"OGZjYWY3OTgtYWI2Zi00ZDllLWE4YmQtNzMyYzEXAMPLEoUw\"",
      "key": "s3-key-prefix/UUID.file_ext",
      "ServerSideEncryption": "AES256"
    }
  },
  "id": "5aaa913f-97a3-48ac-5907-18cd96b89eeb"
}
```
Der Connector fügt die `key` Felder `bucket` und zur Antwort von Amazon S3 hinzu. Weitere Informationen zur Amazon S3 S3-Antwort finden Sie unter [PUT-Objekt](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html#RESTObjectPUT-responses) in der *Amazon Simple Storage Service API-Referenz*.  
**Beispielausgabe: Beispiel aufgrund der Samplingstrategie verworfen**  

```
{
  "response": {
    "status": "sample_dropped_by_strategy"
  },
  "id": "4bf5aeb0-d1e4-4362-5bb4-87c05de78ba3"
}
```  
**Beispielausgabe: Beispiel-Upload fehlgeschlagen**  
Ein Fehlerstatus enthält die Fehlermeldung als Wert für `error_message` und die Ausnahmeklasse als Wert für `error`.  

```
{
  "response": {
    "status": "fail",
    "error_message": "[RequestId: 4bf5aeb0-d1e4-4362-5bb4-87c05de78ba3] Failed to upload model input data due to exception. Model prediction will not be published. Exception type: NoSuchBucket, error: An error occurred (NoSuchBucket) when calling the PutObject operation: The specified bucket does not exist",
    "error": "NoSuchBucket"
  },
  "id": "4bf5aeb0-d1e4-4362-5bb4-87c05de78ba3"
}
```  
**Beispielausgabe: Anforderung aufgrund des Anforderungslimits gedrosselt**  

```
{
  "response": {
    "status": "fail",
    "error_message": "Request limit has been reached (max request: 10 ). Dropping request.",
    "error": "Queue.Full"
  },
  "id": "4bf5aeb0-d1e4-4362-5bb4-87c05de78ba3"
}
```

**Themenfilter:** `feedback/message/prediction`  
Verwenden Sie dieses Thema, um auf Prognosen basierend auf hochgeladenen Daten zu achten. Auf diese Weise können Sie die Modellleistung in Echtzeit analysieren. Modellvorhersagen werden zu diesem Thema nur veröffentlicht, wenn Daten erfolgreich auf Amazon S3 hochgeladen wurden. Nachrichten, die in diesem Thema veröffentlicht werden, haben das JSON-Format. Sie enthalten den Link zu dem hochgeladenen Datenobjekt, die Prognose des Modells und die Metadaten in der Anforderung.  
Sie können Prognoseergebnisse auch speichern und mithilfe dieser Daten Trends im Laufe der Zeit melden und analysieren. Trends können wertvolle Erkenntnisse liefern. Ein Trend zu *abnehmender Genauigkeit im Zeitverlauf* kann Ihnen beispielsweise helfen, zu entscheiden, ob das Modell neu geschult werden muss.    
**Beispielausgabe**  

```
{
  "source-ref": "s3://greengrass-feedback-connector-data-us-west-2/s3-key-prefix/UUID.file_ext",
  "model-prediction": [
    0.5,
    0.2,
    0.2,
    0.1
  ],
  "config-id": "ConfigID2",
  "metadata": {
    "publish-ts": "2019-07-11 00:12:48.816752"
  }
}
```
Sie können den [IoT Analytics Analytics-Connector](iot-analytics-connector.md) so konfigurieren, dass er dieses Thema abonniert und die Informationen AWS IoT Analytics zur weiteren oder historischen Analyse an diesen sendet.

**Themenfilter:** `cloudwatch/metric/put`  
Dies ist das Ausgabethema, das zum Veröffentlichen von Metriken in CloudWatch verwendet wird. Für diese Funktion müssen Sie den [CloudWatch Metrics-Connector](cloudwatch-metrics-connector.md) installieren und konfigurieren.  
Zu den Metriken gehören:  
+ Die Anzahl der hochgeladenen Beispiele.
+ Die Größe der hochgeladenen Beispiele.
+ Die Anzahl der Fehler bei Uploads auf Amazon S3.
+ Die Anzahl der verworfenen Beispiele basierend auf der Samplingstrategie.
+ Die Anzahl der gedrosselten Anforderungen.  
**Beispielausgabe: Größe des Datenbeispiels (veröffentlicht vor dem tatsächlichen Upload)**  

```
{
  "request": {
    "namespace": "GreengrassFeedbackConnector",
    "metricData": {
      "value": 47592,
      "unit": "Bytes",
      "metricName": "SampleSize"
    }
  }
}
```  
**Beispielausgabe: Beispiel-Upload erfolgreich**  

```
{
  "request": {
    "namespace": "GreengrassFeedbackConnector",
    "metricData": {
      "value": 1,
      "unit": "Count",
      "metricName": "SampleUploadSuccess"
    }
  }
}
```  
**Beispielausgabe: Beispiel-Upload erfolgreich und Prognoseergebnis veröffentlicht**  

```
{
  "request": {
    "namespace": "GreengrassFeedbackConnector",
    "metricData": {
      "value": 1,
      "unit": "Count",
      "metricName": "SampleAndPredictionPublished"
    }
  }
}
```  
**Beispielausgabe: Beispiel-Upload fehlgeschlagen**  

```
{
  "request": {
    "namespace": "GreengrassFeedbackConnector",
    "metricData": {
      "value": 1,
      "unit": "Count",
      "metricName": "SampleUploadFailure"
    }
  }
}
```  
**Beispielausgabe: Beispiel aufgrund der Samplingstrategie verworfen**  

```
{
  "request": {
    "namespace": "GreengrassFeedbackConnector",
    "metricData": {
      "value": 1,
      "unit": "Count",
      "metricName": "SampleNotUsed"
    }
  }
}
```  
**Beispielausgabe: Anforderung aufgrund des Anforderungslimits gedrosselt**  

```
{
  "request": {
    "namespace": "GreengrassFeedbackConnector",
    "metricData": {
      "value": 1,
      "unit": "Count",
      "metricName": "ErrorRequestThrottled"
    }
  }
}
```

## Beispiel für die Verwendung
<a name="ml-feedback-connector-usage"></a>

Das folgende Beispiel ist eine benutzerdefinierte Lambda-Funktion, die das [AWS IoT Greengrass Machine Learning SDK](lambda-functions.md#lambda-sdks-ml) verwendet, um Daten an den ML-Feedback-Connector zu senden.

**Anmerkung**  
Sie können das AWS IoT Greengrass Machine Learning SDK von der AWS IoT Greengrass [Download-Seite herunterladen](what-is-gg.md#gg-ml-sdk-download).

```
import json
import logging
import os
import sys
import greengrass_machine_learning_sdk as ml

client = ml.client('feedback')

try:
    feedback_config_id = os.environ["FEEDBACK_CONFIG_ID"]
    model_input_data_dir = os.environ["MODEL_INPUT_DIR"]
    model_prediction_str = os.environ["MODEL_PREDICTIONS"]
    model_prediction = json.loads(model_prediction_str)
except Exception as e:
    logging.info("Failed to open environment variables. Failed with exception:{}".format(e))
    sys.exit(1)

try:
    with open(os.path.join(model_input_data_dir, os.listdir(model_input_data_dir)[0]), 'rb') as f:
        content = f.read()
except Exception as e:
    logging.info("Failed to open model input directory. Failed with exception:{}".format(e))
    sys.exit(1)    

def invoke_feedback_connector():
    logging.info("Invoking feedback connector.")
    try:
        client.publish(
            ConfigId=feedback_config_id,
            ModelInput=content,
            ModelPrediction=model_prediction
        )
    except Exception as e:
        logging.info("Exception raised when invoking feedback connector:{}".format(e))
        sys.exit(1)    

invoke_feedback_connector()

def function_handler(event, context):
    return
```

## Lizenzen
<a name="ml-feedback-connector-license"></a>



Der ML Feedback 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
+ <a name="six-license"></a>[six](https://github.com/benjaminp/six)/MIT

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.

## Weitere Informationen finden Sie auch unter
<a name="ml-feedback-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)

# Anschluss zur ML-Bildklassifizierung
<a name="image-classification-connector"></a>

**Warnung**  <a name="connectors-extended-life-phase-warning"></a>
Dieser Connector befindet sich in der *Phase mit verlängerter Lebensdauer* und veröffentlicht AWS IoT Greengrass keine Updates, die Funktionen, Verbesserungen vorhandener Funktionen, Sicherheitspatches oder Bugfixes bieten. Weitere Informationen finden Sie unter [AWS IoT Greengrass Version 1 Wartungspolitik](maintenance-policy.md).

Die ML Image [Classification-Konnektoren](connectors.md) bieten einen Inferenzdienst für maschinelles Lernen (ML), der auf dem AWS IoT Greengrass Kern ausgeführt wird. Dieser lokale Inferenzdienst führt die Bildklassifizierung mithilfe eines Modells durch, das vom SageMaker KI-Bildklassifizierungsalgorithmus trainiert wurde.

Benutzerdefinierte Lambda-Funktionen verwenden das AWS IoT Greengrass Machine Learning SDK, um Inferenzanfragen an den lokalen Inferenzdienst zu senden. Der Dienst führt die Inferenz lokal aus und gibt die Wahrscheinlichkeit zurück, dass das Eingabebild zu bestimmten Kategorien gehört.

AWS IoT Greengrass stellt die folgenden Versionen dieses Connectors bereit, der für mehrere Plattformen verfügbar ist.

------
#### [ Version 2 ]


| Konnektor | Beschreibung und ARN | 
| --- | --- | 
| ML-Bildklassifizierung: Aarch64 JTX2 |  Inferenzdienst zur Bildklassifizierung für NVIDIA Jetson. TX2 Unterstützt die GPU-Beschleunigung. **ARN**: `arn:aws:greengrass:region::/connectors/ImageClassificationAarch64JTX2/versions/2` | 
| ML-Bildklassifizierung x86\$164 |  Bildklassifikation Inferenzdienst für x86\$164 Plattformen. **ARN**: `arn:aws:greengrass:region::/connectors/ImageClassificationx86-64/versions/2` | 
| ML-Bildklassifizierung ARMv7 |  Inferenzdienst zur Bildklassifizierung für ARMv7 Plattformen. **ARN**: `arn:aws:greengrass:region::/connectors/ImageClassificationARMv7/versions/2` | 

------
#### [ Version 1 ]


| Konnektor | Beschreibung und ARN | 
| --- | --- | 
| ML-Bildklassifizierung: Aarch64 JTX2 |  Inferenzdienst zur Bildklassifizierung für NVIDIA Jetson. TX2 Unterstützt die GPU-Beschleunigung. **ARN**: `arn:aws:greengrass:region::/connectors/ImageClassificationAarch64JTX2/versions/1` | 
| ML-Bildklassifizierung x86\$164 |  Bildklassifikation Inferenzdienst für x86\$164 Plattformen. **ARN**: `arn:aws:greengrass:region::/connectors/ImageClassificationx86-64/versions/1` | 
| ML-Bildklassifizierung Armv7 |  Inferenzdienst zur Bildklassifizierung für ARMv7-Plattformen. **ARN**: `arn:aws:greengrass:region::/connectors/ImageClassificationARMv7/versions/1` | 

------

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

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

Für diese Konnektoren gelten die folgenden Anforderungen:

------
#### [ Version 2 ]
+ 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="req-image-classification-framework"></a>Abhängigkeiten für das auf dem Kerngerät installierte MXNet Apache-Framework. Weitere Informationen finden Sie unter [MXNet Abhängigkeiten auf dem AWS IoT Greengrass Core installieren](#image-classification-connector-config).
+ <a name="req-image-classification-resource"></a>Eine [ML-Ressource](ml-inference.md#ml-resources) in der Greengrass-Gruppe, die auf eine SageMaker KI-Modellquelle verweist. Dieses Modell muss durch den SageMaker KI-Algorithmus zur Bildklassifizierung trainiert werden. Weitere Informationen finden Sie unter [Algorithmus zur Bildklassifizierung](https://docs.aws.amazon.com/sagemaker/latest/dg/image-classification.html) im *Amazon SageMaker AI Developer Guide*.
+ <a name="req-image-classification-feedback"></a>Der [ML Feedback-Connector](ml-feedback-connector.md) wurde der Greengrass-Gruppe hinzugefügt und konfiguriert. Nur erforderlich, wenn Sie den Konnektor verwenden möchten, um Modelleingabedaten hochzuladen und Prognosen in einem MQTT-Thema zu veröffentlichen.
+ <a name="req-image-classification-policy"></a>Die [Greengrass-Gruppenrolle](group-role.md) ist so konfiguriert, dass sie die `sagemaker:DescribeTrainingJob` Aktion für den Ziel-Trainingsjob zulässt, wie im folgenden Beispiel für eine IAM-Richtlinie gezeigt.

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "sagemaker:DescribeTrainingJob"
              ],
              "Resource": "arn:aws:sagemaker:us-east-1:123456789012:training-job/training-job-name"
          }
      ]
  }
  ```

------

  <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).

  Sie können granularen oder bedingten Zugriff auf Ressourcen gewähren (etwa mit einem Benennungsschema mit Platzhaltern \$1). Wenn Sie den Zielausbildungsjob in future ändern, stellen Sie sicher, dass Sie die Gruppenrolle aktualisieren.
+ AWS IoT Greengrass Für die Interaktion mit diesem Connector ist das [Machine Learning SDK](lambda-functions.md#lambda-sdks-ml) v1.1.0 erforderlich.

------
#### [ Version 1 ]
+ AWS IoT Greengrass Core Software 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="req-image-classification-framework"></a>Abhängigkeiten für das auf dem Kerngerät installierte MXNet Apache-Framework. Weitere Informationen finden Sie unter [MXNet Abhängigkeiten auf dem AWS IoT Greengrass Core installieren](#image-classification-connector-config).
+ <a name="req-image-classification-resource"></a>Eine [ML-Ressource](ml-inference.md#ml-resources) in der Greengrass-Gruppe, die auf eine SageMaker KI-Modellquelle verweist. Dieses Modell muss durch den SageMaker KI-Algorithmus zur Bildklassifizierung trainiert werden. Weitere Informationen finden Sie unter [Algorithmus zur Bildklassifizierung](https://docs.aws.amazon.com/sagemaker/latest/dg/image-classification.html) im *Amazon SageMaker AI Developer Guide*.
+ <a name="req-image-classification-policy"></a>Die [Greengrass-Gruppenrolle](group-role.md) ist so konfiguriert, dass sie die `sagemaker:DescribeTrainingJob` Aktion für den Ziel-Trainingsjob zulässt, wie im folgenden Beispiel für eine IAM-Richtlinie gezeigt.

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "sagemaker:DescribeTrainingJob"
              ],
              "Resource": "arn:aws:sagemaker:us-east-1:123456789012:training-job/training-job-name"
          }
      ]
  }
  ```

------

  <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).

  Sie können granularen oder bedingten Zugriff auf Ressourcen gewähren (etwa mit einem Benennungsschema mit Platzhaltern \$1). Wenn Sie den Zielausbildungsjob in future ändern, stellen Sie sicher, dass Sie die Gruppenrolle aktualisieren.
+ AWS IoT Greengrass Für die Interaktion mit diesem Connector ist [Machine Learning SDK](lambda-functions.md#lambda-sdks-ml) v1.0.0 oder höher erforderlich.

------

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

Diese Konnektoren stellen die folgenden Parameter bereit.

------
#### [ Version 2 ]

`MLModelDestinationPath`  <a name="param-image-classification-mdlpath"></a>
Der absolute lokale Pfad der ML-Ressource innerhalb der Lambda-Umgebung. Dies ist der Zielpfad, der für die ML-Ressource angegeben ist.  
Wenn Sie die ML-Ressource in der Konsole angelegt haben, ist dies der lokale Pfad.
Anzeigename in der AWS IoT Konsole: **Zielpfad des Modells**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `.+`

`MLModelResourceId`  <a name="param-image-classification-mdlresourceid"></a>
Die ID der ML-Ressource, die auf das Quellmodell verweist.  
Anzeigename in der AWS IoT Konsole: **SageMaker Job-ARN-Ressource**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `[a-zA-Z0-9:_-]+`

`MLModelSageMakerJobArn`  <a name="param-image-classification-mdljobarn"></a>
Der ARN des SageMaker KI-Trainingsjobs, der die SageMaker KI-Modellquelle darstellt. Das Modell muss mit dem SageMaker KI-Bildklassifizierungsalgorithmus trainiert werden.  
Anzeigename in der AWS IoT Konsole: **SageMaker Job ARN**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `^arn:aws:sagemaker:[a-zA-Z0-9-]+:[0-9]+:training-job/[a-zA-Z0-9][a-zA-Z0-9-]+$`

`LocalInferenceServiceName`  <a name="param-image-classification-svcname"></a>
Der Name für den lokalen Inferenzdienst. Benutzerdefinierte Lambda-Funktionen rufen den Dienst auf, indem sie den Namen an die `invoke_inference_service` Funktion des AWS IoT Greengrass Machine Learning SDK übergeben. Ein Beispiel finden Sie unter [Beispiel für eine Verwendung](#image-classification-connector-usage).  
Anzeigename in der AWS IoT Konsole: Name des **lokalen Inferenzdienstes**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `[a-zA-Z0-9][a-zA-Z0-9-]{1,62}`

`LocalInferenceServiceTimeoutSeconds`  <a name="param-image-classification-svctimeout"></a>
Die Zeitspanne (in Sekunden), nach der die Inferenzanforderung beendet wird. Der minimale Wert beträgt 1.  
Anzeigename in der AWS IoT Konsole: **Timeout (Sekunde)**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `[1-9][0-9]*`

`LocalInferenceServiceMemoryLimitKB`  <a name="param-image-classification-svcmemorylimit"></a>
Die Speichergröße (in KB), auf die der Service Zugriff hat. Der minimale Wert beträgt 1.  
Anzeigename in der AWS IoT Konsole: **Speicherlimit (KB)**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `[1-9][0-9]*`

`GPUAcceleration`  <a name="param-image-classification-gpuacceleration"></a>
Der CPU- oder GPU-(beschleunigte) Berechnungskontext. Diese Eigenschaft gilt nur für den JTX2 Aarch64-Konnektor von ML Image Classification.  
**Anzeigename in der AWS IoT Konsole: GPU-Beschleunigung**  
Erforderlich: `true`  
Typ: `string`  
Gültige Werte: `CPU` oder `GPU`.

`MLFeedbackConnectorConfigId`  <a name="param-image-classification-feedbackconfigid"></a>
Die ID der Feedback-Konfiguration, die zum Hochladen von Modelleingabedaten verwendet werden soll. Diese muss mit der ID einer Feedback-Konfiguration übereinstimmen, die für den [ML-Feedback-Konnektor](ml-feedback-connector.md)definiert ist.  
Dieser Parameter ist nur erforderlich, wenn Sie den ML-Feedback-Konnektor verwenden möchten, um Modelleingabedaten hochzuladen und Prognosen in einem MQTT-Thema zu veröffentlichen.  
Anzeigename in der AWS IoT Konsole: **Konfigurations-ID des ML Feedback-Connectors**  
Erforderlich: `false`  
Typ: `string`  
Gültiges Muster: `^$|^[a-zA-Z0-9][a-zA-Z0-9-]{1,62}$`

------
#### [ Version 1 ]

`MLModelDestinationPath`  <a name="param-image-classification-mdlpath"></a>
Der absolute lokale Pfad der ML-Ressource innerhalb der Lambda-Umgebung. Dies ist der Zielpfad, der für die ML-Ressource angegeben ist.  
Wenn Sie die ML-Ressource in der Konsole angelegt haben, ist dies der lokale Pfad.
Anzeigename in der AWS IoT Konsole: **Zielpfad des Modells**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `.+`

`MLModelResourceId`  <a name="param-image-classification-mdlresourceid"></a>
Die ID der ML-Ressource, die auf das Quellmodell verweist.  
Anzeigename in der AWS IoT Konsole: **SageMaker Job-ARN-Ressource**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `[a-zA-Z0-9:_-]+`

`MLModelSageMakerJobArn`  <a name="param-image-classification-mdljobarn"></a>
Der ARN des SageMaker KI-Trainingsjobs, der die SageMaker KI-Modellquelle darstellt. Das Modell muss mit dem SageMaker KI-Bildklassifizierungsalgorithmus trainiert werden.  
Anzeigename in der AWS IoT Konsole: **SageMaker Job ARN**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `^arn:aws:sagemaker:[a-zA-Z0-9-]+:[0-9]+:training-job/[a-zA-Z0-9][a-zA-Z0-9-]+$`

`LocalInferenceServiceName`  <a name="param-image-classification-svcname"></a>
Der Name für den lokalen Inferenzdienst. Benutzerdefinierte Lambda-Funktionen rufen den Dienst auf, indem sie den Namen an die `invoke_inference_service` Funktion des AWS IoT Greengrass Machine Learning SDK übergeben. Ein Beispiel finden Sie unter [Beispiel für eine Verwendung](#image-classification-connector-usage).  
Anzeigename in der AWS IoT Konsole: Name des **lokalen Inferenzdienstes**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `[a-zA-Z0-9][a-zA-Z0-9-]{1,62}`

`LocalInferenceServiceTimeoutSeconds`  <a name="param-image-classification-svctimeout"></a>
Die Zeitspanne (in Sekunden), nach der die Inferenzanforderung beendet wird. Der minimale Wert beträgt 1.  
Anzeigename in der AWS IoT Konsole: **Timeout (Sekunde)**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `[1-9][0-9]*`

`LocalInferenceServiceMemoryLimitKB`  <a name="param-image-classification-svcmemorylimit"></a>
Die Speichergröße (in KB), auf die der Service Zugriff hat. Der minimale Wert beträgt 1.  
Anzeigename in der AWS IoT Konsole: **Speicherlimit (KB)**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `[1-9][0-9]*`

`GPUAcceleration`  <a name="param-image-classification-gpuacceleration"></a>
Der CPU- oder GPU-(beschleunigte) Berechnungskontext. Diese Eigenschaft gilt nur für den JTX2 Aarch64-Konnektor von ML Image Classification.  
**Anzeigename in der AWS IoT Konsole: GPU-Beschleunigung**  
Erforderlich: `true`  
Typ: `string`  
Gültige Werte: `CPU` oder `GPU`.

------

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

Die folgenden CLI-Befehle erstellen eine `ConnectorDefinition` mit einer ersten Version, die einen ML Image Classification Connector enthält.

**Example: CPU Instance (Beispiel: CPU-Instance)**  
In diesem Beispiel wird eine Instanz des ML Image Classification ARMv7L-Connectors erstellt.  

```
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{
    "Connectors": [
        {
            "Id": "MyImageClassificationConnector",
            "ConnectorArn": "arn:aws:greengrass:region::/connectors/ImageClassificationARMv7/versions/2",
            "Parameters": {
                "MLModelDestinationPath": "/path-to-model",
                "MLModelResourceId": "my-ml-resource",
                "MLModelSageMakerJobArn": "arn:aws:sagemaker:us-west-2:123456789012:training-job:MyImageClassifier",
                "LocalInferenceServiceName": "imageClassification",
                "LocalInferenceServiceTimeoutSeconds": "10",
                "LocalInferenceServiceMemoryLimitKB": "500000",
                "MLFeedbackConnectorConfigId": "MyConfig0"
            }
        }
    ]
}'
```

**Example: GPU Instance (Beispiel: GPU-Instance)**  
In diesem Beispiel wird eine Instanz des ML Image Classification JTX2 Aarch64-Connectors erstellt, der die GPU-Beschleunigung auf einem NVIDIA-Jetson-Board unterstützt. TX2   

```
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{
    "Connectors": [
        {
            "Id": "MyImageClassificationConnector",
            "ConnectorArn": "arn:aws:greengrass:region::/connectors/ImageClassificationAarch64JTX2/versions/2",
            "Parameters": {
                "MLModelDestinationPath": "/path-to-model",
                "MLModelResourceId": "my-ml-resource",
                "MLModelSageMakerJobArn": "arn:aws:sagemaker:us-west-2:123456789012:training-job:MyImageClassifier",
                "LocalInferenceServiceName": "imageClassification",
                "LocalInferenceServiceTimeoutSeconds": "10",
                "LocalInferenceServiceMemoryLimitKB": "500000",
                "GPUAcceleration": "GPU",
                "MLFeedbackConnectorConfigId": "MyConfig0"
            }
        }
    ]
}'
```

**Anmerkung**  
Die Lambda-Funktion in diesen Steckverbindern hat einen [langlebigen Lebenszyklus](lambda-functions.md#lambda-lifecycle).

**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="image-classification-connector-data-input"></a>

 Diese Konnektoren akzeptieren eine Bilddatei als Eingabe. Eingabebilddateien müssen im `jpeg`- oder `png`-Format vorliegen. Weitere Informationen finden Sie unter [Beispiel für eine Verwendung](#image-classification-connector-usage). 

Diese Konnektoren akzeptieren keine MQTT-Nachrichten als Eingabedaten.

## Ausgabedaten
<a name="image-classification-connector-data-output"></a>

Diese Konnektoren geben eine formatierte Prognose für das im Eingabebild identifizierte Objekt zurück:

```
[0.3,0.1,0.04,...]
```

Die Prognose enthält eine Liste von Werten, die den Kategorien entsprechen, die während der Modellschulung im Schulungs-Dataset verwendet werden. Jeder Wert stellt die Wahrscheinlichkeit dar, dass das Bild unter die entsprechende Kategorie fällt. Die Kategorie mit der höchsten Wahrscheinlichkeit ist die dominante Prognose.

Diese Konnektoren veröffentlichen keine MQTT-Nachrichten als Ausgabedaten.

## Beispiel für eine Verwendung
<a name="image-classification-connector-usage"></a>

Die folgende Lambda-Beispielfunktion verwendet das [AWS IoT Greengrass Machine Learning SDK](lambda-functions.md#lambda-sdks-ml), um mit einem ML Image Classification Connector zu interagieren.

**Anmerkung**  
 Sie können das SDK von der Downloadseite des [AWS IoT Greengrass Machine Learning SDK](what-is-gg.md#gg-ml-sdk-download) herunterladen.

Das Beispiel initialisiert einen SDK-Client und ruft synchron die Funktion `invoke_inference_service` des SDK auf, um den lokalen Inferenzdienst aufzurufen. Es wird der Algorithmustyp, der Servicename, der Bildtyp und der Bildinhalt übergeben. Anschließend analysiert das Beispiel die Service-Antwort, um die Wahrscheinlichkeitsergebnisse (Vorhersagen) zu erhalten.

------
#### [ Python 3.7 ]

```
import logging
from threading import Timer

import numpy as np

import greengrass_machine_learning_sdk as ml

# We assume the inference input image is provided as a local file
# to this inference client Lambda function.
with open('/test_img/test.jpg', 'rb') as f:
    content = bytearray(f.read())

client = ml.client('inference')

def infer():
    logging.info('invoking Greengrass ML Inference service')

    try:
        resp = client.invoke_inference_service(
            AlgoType='image-classification',
            ServiceName='imageClassification',
            ContentType='image/jpeg',
            Body=content
        )
    except ml.GreengrassInferenceException as e:
        logging.info('inference exception {}("{}")'.format(e.__class__.__name__, e))
        return
    except ml.GreengrassDependencyException as e:
        logging.info('dependency exception {}("{}")'.format(e.__class__.__name__, e))
        return

    logging.info('resp: {}'.format(resp))
    predictions = resp['Body'].read().decode("utf-8")
    logging.info('predictions: {}'.format(predictions))
    
    # The connector output is in the format: [0.3,0.1,0.04,...]
    # Remove the '[' and ']' at the beginning and end.
    predictions = predictions[1:-1]
    count = len(predictions.split(','))
    predictions_arr = np.fromstring(predictions, count=count, sep=',')

    # Perform business logic that relies on the predictions_arr, which is an array
    # of probabilities.
    
    # Schedule the infer() function to run again in one second.
    Timer(1, infer).start()
    return

infer()

def function_handler(event, context):
    return
```

------
#### [ Python 2.7 ]

```
import logging
from threading import Timer

import numpy

import greengrass_machine_learning_sdk as gg_ml

# The inference input image.
with open("/test_img/test.jpg", "rb") as f:
    content = f.read()

client = gg_ml.client("inference")


def infer():
    logging.info("Invoking Greengrass ML Inference service")

    try:
        resp = client.invoke_inference_service(
            AlgoType="image-classification",
            ServiceName="imageClassification",
            ContentType="image/jpeg",
            Body=content,
        )
    except gg_ml.GreengrassInferenceException as e:
        logging.info('Inference exception %s("%s")', e.__class__.__name__, e)
        return
    except gg_ml.GreengrassDependencyException as e:
        logging.info('Dependency exception %s("%s")', e.__class__.__name__, e)
        return

    logging.info("Response: %s", resp)
    predictions = resp["Body"].read()
    logging.info("Predictions: %s", predictions)

    # The connector output is in the format: [0.3,0.1,0.04,...]
    # Remove the '[' and ']' at the beginning and end.
    predictions = predictions[1:-1]
    predictions_arr = numpy.fromstring(predictions, sep=",")
    logging.info("Split into %s predictions.", len(predictions_arr))

    # Perform business logic that relies on predictions_arr, which is an array
    # of probabilities.

    # Schedule the infer() function to run again in one second.
    Timer(1, infer).start()


infer()


# In this example, the required AWS Lambda handler is never called.
def function_handler(event, context):
    return
```

------

Die `invoke_inference_service` Funktion im AWS IoT Greengrass Machine Learning SDK akzeptiert die folgenden Argumente.


| Argument | Description | 
| --- | --- | 
| `AlgoType` | Der Name des Algorithmentyps, der für die Inferenz verwendet werden soll. Derzeit wird nur `image-classification` unterstützt. Erforderlich: `true` Typ: `string` Zulässige Werte: `image-classification` | 
| `ServiceName` | Der Name des lokalen Inferenzdienstes. Verwenden Sie den Namen, den Sie für den Parameter `LocalInferenceServiceName` bei der Konfiguration des Konnektors angegeben haben. Erforderlich: `true` Typ: `string` | 
| `ContentType` | Der Mime-Typ des Eingangsbildes. Erforderlich: `true` Typ: `string` Zulässige Werte: `image/jpeg, image/png` | 
| `Body` | Der Inhalt der Eingabebilddatei. Erforderlich: `true` Typ: `binary` | 

## MXNet Abhängigkeiten auf dem AWS IoT Greengrass Core installieren
<a name="image-classification-connector-config"></a>

Um einen ML Image Classification Connector zu verwenden, müssen Sie die Abhängigkeiten für das MXNet Apache-Framework auf dem Kerngerät installieren. Die Konnektoren verwenden das Framework für die Bereitstellung des ML-Modells.

**Anmerkung**  
Diese Konnektoren sind mit einer vorkompilierten MXNet Bibliothek gebündelt, sodass Sie das MXNet Framework nicht auf dem Kerngerät installieren müssen. 

AWS IoT Greengrass bietet Skripte zur Installation der Abhängigkeiten für die folgenden gängigen Plattformen und Geräte (oder zur Verwendung als Referenz für deren Installation). Wenn Sie eine andere Plattform oder ein anderes Gerät verwenden, finden Sie in der [MXNet Dokumentation](https://mxnet.apache.org/) zu Ihrer Konfiguration weitere Informationen.

Stellen Sie vor der Installation der MXNet Abhängigkeiten sicher, dass die erforderlichen [Systembibliotheken](#image-classification-connector-logging) (mit den angegebenen Mindestversionen) auf dem Gerät vorhanden sind.

------
#### [ NVIDIA Jetson TX2 ]

1. Installieren Sie CUDA Toolkit 9.0 und cuDNN 7.0. Befolgen Sie die Anweisungen unter [Einrichten anderer Geräte](setup-filter.other.md) im Tutorial "Erste Schritte".

1. Aktivieren Sie Universum-Repositorys, damit der Konnektor offene, von der Community verwaltete Software installieren kann. Weitere Informationen finden Sie unter [ Repositories/Ubuntu](https://help.ubuntu.com/community/Repositories/Ubuntu) in der Ubuntu-Dokumentation.

   1. Öffnen Sie die `/etc/apt/sources.list` Datei.

   1. Achten Sie darauf, dass die folgenden Zeilen nicht kommentiert sind.

      ```
      deb http://ports.ubuntu.com/ubuntu-ports/ xenial universe
      deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial universe
      deb http://ports.ubuntu.com/ubuntu-ports/ xenial-updates universe
      deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-updates universe
      ```

1. Speichern Sie eine Kopie des folgenden Installationsskripts in einer Datei namens `nvidiajtx2.sh` auf dem Core-Gerät.

------
#### [ Python 3.7 ]

   ```
   #!/bin/bash
   set -e
   
   echo "Installing dependencies on the system..."
   echo 'Assuming that universe repos are enabled and checking dependencies...'
   apt-get -y update
   apt-get -y dist-upgrade
   apt-get install -y liblapack3 libopenblas-dev liblapack-dev libatlas-base-dev
   apt-get install -y python3.7 python3.7-dev
   
   python3.7 -m pip install --upgrade pip
   python3.7 -m pip install numpy==1.15.0
   python3.7 -m pip install opencv-python || echo 'Error: Unable to install OpenCV with pip on this platform. Try building the latest OpenCV from source (https://github.com/opencv/opencv).'
   
   echo 'Dependency installation/upgrade complete.'
   ```

**Anmerkung**  
<a name="opencv-build-from-source"></a>Wenn [OpenCV](https://github.com/opencv/opencv) mit diesem Skript nicht erfolgreich installiert wird, können Sie versuchen, es aus der Quelle zu erstellen. Weitere Informationen finden Sie unter [ Installation in Linux](https://docs.opencv.org/4.1.0/d7/d9f/tutorial_linux_install.html) in der OpenCV-Dokumentation oder in anderen Online-Ressourcen für Ihre Plattform.

------
#### [ Python 2.7 ]

   ```
   #!/bin/bash
   set -e
   
   echo "Installing dependencies on the system..."
   echo 'Assuming that universe repos are enabled and checking dependencies...'
   apt-get -y update
   apt-get -y dist-upgrade
   apt-get install -y liblapack3 libopenblas-dev liblapack-dev libatlas-base-dev python-dev
   
   echo 'Install latest pip...'
   wget https://bootstrap.pypa.io/get-pip.py
   python get-pip.py
   rm get-pip.py
   
   pip install numpy==1.15.0 scipy
   
   echo 'Dependency installation/upgrade complete.'
   ```

------

1. Führen Sie in dem Verzeichnis, in dem Sie die Datei gespeichert haben, den folgenden Befehl aus:

   ```
   sudo nvidiajtx2.sh
   ```

------
#### [ x86\$164 (Ubuntu or Amazon Linux)  ]

1. Speichern Sie eine Kopie des folgenden Installationsskripts in einer Datei namens `x86_64.sh` auf dem Core-Gerät.

------
#### [ Python 3.7 ]

   ```
   #!/bin/bash
   set -e
   
   echo "Installing dependencies on the system..."
   
   release=$(awk -F= '/^NAME/{print $2}' /etc/os-release)
   
   if [ "$release" == '"Ubuntu"' ]; then
     # Ubuntu. Supports EC2 and DeepLens. DeepLens has all the dependencies installed, so
     # this is mostly to prepare dependencies on Ubuntu EC2 instance.
     apt-get -y update
     apt-get -y dist-upgrade
   
     apt-get install -y libgfortran3 libsm6 libxext6 libxrender1
     apt-get install -y python3.7 python3.7-dev
   elif [ "$release" == '"Amazon Linux"' ]; then
     # Amazon Linux. Expect python to be installed already
     yum -y update
     yum -y upgrade
   
     yum install -y compat-gcc-48-libgfortran libSM libXrender libXext
   else
     echo "OS Release not supported: $release"
     exit 1
   fi
   
   python3.7 -m pip install --upgrade pip
   python3.7 -m pip install numpy==1.15.0
   python3.7 -m pip install opencv-python || echo 'Error: Unable to install OpenCV with pip on this platform. Try building the latest OpenCV from source (https://github.com/opencv/opencv).'
   
   echo 'Dependency installation/upgrade complete.'
   ```

**Anmerkung**  
<a name="opencv-build-from-source"></a>Wenn [OpenCV](https://github.com/opencv/opencv) mit diesem Skript nicht erfolgreich installiert wird, können Sie versuchen, es aus der Quelle zu erstellen. Weitere Informationen finden Sie unter [ Installation in Linux](https://docs.opencv.org/4.1.0/d7/d9f/tutorial_linux_install.html) in der OpenCV-Dokumentation oder in anderen Online-Ressourcen für Ihre Plattform.

------
#### [ Python 2.7 ]

   ```
   #!/bin/bash
   set -e
   
   echo "Installing dependencies on the system..."
   
   release=$(awk -F= '/^NAME/{print $2}' /etc/os-release)
   
   if [ "$release" == '"Ubuntu"' ]; then
     # Ubuntu. Supports EC2 and DeepLens. DeepLens has all the dependencies installed, so
     # this is mostly to prepare dependencies on Ubuntu EC2 instance.
     apt-get -y update
     apt-get -y dist-upgrade
   
     apt-get install -y libgfortran3 libsm6 libxext6 libxrender1 python-dev python-pip
   elif [ "$release" == '"Amazon Linux"' ]; then
     # Amazon Linux. Expect python to be installed already
     yum -y update
     yum -y upgrade
   
     yum install -y compat-gcc-48-libgfortran libSM libXrender libXext python-pip
   else
     echo "OS Release not supported: $release"
     exit 1
   fi
   
   pip install numpy==1.15.0 scipy opencv-python
   
   echo 'Dependency installation/upgrade complete.'
   ```

------

1. Führen Sie in dem Verzeichnis, in dem Sie die Datei gespeichert haben, den folgenden Befehl aus:

   ```
   sudo x86_64.sh
   ```

------
#### [ Armv7 (Raspberry Pi) ]

1. Speichern Sie eine Kopie des folgenden Installationsskripts in einer Datei namens `armv7l.sh` auf dem Core-Gerät.

------
#### [ Python 3.7 ]

   ```
   #!/bin/bash
   set -e
   
   echo "Installing dependencies on the system..."
   
   apt-get update
   apt-get -y upgrade
   
   apt-get install -y liblapack3 libopenblas-dev liblapack-dev
   apt-get install -y python3.7 python3.7-dev
   
   python3.7 -m pip install --upgrade pip
   python3.7 -m pip install numpy==1.15.0
   python3.7 -m pip install opencv-python || echo 'Error: Unable to install OpenCV with pip on this platform. Try building the latest OpenCV from source (https://github.com/opencv/opencv).'
   
   echo 'Dependency installation/upgrade complete.'
   ```

**Anmerkung**  
<a name="opencv-build-from-source"></a>Wenn [OpenCV](https://github.com/opencv/opencv) mit diesem Skript nicht erfolgreich installiert wird, können Sie versuchen, es aus der Quelle zu erstellen. Weitere Informationen finden Sie unter [ Installation in Linux](https://docs.opencv.org/4.1.0/d7/d9f/tutorial_linux_install.html) in der OpenCV-Dokumentation oder in anderen Online-Ressourcen für Ihre Plattform.

------
#### [ Python 2.7 ]

   ```
   #!/bin/bash
   set -e
   
   echo "Installing dependencies on the system..."
   
   apt-get update
   apt-get -y upgrade
   
   apt-get install -y liblapack3 libopenblas-dev liblapack-dev python-dev
   
   # python-opencv depends on python-numpy. The latest version in the APT repository is python-numpy-1.8.2
   # This script installs python-numpy first so that python-opencv can be installed, and then install the latest
   # numpy-1.15.x with pip
   apt-get install -y python-numpy python-opencv
   dpkg --remove --force-depends python-numpy
   
   echo 'Install latest pip...'
   wget https://bootstrap.pypa.io/get-pip.py
   python get-pip.py
   rm get-pip.py
   
   pip install --upgrade numpy==1.15.0 picamera scipy
   
   echo 'Dependency installation/upgrade complete.'
   ```

------

1. Führen Sie in dem Verzeichnis, in dem Sie die Datei gespeichert haben, den folgenden Befehl aus:

   ```
   sudo bash armv7l.sh
   ```
**Anmerkung**  
Auf einem Raspberry Pi ist die Installation von Machine Learning-Abhängigkeiten mithilfe von `pip` eine speicherintensive Operation, die dazu führen kann, dass das Gerät nicht mehr genügend Arbeitsspeicher hat und nicht mehr reagiert. Um dieses Problem zu umgehen, können Sie die Auslagerungsgröße vorübergehend erhöhen:  
Erhöhen Sie in `/etc/dphys-swapfile` den Wert der `CONF_SWAPSIZE`-Variable und führen Sie dann den folgenden Befehl aus, um `dphys-swapfile` neu zu starten.  

   ```
   /etc/init.d/dphys-swapfile restart
   ```

------

## Protokollierung und Problemlösungen
<a name="image-classification-connector-logging"></a>

Abhängig von Ihren Gruppeneinstellungen werden Ereignis- und Fehlerprotokolle in CloudWatch Logs, in das lokale Dateisystem oder in beide geschrieben. Protokolle von diesem Konnektor verwenden das Präfix `LocalInferenceServiceName`. Wenn sich der Konnektor nicht wie erwartet verhält, überprüfen Sie die Protokolle des Konnektors. Diese enthalten in der Regel nützliche Debugging-Informationen, wie z. B. eine fehlende ML-Bibliothek-Abhängigkeit oder die Ursache eines Fehlers beim Starten des Konnektors.

Wenn die AWS IoT Greengrass Gruppe so konfiguriert ist, dass sie lokale Protokolle schreibt, schreibt der Connector Protokolldateien in`greengrass-root/ggc/var/log/user/region/aws/`. Weitere Hinweise zur Greengrass-Protokollierung finden Sie unter[Überwachung mit AWS IoT Greengrass Protokollen](greengrass-logs-overview.md).

Verwenden Sie die folgenden Informationen, um Probleme mit den ML Image Classification-Konnektoren zu beheben.

**Erforderliche Systembibliotheken**

Auf den folgenden Registerkarten sind die Systembibliotheken aufgeführt, die für jeden ML Image Classification-Konnektor erforderlich sind.

------
#### [ ML Image Classification Aarch64 JTX2 ]


| Bibliothek | Mindestversion | 
| --- | --- | 
| ld-linux-aarch64.so.1 | GLIBC\$12.17 | 
| libc.so.6 | GLIBC\$12.17 | 
| libcublas.so.9.0 | nicht zutreffend | 
| libcudart.so.9.0 | nicht zutreffend | 
| libcudnn.so.7 | nicht zutreffend | 
| libcufft.so.9.0 | nicht zutreffend | 
| libcurand.so.9.0 | nicht zutreffend | 
| libcusolver.so.9.0 | nicht zutreffend | 
| libgcc\$1s.so.1 | GCC\$14.2.0 | 
| libgomp.so.1 | GOMP\$14.0, OMP\$11.0 | 
| libm.so.6 | GLIBC\$12.23 | 
| libpthread.so.0 | GLIBC\$12.17 | 
| librt.so.1 | GLIBC\$12.17 | 
| libstdc\$1\$1.so.6 | GLIBCXX\$13.4.21, CXXABI\$11.3.8 | 

------
#### [ ML Image Classification x86\$164 ]


| Bibliothek | Mindestversion | 
| --- | --- | 
| ld-linux-x86-64.so.2 | GCC\$14.0.0 | 
| libc.so.6 | GLIBC\$12.4 | 
| libgfortran.so.3 | GFORTRAN\$11.0 | 
| libm.so.6 | GLIBC\$12.23 | 
| libpthread.so.0 | GLIBC\$12.2.5 | 
| librt.so.1 | GLIBC\$12.2.5 | 
| libstdc\$1\$1.so.6 | CXXABI\$11.3.8, GLIBCXX\$13.4.21 | 

------
#### [ ML Image Classification Armv7 ]


| Bibliothek | Mindestversion | 
| --- | --- | 
| ld-linux-armhf.so.3 | GLIBC\$12.4 | 
| libc.so.6 | GLIBC\$12.7 | 
| libgcc\$1s.so.1 | GCC\$14.0.0 | 
| libgfortran.so.3 | GFORTRAN\$11.0 | 
| libm.so.6 | GLIBC\$12.4 | 
| libpthread.so.0 | GLIBC\$12.4 | 
| librt.so.1 | GLIBC\$12.4 | 
| libstdc\$1\$1.so.6 | CXXABI\$11.3.8, CXXABI\$1ARM\$11.3.3, GLIBCXX\$13.4.20 | 

------

**Problembereiche**


| Symptom | Lösung | 
| --- | --- | 
|  Auf einem Raspberry Pi wird die folgende Fehlermeldung protokolliert, und Sie verwenden nicht die Kamera: `Failed to initialize libdc1394`   |  Führen Sie den folgenden Befehl aus, um den Treiber zu deaktivieren: <pre>sudo ln /dev/null /dev/raw1394</pre> Diese Operation ist flüchtig, und der symbolische Link wird nach dem Neustart verschwinden. Schlagen Sie im Handbuch Ihrer Betriebssystemverteilung nach, wie der Link beim Neustart automatisch erstellt wird.  | 

## Lizenzen
<a name="image-classification-connector-license"></a>

Die ML Image Classification Connectors beinhalten 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
+ [Deep Neural Network Library (DNNL)](https://github.com/intel/mkl-dnn)/Apache-Lizenz 2.0
+ [OpenMP\$1 Runtime Library](https://software.intel.com/content/www/us/en/develop/documentation/cpp-compiler-developer-guide-and-reference/top/optimization-and-programming-guide/openmp-support/openmp-library-support/openmp-run-time-library-routines.html)/Siehe [Lizenzierung der Intel OpenMP Runtime Library](#openmp-license).
+ [mxnet](https://pypi.org/project/mxnet/)/Apache-Lizenz 2.0
+ <a name="six-license"></a>[six](https://github.com/benjaminp/six)/MIT

**Lizenzierung der Intel OpenMP Runtime Library**. Die Intel® OpenMP\$1 Runtime ist zweifach lizenziert, mit einer kommerziellen (COM) -Lizenz als Teil der Intel® Parallel Studio XE Suite-Produkte und einer BSD-Open-Source-Lizenz (OSS).

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="image-classification-connector-changelog"></a>

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


| Version | Änderungen | 
| --- | --- | 
| 2 | Der `MLFeedbackConnectorConfigId` Parameter wurde hinzugefügt, um die Verwendung des [ML-Feedback-Konnektors](ml-feedback-connector.md) zum Hochladen von Modelleingabedaten, zum Veröffentlichen von Vorhersagen zu einem MQTT-Thema und zum Veröffentlichen von Metriken auf Amazon CloudWatch zu unterstützen.  | 
| 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="image-classification-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)
+ [Durchführen von Machine Learning-Inferenzen](ml-inference.md)
+ [Algorithmus zur Bildklassifizierung](https://docs.aws.amazon.com/sagemaker/latest/dg/image-classification.html) im *Amazon SageMaker AI Developer Guide*

# Anschluss zur ML-Objekterkennung
<a name="obj-detection-connector"></a>

**Warnung**  <a name="connectors-extended-life-phase-warning"></a>
Dieser Konnektor befindet sich in der *Phase mit verlängerter Lebensdauer* und veröffentlicht AWS IoT Greengrass keine Updates, die Funktionen, Verbesserungen vorhandener Funktionen, Sicherheitspatches oder Bugfixes bieten. Weitere Informationen finden Sie unter [AWS IoT Greengrass Version 1 Wartungspolitik](maintenance-policy.md).

Die [ML-Objekterkennungs-Konnektoren](connectors.md) bieten einen Inferenzdienst für maschinelles Lernen (ML), der auf dem AWS IoT Greengrass Kern ausgeführt wird. Dieser lokale Inferenzdienst führt die Objekterkennung mithilfe eines Objekterkennungsmodells durch, das vom SageMaker AI Neo Deep Learning-Compiler kompiliert wurde. Es werden zwei Arten von Objekterkennungsmodellen unterstützt: Single Shot Multibox Detector (SSD) und You Only Look Once (YOLO) v3. Weitere Informationen finden Sie unter [Objekterkennungsmodell-Anforderungen](#obj-detection-connector-req-model).

 Benutzerdefinierte Lambda-Funktionen verwenden das AWS IoT Greengrass Machine Learning SDK, um Inferenzanfragen an den lokalen Inferenzdienst zu senden. Der Service führt eine lokale Inferenz für ein Eingabebild aus und gibt eine Liste mit Voraussagen für jedes im Bild erkannte Objekt zurück. Jede Voraussage enthält eine Objektkategorie, einen Zuverlässigkeitswert für Voraussagen und Pixelkoordinaten, die einen Begrenzungsrahmen um das vorhergesagte Objekt angeben. 

AWS IoT Greengrass bietet Konnektoren zur ML-Objekterkennung für mehrere Plattformen:


| Konnektor | Beschreibung und ARN | 
| --- | --- | 
| ML-Objekterkennung (Aarch64) JTX2 |  Inferenzdienst zur Objekterkennung für NVIDIA Jetson. TX2 Unterstützt die GPU-Beschleunigung.  **ARN**: `arn:aws:greengrass:region::/connectors/ObjectDetectionAarch64JTX2/versions/1`   | 
| ML-Objekterkennung x86\$164 |  Inferenzservice für die Objekterkennung für x86\$164-Plattformen.  **ARN**: `arn:aws:greengrass:region::/connectors/ObjectDetectionx86-64/versions/1`   | 
| ML-Objekterkennung ARMv7 |   Inferenzdienst zur Objekterkennung für ARMv7 Plattformen.   **ARN**: `arn:aws:greengrass:region::/connectors/ObjectDetectionARMv7/versions/1`   | 

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

Für diese Konnektoren gelten die folgenden Anforderungen:
+ 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.
+ Abhängigkeiten für die SageMaker AI Neo Deep Learning-Runtime, die auf dem Kerngerät installiert ist. Weitere Informationen finden Sie unter [Installation der Deep-Learning-Laufzeitabhängigkeiten von Neo auf dem AWS IoT Greengrass Core](#obj-detection-connector-config).
+ Eine [ML-Ressource](ml-inference.md#ml-resources) in der Greengrass-Gruppe. Die ML-Ressource muss auf einen Amazon S3 S3-Bucket verweisen, der ein Objekterkennungsmodell enthält. Weitere Informationen finden Sie unter [Amazon S3 S3-Modellquellen](ml-inference.md#s3-ml-resources).
**Anmerkung**  
Das Modell muss ein Objekterkennungsmodell des Typs Single Shot Multibox Detector oder You Only Look Once v3 sein. Es muss mit dem SageMaker AI Neo Deep Learning-Compiler kompiliert werden. Weitere Informationen finden Sie unter [Objekterkennungsmodell-Anforderungen](#obj-detection-connector-req-model).
+ <a name="req-image-classification-feedback"></a>Der [ML Feedback-Connector](ml-feedback-connector.md) wurde der Greengrass-Gruppe hinzugefügt und konfiguriert. Nur erforderlich, wenn Sie den Konnektor verwenden möchten, um Modelleingabedaten hochzuladen und Prognosen in einem MQTT-Thema zu veröffentlichen.
+ AWS IoT Greengrass Für die Interaktion mit diesem Connector ist das [Machine Learning SDK](lambda-functions.md#lambda-sdks-ml) v1.1.0 erforderlich.

### Objekterkennungsmodell-Anforderungen
<a name="obj-detection-connector-req-model"></a>

Die ML-Objekterkennungsanschlüsse unterstützen die Objekterkennungsmodelle Single Shot Multibox Detector (SSD) und You Only Look Once (YOLO) v3. Sie können die von [GluonCV](https://gluon-cv.mxnet.io) bereitgestellten Objekterkennungskomponenten verwenden, um das Modell mit Ihrem eigenen Datensatz zu trainieren. Sie können auch vorab trainierte Modelle aus dem GluonCV Model Zoo verwenden:
+ [Vortrainiertes SSD-Modell](https://gluon-cv.mxnet.io/build/examples_detection/demo_ssd.html)
+ [Vortrainiertes YOLO v3-Modell](https://gluon-cv.mxnet.io/build/examples_detection/demo_yolo.html)

Ihr Objekterkennungsmodell muss mit 512-x-512-Eingabebildern trainiert worden sein. Die vortrainierten Modelle aus dem GluonCV Model Zoo erfüllen diese Anforderung bereits.

Trainierte Objekterkennungsmodelle müssen mit dem SageMaker AI Neo Deep Learning-Compiler kompiliert werden. Stellen Sie beim Kompilieren sicher, dass die Zielhardware mit der Hardware Ihres Greengrass Core-Geräts übereinstimmt. Weitere Informationen finden Sie unter [ SageMaker AI Neo](https://docs.aws.amazon.com/sagemaker/latest/dg/neo.html) im *Amazon SageMaker AI Developer Guide*.

Das kompilierte Modell muss als ML-Ressource ([Amazon S3 S3-Modellquelle](ml-inference.md#s3-ml-resources)) derselben Greengrass-Gruppe wie der Connector hinzugefügt werden.

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

Diese Konnektoren stellen die folgenden Parameter bereit.

`MLModelDestinationPath`  
Der absolute Pfad zum Amazon S3 S3-Bucket, der das NEO-kompatible ML-Modell enthält. Dies ist der Zielpfad, der für die ML-Modellressource angegeben ist.  
Anzeigename in der AWS IoT Konsole: **Zielpfad des Modells**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `.+`

`MLModelResourceId`  
Die ID der ML-Ressource, die auf das Quellmodell verweist.  
Anzeigename in der AWS IoT Konsole: **Greengrass-Gruppen-ML-Ressource**  
Erforderlich: `true`  
Typ: `S3MachineLearningModelResource`  
Gültiges Muster: `^[a-zA-Z0-9:_-]+$`

`LocalInferenceServiceName`  
Der Name für den lokalen Inferenzdienst. Benutzerdefinierte Lambda-Funktionen rufen den Dienst auf, indem sie den Namen an die `invoke_inference_service` Funktion des AWS IoT Greengrass Machine Learning SDK übergeben. Ein Beispiel finden Sie unter [Beispiel für eine Verwendung](#obj-detection-connector-usage).  
Anzeigename in der AWS IoT Konsole: Name des **lokalen Inferenzdienstes**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `^[a-zA-Z0-9][a-zA-Z0-9-]{1,62}$`

`LocalInferenceServiceTimeoutSeconds`  
Die Zeitspanne (in Sekunden), nach der die Inferenzanforderung beendet wird. Der minimale Wert beträgt 1. Der Standardwert lautet 10.  
Anzeigename in der AWS IoT Konsole: **Timeout (Sekunde)**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `^[1-9][0-9]*$`

`LocalInferenceServiceMemoryLimitKB`  
Die Speichergröße (in KB), auf die der Service Zugriff hat. Der minimale Wert beträgt 1.  
Anzeigename in der AWS IoT Konsole: **Speicherlimit**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `^[1-9][0-9]*$`

`GPUAcceleration`  <a name="param-image-classification-gpuacceleration"></a>
Der CPU- oder GPU-(beschleunigte) Berechnungskontext. Diese Eigenschaft gilt nur für den JTX2 Aarch64-Konnektor von ML Image Classification.  
**Anzeigename in der AWS IoT Konsole: GPU-Beschleunigung**  
Erforderlich: `true`  
Typ: `string`  
Gültige Werte: `CPU` oder `GPU`.

`MLFeedbackConnectorConfigId`  <a name="param-image-classification-feedbackconfigid"></a>
Die ID der Feedback-Konfiguration, die zum Hochladen von Modelleingabedaten verwendet werden soll. Diese muss mit der ID einer Feedback-Konfiguration übereinstimmen, die für den [ML-Feedback-Konnektor](ml-feedback-connector.md)definiert ist.  
Dieser Parameter ist nur erforderlich, wenn Sie den ML-Feedback-Konnektor verwenden möchten, um Modelleingabedaten hochzuladen und Prognosen in einem MQTT-Thema zu veröffentlichen.  
Anzeigename in der AWS IoT Konsole: **Konfigurations-ID des ML Feedback-Connectors**  
Erforderlich: `false`  
Typ: `string`  
Gültiges Muster: `^$|^[a-zA-Z0-9][a-zA-Z0-9-]{1,62}$`

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

Der folgende CLI-Befehl erstellt eine `ConnectorDefinition` mit einer ersten Version, die einen ML-Objekterkennungs-Konnektor enthält. In diesem Beispiel wird eine Instanz des ML Object ARMv7l Detection-Konnektors erstellt.

```
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{
    "Connectors": [
        {
            "Id": "MyObjectDetectionConnector",
            "ConnectorArn": "arn:aws:greengrass:region::/connectors/ObjectDetectionARMv7/versions/1",
            "Parameters": {
                "MLModelDestinationPath": "/path-to-model",
                "MLModelResourceId": "my-ml-resource",
                "LocalInferenceServiceName": "objectDetection",
                "LocalInferenceServiceTimeoutSeconds": "10",
                "LocalInferenceServiceMemoryLimitKB": "500000",
                "MLFeedbackConnectorConfigId" : "object-detector-random-sampling"
            }
        }
    ]
}'
```

**Anmerkung**  
Die Lambda-Funktion in diesen Steckverbindern hat einen [langlebigen Lebenszyklus](lambda-functions.md#lambda-lifecycle).

**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="obj-detection-connector-data-input"></a>

 Diese Konnektoren akzeptieren eine Bilddatei als Eingabe. Eingabebilddateien müssen im `jpeg`- oder `png`-Format vorliegen. Weitere Informationen finden Sie unter [Beispiel für eine Verwendung](#obj-detection-connector-usage). 

Diese Konnektoren akzeptieren keine MQTT-Nachrichten als Eingabedaten.

## Ausgabedaten
<a name="obj-detection-connector-data-output"></a>

 Diese Konnektoren geben eine formatierte Liste der Voraussageergebnisse für die identifizierten Objekte im Eingabebild zurück: 

```
     {
         "prediction": [
             [
                 14,
                 0.9384938478469849,
                 0.37763649225234985,
                 0.5110225081443787,
                 0.6697432398796082,
                 0.8544386029243469
             ],
             [
                 14,
                 0.8859519958496094,
                 0,
                 0.43536216020584106,
                 0.3314110040664673,
                 0.9538808465003967
             ],
             [
                 12,
                 0.04128098487854004,
                 0.5976729989051819,
                 0.5747185945510864,
                 0.704264223575592,
                 0.857937216758728
             ],
             ...
         ]
     }
```

Jede Voraussage in der Liste wird von eckigen Klammern umschlossen und enthält sechs Werte:
+  Der erste Wert stellt die vorausgesagte Objektkategorie für das identifizierte Objekt dar. Objektkategorien und ihre entsprechenden Werte werden beim Training Ihres Machine-Learning-Modells zur Objekterkennung im Neo Deep Learning-Compiler bestimmt.
+ Der zweite Wert ist der Zuverlässigkeitswert für die Objektkategorievoraussage. Dieser Wert stellt die Wahrscheinlichkeit dar, mit der die Voraussage korrekt ist. 
+ Die letzten vier Werte entsprechen den Pixeldimensionen, die einen Begrenzungsrahmen um das vorausgesagte Objekt im Bild darstellen.

Diese Konnektoren veröffentlichen keine MQTT-Nachrichten als Ausgabedaten.

## Beispiel für eine Verwendung
<a name="obj-detection-connector-usage"></a>

Die folgende Lambda-Beispielfunktion verwendet das [AWS IoT Greengrass Machine Learning SDK](lambda-functions.md#lambda-sdks-ml), um mit einem ML Object Detection-Konnektor zu interagieren.

**Anmerkung**  
 Sie können das SDK von der Downloadseite des [AWS IoT Greengrass Machine Learning SDK](what-is-gg.md#gg-ml-sdk-download) herunterladen. 

Das Beispiel initialisiert einen SDK-Client und ruft synchron die Funktion `invoke_inference_service` des SDK auf, um den lokalen Inferenzdienst aufzurufen. Es wird der Algorithmustyp, der Servicename, der Bildtyp und der Bildinhalt übergeben. Anschließend analysiert das Beispiel die Service-Antwort, um die Wahrscheinlichkeitsergebnisse (Vorhersagen) zu erhalten.

```
import logging
from threading import Timer

import numpy as np

import greengrass_machine_learning_sdk as ml

# We assume the inference input image is provided as a local file
# to this inference client Lambda function.
with open('/test_img/test.jpg', 'rb') as f:
    content = bytearray(f.read())

client = ml.client('inference')

def infer():
    logging.info('invoking Greengrass ML Inference service')

    try:
        resp = client.invoke_inference_service(
            AlgoType='object-detection',
            ServiceName='objectDetection',
            ContentType='image/jpeg',
            Body=content
        )
    except ml.GreengrassInferenceException as e:
        logging.info('inference exception {}("{}")'.format(e.__class__.__name__, e))
        return
    except ml.GreengrassDependencyException as e:
        logging.info('dependency exception {}("{}")'.format(e.__class__.__name__, e))
        return

    logging.info('resp: {}'.format(resp))
    predictions = resp['Body'].read().decode("utf-8")
    logging.info('predictions: {}'.format(predictions))
    predictions = eval(predictions) 

    # Perform business logic that relies on the predictions.
    
    # Schedule the infer() function to run again in ten second.
    Timer(10, infer).start()
    return

infer()

def function_handler(event, context):
    return
```

Die `invoke_inference_service` Funktion im AWS IoT Greengrass Machine Learning SDK akzeptiert die folgenden Argumente.


| Argument | Beschreibung | 
| --- | --- | 
| `AlgoType` | Der Name des Algorithmentyps, der für die Inferenz verwendet werden soll. Derzeit wird nur `object-detection` unterstützt. Erforderlich: `true` Typ: `string` Zulässige Werte: `object-detection` | 
| `ServiceName` | Der Name des lokalen Inferenzdienstes. Verwenden Sie den Namen, den Sie für den Parameter `LocalInferenceServiceName` bei der Konfiguration des Konnektors angegeben haben. Erforderlich: `true` Typ: `string` | 
| `ContentType` | Der Mime-Typ des Eingangsbildes. Erforderlich: `true` Typ: `string` Zulässige Werte: `image/jpeg, image/png` | 
| `Body` | Der Inhalt der Eingabebilddatei. Erforderlich: `true` Typ: `binary` | 

## Installation der Deep-Learning-Laufzeitabhängigkeiten von Neo auf dem AWS IoT Greengrass Core
<a name="obj-detection-connector-config"></a>

Die ML Object Detection-Konnektoren sind im Lieferumfang der SageMaker AI Neo Deep Learning Runtime (DLR) enthalten. Die Konnektoren verwenden die Laufzeit, um das ML-Modell zu bedienen. Um diese Konnektoren zu verwenden, müssen Sie die Abhängigkeiten für die DLR auf Ihrem Core-Gerät installieren. 

Stellen Sie vor der Installation der DLR-Abhängigkeiten sicher, dass die erforderlichen [Systembibliotheken](#obj-detection-connector-logging) (mit den angegebenen Mindestversionen) auf dem Gerät vorhanden sind.

------
#### [ NVIDIA Jetson TX2 ]

1. Installieren Sie CUDA Toolkit 9.0 und cuDNN 7.0. Befolgen Sie die Anweisungen unter [Einrichten anderer Geräte](setup-filter.other.md) im Tutorial "Erste Schritte".

1. Aktivieren Sie Universum-Repositorys, damit der Konnektor offene, von der Community verwaltete Software installieren kann. Weitere Informationen finden Sie unter [ Repositories/Ubuntu](https://help.ubuntu.com/community/Repositories/Ubuntu) in der Ubuntu-Dokumentation.

   1. Öffnen Sie die `/etc/apt/sources.list` Datei.

   1. Achten Sie darauf, dass die folgenden Zeilen nicht kommentiert sind.

      ```
      deb http://ports.ubuntu.com/ubuntu-ports/ xenial universe
      deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial universe
      deb http://ports.ubuntu.com/ubuntu-ports/ xenial-updates universe
      deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-updates universe
      ```

1. Speichern Sie eine Kopie des folgenden Installationsskripts in einer Datei namens `nvidiajtx2.sh` auf dem Core-Gerät.

   ```
   #!/bin/bash
   set -e
   
   echo "Installing dependencies on the system..."
   echo 'Assuming that universe repos are enabled and checking dependencies...'
   apt-get -y update
   apt-get -y dist-upgrade
   apt-get install -y liblapack3 libopenblas-dev liblapack-dev libatlas-base-dev
   apt-get install -y python3.7 python3.7-dev
   
   python3.7 -m pip install --upgrade pip
   python3.7 -m pip install numpy==1.15.0
   python3.7 -m pip install opencv-python || echo 'Error: Unable to install OpenCV with pip on this platform. Try building the latest OpenCV from source (https://github.com/opencv/opencv).'
   
   echo 'Dependency installation/upgrade complete.'
   ```
**Anmerkung**  
<a name="opencv-build-from-source"></a>Wenn [OpenCV](https://github.com/opencv/opencv) mit diesem Skript nicht erfolgreich installiert wird, können Sie versuchen, es aus der Quelle zu erstellen. Weitere Informationen finden Sie unter [ Installation in Linux](https://docs.opencv.org/4.1.0/d7/d9f/tutorial_linux_install.html) in der OpenCV-Dokumentation oder in anderen Online-Ressourcen für Ihre Plattform.

1. Führen Sie in dem Verzeichnis, in dem Sie die Datei gespeichert haben, den folgenden Befehl aus:

   ```
   sudo nvidiajtx2.sh
   ```

------
#### [ x86\$164 (Ubuntu or Amazon Linux)  ]

1. Speichern Sie eine Kopie des folgenden Installationsskripts in einer Datei namens `x86_64.sh` auf dem Core-Gerät.

   ```
   #!/bin/bash
   set -e
   
   echo "Installing dependencies on the system..."
   
   release=$(awk -F= '/^NAME/{print $2}' /etc/os-release)
   
   if [ "$release" == '"Ubuntu"' ]; then
     # Ubuntu. Supports EC2 and DeepLens. DeepLens has all the dependencies installed, so
     # this is mostly to prepare dependencies on Ubuntu EC2 instance.
     apt-get -y update
     apt-get -y dist-upgrade
   
     apt-get install -y libgfortran3 libsm6 libxext6 libxrender1
     apt-get install -y python3.7 python3.7-dev
   elif [ "$release" == '"Amazon Linux"' ]; then
     # Amazon Linux. Expect python to be installed already
     yum -y update
     yum -y upgrade
   
     yum install -y compat-gcc-48-libgfortran libSM libXrender libXext
   else
     echo "OS Release not supported: $release"
     exit 1
   fi
   
   python3.7 -m pip install --upgrade pip
   python3.7 -m pip install numpy==1.15.0
   python3.7 -m pip install opencv-python || echo 'Error: Unable to install OpenCV with pip on this platform. Try building the latest OpenCV from source (https://github.com/opencv/opencv).'
   
   echo 'Dependency installation/upgrade complete.'
   ```
**Anmerkung**  
<a name="opencv-build-from-source"></a>Wenn [OpenCV](https://github.com/opencv/opencv) mit diesem Skript nicht erfolgreich installiert wird, können Sie versuchen, es aus der Quelle zu erstellen. Weitere Informationen finden Sie unter [ Installation in Linux](https://docs.opencv.org/4.1.0/d7/d9f/tutorial_linux_install.html) in der OpenCV-Dokumentation oder in anderen Online-Ressourcen für Ihre Plattform.

1. Führen Sie in dem Verzeichnis, in dem Sie die Datei gespeichert haben, den folgenden Befehl aus:

   ```
   sudo x86_64.sh
   ```

------
#### [ ARMv7 (Raspberry Pi) ]

1. Speichern Sie eine Kopie des folgenden Installationsskripts in einer Datei namens `armv7l.sh` auf dem Core-Gerät.

   ```
   #!/bin/bash
   set -e
   
   echo "Installing dependencies on the system..."
   
   apt-get update
   apt-get -y upgrade
   
   apt-get install -y liblapack3 libopenblas-dev liblapack-dev
   apt-get install -y python3.7 python3.7-dev
   
   python3.7 -m pip install --upgrade pip
   python3.7 -m pip install numpy==1.15.0
   python3.7 -m pip install opencv-python || echo 'Error: Unable to install OpenCV with pip on this platform. Try building the latest OpenCV from source (https://github.com/opencv/opencv).'
   
   echo 'Dependency installation/upgrade complete.'
   ```
**Anmerkung**  
<a name="opencv-build-from-source"></a>Wenn [OpenCV](https://github.com/opencv/opencv) mit diesem Skript nicht erfolgreich installiert wird, können Sie versuchen, es aus der Quelle zu erstellen. Weitere Informationen finden Sie unter [ Installation in Linux](https://docs.opencv.org/4.1.0/d7/d9f/tutorial_linux_install.html) in der OpenCV-Dokumentation oder in anderen Online-Ressourcen für Ihre Plattform.

1. Führen Sie in dem Verzeichnis, in dem Sie die Datei gespeichert haben, den folgenden Befehl aus:

   ```
   sudo bash armv7l.sh
   ```
**Anmerkung**  
Auf einem Raspberry Pi ist die Installation von Machine Learning-Abhängigkeiten mithilfe von `pip` eine speicherintensive Operation, die dazu führen kann, dass das Gerät nicht mehr genügend Arbeitsspeicher hat und nicht mehr reagiert. Um dieses Problem zu umgehen, können Sie vorübergehend die Auslagerungsgröße erhöhen. Erhöhen Sie in `/etc/dphys-swapfile` den Wert der `CONF_SWAPSIZE`-Variable und führen Sie dann den folgenden Befehl aus, um `dphys-swapfile` neu zu starten.  

   ```
   /etc/init.d/dphys-swapfile restart
   ```

------

## Protokollierung und Problembehandlung
<a name="obj-detection-connector-logging"></a>

Abhängig von Ihren Gruppeneinstellungen werden Ereignis- und Fehlerprotokolle in CloudWatch Logs, in das lokale Dateisystem oder in beide geschrieben. Protokolle von diesem Konnektor verwenden das Präfix `LocalInferenceServiceName`. Wenn sich der Konnektor nicht wie erwartet verhält, überprüfen Sie die Protokolle des Konnektors. Diese enthalten in der Regel nützliche Debugging-Informationen, wie z. B. eine fehlende ML-Bibliothek-Abhängigkeit oder die Ursache eines Fehlers beim Starten des Konnektors.

Wenn die AWS IoT Greengrass Gruppe so konfiguriert ist, dass sie lokale Protokolle schreibt, schreibt der Connector Protokolldateien in`greengrass-root/ggc/var/log/user/region/aws/`. Weitere Hinweise zur Greengrass-Protokollierung finden Sie unter[Überwachung mit AWS IoT Greengrass Protokollen](greengrass-logs-overview.md).

Verwenden Sie die folgenden Informationen, um Probleme mit den ML-Objekterkennungs-Konnektoren zu beheben.

**Erforderliche Systembibliotheken**

Auf den folgenden Registerkarten sind die Systembibliotheken aufgeführt, die für jeden ML Object Detection-Konnektor erforderlich sind.

------
#### [ ML Object Detection Aarch64 JTX2 ]


| Bibliothek | Mindestversion | 
| --- | --- | 
| ld-linux-aarch64.so.1 | GLIBC\$12.17 | 
| libc.so.6 | GLIBC\$12.17 | 
| libcublas.so.9.0 | nicht zutreffend | 
| libcudart.so.9.0 | nicht zutreffend | 
| libcudnn.so.7 | nicht zutreffend | 
| libcufft.so.9.0 | nicht zutreffend | 
| libcurand.so.9.0 | nicht zutreffend | 
| libcusolver.so.9.0 | nicht zutreffend | 
| libgcc\$1s.so.1 | GCC\$14.2.0 | 
| libgomp.so.1 | GOMP\$14.0, OMP\$11.0 | 
| libm.so.6 | GLIBC\$12.23 | 
| libnvinfer.so.4 | nicht zutreffend | 
| libnvrm\$1gpu.so | nicht zutreffend | 
| libnvrm.so | nicht zutreffend | 
| libnvidia-fatbinaryloader.so.28.2.1 | nicht zutreffend | 
| libnvos.so | nicht zutreffend | 
| libpthread.so.0 | GLIBC\$12.17 | 
| librt.so.1 | GLIBC\$12.17 | 
| libstdc\$1\$1.so.6 | GLIBCXX\$13.4.21, CXXABI\$11.3.8 | 

------
#### [ ML Object Detection x86\$164 ]


| Bibliothek | Mindestversion | 
| --- | --- | 
| ld-linux-x86-64.so.2 | GCC\$14.0.0 | 
| libc.so.6 | GLIBC\$12.4 | 
| libgfortran.so.3 | GFORTRAN\$11.0 | 
| libm.so.6 | GLIBC\$12.23 | 
| libpthread.so.0 | GLIBC\$12.2.5 | 
| librt.so.1 | GLIBC\$12.2.5 | 
| libstdc\$1\$1.so.6 | CXXABI\$11.3.8, GLIBCXX\$13.4.21 | 

------
#### [ ML Object Detection ARMv7 ]


| Bibliothek | Mindestversion | 
| --- | --- | 
| ld-linux-armhf.so.3 | GLIBC\$12.4 | 
| libc.so.6 | GLIBC\$12.7 | 
| libgcc\$1s.so.1 | GCC\$14.0.0 | 
| libgfortran.so.3 | GFORTRAN\$11.0 | 
| libm.so.6 | GLIBC\$12.4 | 
| libpthread.so.0 | GLIBC\$12.4 | 
| librt.so.1 | GLIBC\$12.4 | 
| libstdc\$1\$1.so.6 | CXXABI\$11.3.8, CXXABI\$1ARM\$11.3.3, GLIBCXX\$13.4.20 | 

------

**Problembereiche**


| Symptom | Lösung | 
| --- | --- | 
|  Auf einem Raspberry Pi wird die folgende Fehlermeldung protokolliert, und Sie verwenden nicht die Kamera: `Failed to initialize libdc1394`   |  Führen Sie den folgenden Befehl aus, um den Treiber zu deaktivieren: <pre>sudo ln /dev/null /dev/raw1394</pre> Diese Operation ist flüchtig. Der symbolische Link ist nach dem Neustart nicht mehr vorhanden. Schlagen Sie im Handbuch Ihrer Betriebssystemverteilung nach, wie der Link beim Neustart automatisch erstellt werden kann.  | 

## Lizenzen
<a name="obj-detection-connector-license"></a>

Die ML Object Detection-Konnektoren beinhalten 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
+ [Deep Learning Runtime](https://github.com/neo-ai/neo-ai-dlr)/Apache-Lizenz 2.0
+ <a name="six-license"></a>[six](https://github.com/benjaminp/six)/MIT

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.

## Weitere Informationen finden Sie auch unter
<a name="obj-detection-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)
+ [Durchführen von Machine Learning-Inferenzen](ml-inference.md)
+ [Algorithmus zur Objekterkennung](https://docs.aws.amazon.com/sagemaker/latest/dg/object-detection.html) im *Amazon SageMaker AI Developer Guide*

# Modbus-RTU-Protokolladapter-Anschluss
<a name="modbus-protocol-adapter-connector"></a>

Der [Modbus-RTU-Protokolladapter-Anschluss](connectors.md) fragt Informationen von Modbus RTU-Geräten ab, die sich in der Gruppe befinden. AWS IoT Greengrass 

Dieser Konnektor empfängt Parameter für eine Modbus-RTU-Anforderung von einer benutzerdefinierten Lambda-Funktion. Er sendet die entsprechende Anforderung und veröffentlicht dann die Antwort des Zielgeräts als MQTT-Nachricht.

Dieser Konnektor hat die folgenden Versionen.


| Version | ARN | 
| --- | --- | 
| 3 | `arn:aws:greengrass:region::/connectors/ModbusRTUProtocolAdapter/versions/3` | 
| 2 | `arn:aws:greengrass:region::/connectors/ModbusRTUProtocolAdapter/versions/2` | 
| 1 | `arn:aws:greengrass:region::/connectors/ModbusRTUProtocolAdapter/versions/1` | 

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

## Voraussetzungen
<a name="modbus-protocol-adapter-connector-req"></a>

Dieser Konnektor hat die folgenden Anforderungen:

------
#### [ Version 3 ]
+ <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-modbus-req-physical-connection"></a>Eine physische Verbindung zwischen dem AWS IoT Greengrass Core und den Modbus-Geräten. Der Core muss physisch über eine serielle Schnittstelle (z. B. eine USB-Schnittstelle) mit dem Modbus RTU-Netzwerk verbunden sein.
+ <a name="conn-modbus-req-serial-port-resource"></a>Eine [lokale Geräteressource](access-local-resources.md) in der Greengrass-Gruppe, die auf die physische serielle Modbus-Schnittstelle verweist.
+ <a name="conn-modbus-req-user-lambda"></a>Eine benutzerdefinierte Lambda-Funktion, die Modbus RTU-Anforderungsparameter an diesen Konnektor sendet. Die Anforderungsparameter müssen den erwarteten Mustern entsprechen und die Adressen der IDs Zielgeräte im Modbus RTU-Netzwerk enthalten. Weitere Informationen finden Sie unter [Eingabedaten](#modbus-protocol-adapter-connector-data-input).

------
#### [ 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-modbus-req-physical-connection"></a>Eine physische Verbindung zwischen dem AWS IoT Greengrass Core und den Modbus-Geräten. Der Core muss physisch über eine serielle Schnittstelle (z. B. eine USB-Schnittstelle) mit dem Modbus RTU-Netzwerk verbunden sein.
+ <a name="conn-modbus-req-serial-port-resource"></a>Eine [lokale Geräteressource](access-local-resources.md) in der Greengrass-Gruppe, die auf die physische serielle Modbus-Schnittstelle verweist.
+ <a name="conn-modbus-req-user-lambda"></a>Eine benutzerdefinierte Lambda-Funktion, die Modbus RTU-Anforderungsparameter an diesen Konnektor sendet. Die Anforderungsparameter müssen den erwarteten Mustern entsprechen und die Adressen der IDs Zielgeräte im Modbus RTU-Netzwerk enthalten. Weitere Informationen finden Sie unter [Eingabedaten](#modbus-protocol-adapter-connector-data-input).

------

## Steckerparameter
<a name="modbus-protocol-adapter-connector-param"></a>

Dieser Konnektor unterstützt die folgenden Parameter:

`ModbusSerialPort-ResourceId`  
Die ID der lokalen Geräteressource, die die physische serielle Modbus-Schnittstelle darstellt.  
Dieser Konnektor hat Zugriff zum Lesen und Schreiben auf die Ressource.
Anzeigename in der AWS IoT Konsole: Ressource für die **serielle Modbus-Port-Schnittstelle**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `.+`

`ModbusSerialPort`  
Der absolute Pfad zur physikalischen seriellen Modbus-Schnittstelle auf dem Gerät. Dies ist der Quellpfad, der für die lokale Modbus-Geräteressource angegeben ist.  
Anzeigename in der AWS IoT Konsole: **Quellpfad der Ressource für die serielle Modbus-Port-Schnittstelle**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `.+`

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

Der folgende CLI-Befehl erstellt einen `ConnectorDefinition` mit einer ersten Version, die den Modbus-RTU-Protokolladapter-Connector enthält.

```
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{
    "Connectors": [
        {
            "Id": "MyModbusRTUProtocolAdapterConnector",
            "ConnectorArn": "arn:aws:greengrass:region::/connectors/ModbusRTUProtocolAdapter/versions/3",
            "Parameters": {
                "ModbusSerialPort-ResourceId": "MyLocalModbusSerialPort",
                "ModbusSerialPort": "/path-to-port"
            }
        }
    ]
}'
```

**Anmerkung**  
Die Lambda-Funktion in diesem Konnektor hat einen [langlebigen Lebenszyklus](lambda-functions.md#lambda-lifecycle).

**In der AWS IoT Greengrass Konsole können Sie auf der Connectors-Seite der Gruppe einen Connector hinzufügen.** Weitere Informationen finden Sie unter [Erste Schritte mit Greengrass-Konnektoren (Konsole)](connectors-console.md).

**Anmerkung**  
Nachdem Sie den Modbus-RTU-Protokolladapter-Connector bereitgestellt haben, können Sie ihn verwenden, AWS IoT Things Graph um Interaktionen zwischen Geräten in Ihrer Gruppe zu orchestrieren. Weitere Informationen finden Sie unter [Modbus](https://docs.aws.amazon.com/thingsgraph/latest/ug/iot-tg-protocols-modbus.html) im *AWS IoT Things Graph -Benutzerhandbuch*.

## Eingabedaten
<a name="modbus-protocol-adapter-connector-data-input"></a>

Dieser Konnektor akzeptiert Modbus RTU-Anforderungsparameter von einer benutzerdefinierten Lambda-Funktion zu einem MQTT-Thema. Eingabenachrichten müssen im JSON-Format vorliegen.

<a name="topic-filter"></a>**Themenfilter im Abonnement**  
`modbus/adapter/request`

**Nachrichten-Eigenschaften**  
Die Anforderungsnachricht variiert je nach Art der Modbus RTU-Anfrage, die sie darstellt. Die folgenden Eigenschaften werden für alle Anforderungen benötigt:  
+ Im `request`-Objekt:
  + `operation`. Der Name der auszuführenden Operation. Geben Sie beispielsweise an, dass `"operation": "ReadCoilsRequest"` Spulen lesen soll. Dieser Wert muss eine Unicode-Zeichenfolge sein. Informationen zu unterstützten Vorgängen finden Sie unter [Modbus RTU-Anforderungen und -Antworten](#modbus-protocol-adapter-connector-requests-responses).
  + `device`. Das Zielgerät der Anfrage. Dieser Wert muss zwischen `0 - 247` liegen.
+ Die `id`-Eigenschaft. Eine ID für die Anforderung. Dieser Wert wird für die Datendeduplizierung verwendet und wie bei der `id`-Eigenschaft aller Antworten, einschließlich Fehlerantworten, zurückgegeben. Dieser Wert muss eine Unicode-Zeichenfolge sein.
Wenn Ihre Anforderung ein Adressfeld enthält, müssen Sie den Wert als Ganzzahl angeben. Beispiel, `"address": 1`.
Die weiteren Parameter, die in die Anforderung aufgenommen werden sollen, hängen von der Operation ab. Alle Anforderungsparameter sind erforderlich, mit Ausnahme der CRC, die separat behandelt wird. Beispiele finden Sie unter [Beispiel: Anforderungen und Antworten](#modbus-protocol-adapter-connector-examples).

**Beispieleingabe: Lesen Spulenanforderungen**  

```
{
    "request": {
        "operation": "ReadCoilsRequest",
    	"device": 1,
    	"address": 1,
    	"count": 1
    },
    "id": "TestRequest"
}
```

## Ausgabedaten
<a name="modbus-protocol-adapter-connector-data-output"></a>

Dieser Konnektor veröffentlicht Antworten auf eingehende Modbus RTU-Anfragen.

<a name="topic-filter"></a>**Themenfilter im Abonnement**  
`modbus/adapter/response`

**Nachrichten-Eigenschaften**  
Das Format der Antwortnachricht variiert je nach Anforderung und Antwortstatus. Beispiele finden Sie unter [Beispiel: Anforderungen und Antworten](#modbus-protocol-adapter-connector-examples).  
Eine Antwort für einen Schreibvorgang ist lediglich ein Echo der Anforderung. Obwohl keine aussagekräftigen Informationen für Schreibantworten zurückgegeben werden, ist es eine gute Vorgehensweise, den Status der Antwort zu überprüfen.
Jede Antwort beinhaltet die folgenden Eigenschaften:  
+ Im `response`-Objekt:
  + `status`. Der Status der Anfrage. Der Status kann einer der folgenden Werte sein:
    + `Success`. Die Anfrage war gültig, wurde an das Modbus RTU-Netzwerk gesendet und eine Antwort wurde zurückgegeben.
    + `Exception`. Die Anfrage war gültig, wurde an das Modbus RTU-Netzwerk gesendet und es wurde eine Ausnahmeantwort zurückgegeben. Weitere Informationen finden Sie unter [Antwortstatus: Ausnahme](#modbus-protocol-adapter-connector-response-exception).
    + `No Response`. Die Anfrage war ungültig und der Connector hat den Fehler erkannt, bevor die Anfrage über das Modbus RTU-Netzwerk gesendet wurde. Weitere Informationen finden Sie unter [Antwortstatus: Keine Antwort](#modbus-protocol-adapter-connector-response-noresponse).
  + `device`. Das Gerät, an das die Anfrage gesendet wurde.
  + `operation`. Der Anfragetyp, der gesendet wurde.
  + `payload`. Der Inhalt der Antwort, der zurückgegeben wurde. Wenn der `status` `No Response` ist, enthält dieses Objekt nur eine `error`-Eigenschaft mit der Fehlerbeschreibung (z. B. `"error": "[Input/Output] No Response received from the remote unit"`).
+ Die `id`-Eigenschaft. Die ID der Anforderung, die für die Datendeduplizierung verwendet wird.

**Beispielausgabe: Erfolg**  

```
{
    "response" : {
        "status" : "success",
        "device": 1,
    	"operation": "ReadCoilsRequest",
    	"payload": {
        	"function_code": 1,
        	"bits": [1]
    	}
     },
     "id" : "TestRequest"
}
```

**Beispielausgabe: Fehler**  

```
{
    "response" : {
        "status" : "fail",
        "error_message": "Internal Error",
        "error": "Exception",
        "device": 1,
    	"operation": "ReadCoilsRequest",
    	"payload": {
        	"function_code": 129,
        	"exception_code": 2
    	}
     },
     "id" : "TestRequest"
}
```
Weitere Beispiele finden Sie unter [Beispiel: Anforderungen und Antworten](#modbus-protocol-adapter-connector-examples).

## Modbus RTU-Anforderungen und -Antworten
<a name="modbus-protocol-adapter-connector-requests-responses"></a>

Dieser Konnektor akzeptiert Modbus RTU-Anfrageparameter als [Eingabedaten](#modbus-protocol-adapter-connector-data-input) und veröffentlicht Antworten als [Ausgabedaten](#modbus-protocol-adapter-connector-data-output).

Die folgenden allgemeinen Operationen werden unterstützt.


| Vorgangsname in Anforderung | Funktionscode in Antwort | 
| --- | --- | 
| ReadCoilsRequest | 01 | 
| ReadDiscreteInputsRequest | 02 | 
| ReadHoldingRegistersRequest | 03 | 
| ReadInputRegistersRequest | 04 | 
| WriteSingleCoilRequest | 05 | 
| WriteSingleRegisterRequest | 06 | 
| WriteMultipleCoilsRequest | 15 | 
| WriteMultipleRegistersRequest | 16 | 
| MaskWriteRegisterRequest | 22 | 
| ReadWriteMultipleRegistersRequest | 23 | 

### Beispiel: Anforderungen und Antworten
<a name="modbus-protocol-adapter-connector-examples"></a>

Im Folgenden finden Sie Beispiele für Anfragen und Antworten für unterstützte Operationen.

Spulen lesen  
**Anfragebeispiel:**  

```
{
    "request": {
        "operation": "ReadCoilsRequest",
    	"device": 1,
    	"address": 1,
    	"count": 1
    },
    "id": "TestRequest"
}
```
**Antwortbeispiel:**  

```
{
    "response": {
        "status": "success",
        "device": 1,
    	"operation": "ReadCoilsRequest",
    	"payload": {
        	"function_code": 1,
        	"bits": [1]
    	}
     },
     "id" : "TestRequest"
}
```

Digitaleingänge lesen  
**Anfragebeispiel:**  

```
{
    "request": {
        "operation": "ReadDiscreteInputsRequest",
        "device": 1,
        "address": 1,
        "count": 1
    },
    "id": "TestRequest"
}
```
**Antwortbeispiel:**  

```
{
    "response": {
        "status": "success",
        "device": 1,
        "operation": "ReadDiscreteInputsRequest",
        "payload": {
            "function_code": 2,
            "bits": [1]
        }
     },
     "id" : "TestRequest"
}
```

Lesen von Holdingregistern  
**Anfragebeispiel:**  

```
{
    "request": {
        "operation": "ReadHoldingRegistersRequest",
    	"device": 1,
    	"address": 1,
    	"count": 1
    },
    "id": "TestRequest"
}
```
**Antwortbeispiel:**  

```
{
    "response": {
        "status": "success",
        "device": 1,
    	"operation": "ReadHoldingRegistersRequest",
    	"payload": {
    	    "function_code": 3,
            "registers": [20,30]
    	}
     },
     "id" : "TestRequest"
}
```

Lesen von Eingangsregistern  
**Anfragebeispiel:**  

```
{
    "request": {
        "operation": "ReadInputRegistersRequest",
    	"device": 1,
    	"address": 1,
    	"value": 1
    },
    "id": "TestRequest"
}
```

Schreiben Einzelspule  
**Anfragebeispiel:**  

```
{
    "request": {
        "operation": "WriteSingleCoilRequest",
    	"device": 1,
    	"address": 1,
    	"value": 1
    },
    "id": "TestRequest"
}
```
**Antwortbeispiel:**  

```
{
    "response": {
        "status": "success",
        "device": 1,
    	"operation": "WriteSingleCoilRequest",
    	"payload": {
    	    "function_code": 5,
    	    "address": 1,
    	    "value": true
    	}
     },
     "id" : "TestRequest"
```

Schreiben eines Einzelregisters  
**Anfragebeispiel:**  

```
{
    "request": {
        "operation": "WriteSingleRegisterRequest",
    	"device": 1,
    	"address": 1,
    	"value": 1
    },
    "id": "TestRequest"
}
```

Schreiben mehrerer Spulen  
**Anfragebeispiel:**  

```
{
    "request": {
        "operation": "WriteMultipleCoilsRequest",
    	"device": 1,
    	"address": 1,
    	"values": [1,0,0,1]
    },
    "id": "TestRequest"
}
```
**Antwortbeispiel:**  

```
{
    "response": {
        "status": "success",
        "device": 1,
    	"operation": "WriteMultipleCoilsRequest",
    	"payload": {
    	    "function_code": 15,
    	    "address": 1,
    	    "count": 4
    	}
     },
     "id" : "TestRequest"
}
```

Schreiben mehrerer Register  
**Anfragebeispiel:**  

```
{
    "request": {
        "operation": "WriteMultipleRegistersRequest",
    	"device": 1,
    	"address": 1,
    	"values": [20,30,10]
    },
    "id": "TestRequest"
}
```
**Antwortbeispiel:**  

```
{
    "response": {
        "status": "success",
        "device": 1,
    	"operation": "WriteMultipleRegistersRequest",
    	"payload": {
    	    "function_code": 23,
    	    "address": 1,
       		"count": 3
    	}
     },
     "id" : "TestRequest"
}
```

Masken-Schreibregister  
**Anfragebeispiel:**  

```
{
    "request": {
        "operation": "MaskWriteRegisterRequest",
    	"device": 1,
    	"address": 1,
        "and_mask": 175,
        "or_mask": 1
    },
    "id": "TestRequest"
}
```
**Antwortbeispiel:**  

```
{
    "response": {
        "status": "success",
        "device": 1,
    	"operation": "MaskWriteRegisterRequest",
    	"payload": {
    	    "function_code": 22,
            "and_mask": 0,
            "or_mask": 8
    	}
     },
     "id" : "TestRequest"
}
```

Lesen mehrerer Register  
**Anfragebeispiel:**  

```
{
    "request": {
        "operation": "ReadWriteMultipleRegistersRequest",
    	"device": 1,
    	"read_address": 1,
        "read_count": 2,
        "write_address": 3,
        "write_registers": [20,30,40]
    },
    "id": "TestRequest"
}
```
**Antwortbeispiel:**  

```
{
    "response": {
        "status": "success",
        "device": 1,
    	"operation": "ReadWriteMultipleRegistersRequest",
    	"payload": {
    	    "function_code": 23,
    	    "registers": [10,20,10,20]
    	}
     },
     "id" : "TestRequest"
}
```
Die in dieser Antwort zurückgegebenen Register sind die Register, aus denen gelesen wird.

### Antwortstatus: Ausnahme
<a name="modbus-protocol-adapter-connector-response-exception"></a>

Ausnahmen können auftreten, wenn das Anfrageformat gültig ist, die Anfrage aber nicht erfolgreich abgeschlossen wurde. In diesem Fall enthält die Antwort die folgenden Informationen:
+ Der `status` wird auf `Exception` gesetzt.
+ Der `function_code` entspricht dem Funktionscode der Anforderung \$1 128.
+ Der `exception_code` enthält den Ausnahmecode. Weitere Informationen finden Sie unter Modbus-Ausnahmecodes.

**Beispiel:**

```
{
    "response" : {
        "status" : "fail",
        "error_message": "Internal Error",
        "error": "Exception",
        "device": 1,
    	"operation": "ReadCoilsRequest",
    	"payload": {
        	"function_code": 129,
        	"exception_code": 2
    	}
     },
     "id" : "TestRequest"
}
```

### Antwortstatus: Keine Antwort
<a name="modbus-protocol-adapter-connector-response-noresponse"></a>

Dieser Konnektor führt Validierungsprüfungen für die Modbus-Anforderung durch. So wird beispielsweise nach ungültigen Formaten und fehlenden Feldern gesucht. Wenn die Validierung fehlschlägt, sendet der Konnektor die Anforderung nicht. Stattdessen gibt er eine Antwort zurück, die die folgenden Informationen enthält:
+ Der `status` wird auf `No Response` gesetzt.
+ Der `error` enthält den Grund für den Fehler.
+ Die `error_message` enthält die Fehlermeldung.

**Beispiele:**

```
{
    "response" : {
        "status" : "fail",
        "error_message": "Invalid address field. Expected <type 'int'>, got <type 'str'>",
        "error": "No Response",
        "device": 1,
    	"operation": "ReadCoilsRequest",
    	"payload": {
        	"error": "Invalid address field. Expected <type 'int'>, got <type 'str'>"
    	}
     },
     "id" : "TestRequest"
}
```

Wenn die Anforderung auf ein nicht vorhandenes Gerät abzielt oder wenn das Modbus RTU-Netzwerk nicht funktioniert, erhalten Sie möglicherweise eine `ModbusIOException`, die das No Response-Format verwendet.

```
{
    "response" : {
        "status" : "fail",
        "error_message": "[Input/Output] No Response received from the remote unit",
        "error": "No Response",
        "device": 1,
    	"operation": "ReadCoilsRequest",
    	"payload": {
        	"error": "[Input/Output] No Response received from the remote unit"
    	}
     },
     "id" : "TestRequest"
}
```

## Beispiel für die Verwendung
<a name="modbus-protocol-adapter-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](#modbus-protocol-adapter-connector-req) für den Konnektor erfüllen.

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](#modbus-protocol-adapter-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. <a name="connectors-setup-device-resource"></a>Fügen Sie die erforderliche lokale Geräteressource hinzu und gewähren Sie Lese-/Schreibzugriff auf die Lambda-Funktion.

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

   1. Fügen Sie Abonnements hinzu, die es dem Konnektor ermöglichen, [Eingabedaten](#modbus-protocol-adapter-connector-data-input) zu empfangen und [Ausgabedaten](#modbus-protocol-adapter-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="modbus-protocol-adapter-connector-usage-example"></a>

Die folgende Lambda-Beispielfunktion sendet eine Eingabenachricht an den Konnektor.

```
import greengrasssdk
import json

TOPIC_REQUEST = 'modbus/adapter/request'

# Creating a greengrass core sdk client
iot_client = greengrasssdk.client('iot-data')

def create_read_coils_request():
	request = {
		"request": {
			"operation": "ReadCoilsRequest",
			"device": 1,
			"address": 1,
			"count": 1
		},
		"id": "TestRequest"
	}
	return request

def publish_basic_request():
	iot_client.publish(payload=json.dumps(create_read_coils_request()), topic=TOPIC_REQUEST)

publish_basic_request()

def lambda_handler(event, context):
	return
```

## Lizenzen
<a name="modbus-protocol-adapter-connector-license"></a>

Der Modbus-RTU-Protokolladapter-Connector umfasst die folgende Software/Lizenzierung von Drittanbietern:
+ [pymodbus](https://github.com/riptideio/pymodbus/blob/master/README.rst)/BSD
+ [pyserial](https://github.com/pyserial/pyserial)/BSD

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="modbus-protocol-adapter-connector-changelog"></a>

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


| Version | Änderungen | 
| --- | --- | 
| 3 | <a name="upgrade-runtime-py3.7"></a>Die Lambda-Laufzeit wurde auf Python 3.7 aktualisiert, was die Laufzeitanforderungen ändert. | 
| 2 | Der Connector-ARN wurde zur AWS-Region Unterstützung aktualisiert. Verbesserte Fehlerprotokollierung. | 
| 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="modbus-protocol-adapter-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)

# Modbus-TCP-Protokolladapter-Anschluss
<a name="modbus-tcp-connector"></a>

Der [Modbus-TCP-Protokolladapter-Connector](connectors.md) sammelt Daten von lokalen Geräten über das ModbusTCP-Protokoll und veröffentlicht sie in den ausgewählten Streams. `StreamManager`

Sie können diesen Connector auch mit dem SiteWise IoT-Connector und Ihrem SiteWise IoT-Gateway verwenden. Ihr Gateway muss die Konfiguration für den Connector bereitstellen. Weitere Informationen finden [Sie unter Konfiguration einer Modbus-TCP-Quelle](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/configure-modbus-source.html) im SiteWise IoT-Benutzerhandbuch. 

**Anmerkung**  
 Dieser Connector wird im Modus „[Keine Container-Isolation](lambda-group-config.md#no-container-mode)“ ausgeführt, sodass Sie ihn für eine AWS IoT Greengrass Gruppe bereitstellen können, die in einem Docker-Container ausgeführt wird. 

Dieser Connector hat die folgenden Versionen.


| Version | ARN | 
| --- | --- | 
| 3 | `arn:aws:greengrass:region::/connectors/ModbusTCPConnector/versions/3` | 
| 2 | `arn:aws:greengrass:region::/connectors/ModbusTCPConnector/versions/2` | 
| 1 | `arn:aws:greengrass:region::/connectors/ModbusTCPConnector/versions/1` | 

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

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

Dieser Konnektor hat die folgenden Anforderungen:

------
#### [ Version 1 - 3 ]
+ AWS IoT Greengrass Kernsoftware v1.10.2 oder höher.
+ Stream Manager ist für die AWS IoT Greengrass Gruppe aktiviert.
+ Java 8 wurde auf dem Core-Gerät installiert und der `PATH` Umgebungsvariablen hinzugefügt.

**Anmerkung**  
 Dieser Connector ist nur in den folgenden Regionen verfügbar:   
ap-southeast-1
ap-southeast-2
eu-central-1
eu-west-1
us-east-1
us-west-2
cn-north-1

------

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

Dieser Konnektor unterstützt die folgenden Parameter:

`LocalStoragePath`  
Das Verzeichnis auf dem AWS IoT Greengrass Host, in das der SiteWise IoT-Connector persistente Daten schreiben kann. Das Standardverzeichnis ist `/var/sitewise`.  
Anzeigename in der AWS IoT Konsole: **Lokaler Speicherpfad**  
Erforderlich: `false`  
Typ: `string`  
Gültiges Muster: `^\s*$|\/.`

`MaximumBufferSize`  
Die maximale Größe in GB für die Nutzung von SiteWise IoT-Festplatten. Die Standardgröße ist 10 GB.  
Anzeigename in der AWS IoT Konsole: **Maximale Festplattenpuffergröße**  
Erforderlich: `false`  
Typ: `string`  
Gültiges Muster: `^\s*$|[0-9]+`

`CapabilityConfiguration`  
Der Satz von Modbus-TCP-Collector-Konfigurationen, von denen der Connector Daten sammelt und zu denen er eine Verbindung herstellt.  
Anzeigename in der AWS IoT Konsole: **CapabilityConfiguration**  
Erforderlich: `false`  
Typ: Eine wohlgeformte JSON-Zeichenfolge, die den Satz der unterstützten Feedback-Konfigurationen definiert.

Das Folgende ist ein Beispiel für eine`CapabilityConfiguration`:

```
{
    "sources": [
        {
            "type": "ModBusTCPSource",
            "name": "SourceName1",
            "measurementDataStreamPrefix": "SourceName1_Prefix",
            "destination": {
                "type": "StreamManager",
                "streamName": "SiteWise_Stream_1",
                "streamBufferSize": 8
            },
            "endpoint": {
                "ipAddress": "127.0.0.1",
                "port": 8081,
                "unitId": 1
            },
            "propertyGroups": [
                {
                    "name": "GroupName",
                    "tagPathDefinitions": [
                        {
                            "type": "ModBusTCPAddress",
                            "tag": "TT-001",
                            "address": "30001",
                            "size": 2,
                            "srcDataType": "float",
                            "transformation": "byteWordSwap",
                            "dstDataType": "double"
                        }
                    ],
                    "scanMode": {
                        "type": "POLL",
                        "rate": 100
                    }
                }
            ]
        }
    ]
}
```

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

Der folgende CLI-Befehl erstellt einen `ConnectorDefinition` mit einer ersten Version, die den Modbus-TCP-Protokolladapter-Connector enthält.

```
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '
{
    "Connectors": [
        {
            "Id": "MyModbusTCPConnector",
            "ConnectorArn": "arn:aws:greengrass:region::/connectors/ModbusTCP/versions/3",
            "Parameters": {
                "capability_configuration": "{\"version\":1,\"namespace\":\"iotsitewise:modbuscollector:1\",\"configuration\":\"{\"sources\":[{\"type\":\"ModBusTCPSource\",\"name\":\"SourceName1\",\"measurementDataStreamPrefix\":\"\",\"endpoint\":{\"ipAddress\":\"127.0.0.1\",\"port\":8081,\"unitId\":1},\"propertyGroups\":[{\"name\":\"PropertyGroupName\",\"tagPathDefinitions\":[{\"type\":\"ModBusTCPAddress\",\"tag\":\"TT-001\",\"address\":\"30001\",\"size\":2,\"srcDataType\":\"hexdump\",\"transformation\":\"noSwap\",\"dstDataType\":\"string\"}],\"scanMode\":{\"rate\":200,\"type\":\"POLL\"}}],\"destination\":{\"type\":\"StreamManager\",\"streamName\":\"SiteWise_Stream\",\"streamBufferSize\":10},\"minimumInterRequestDuration\":200}]}\"}"
            }
        }
    ]
}'
```

**Anmerkung**  
Die Lambda-Funktion in diesem Konnektor hat einen [langlebigen Lebenszyklus](lambda-functions.md#lambda-lifecycle).

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

Dieser Konnektor akzeptiert keine MQTT-Nachrichten als Eingabedaten.

## Ausgabedaten
<a name="modbus-tcp-connector-data-output"></a>

Dieser Konnektor veröffentlicht Daten für`StreamManager`. Sie müssen den Zielnachrichtenstream konfigurieren. Die Ausgabenachrichten haben die folgende Struktur:

```
{
    "alias": "string",
    "messages": [
        {
            "name": "string",
            "value": boolean|double|integer|string,
            "timestamp": number,
            "quality": "string"
        }
    ]
}
```

## Lizenzen
<a name="modbus-tcp-connector-license"></a>

Der Modbus-TCP-Protokolladapter-Connector umfasst die folgende Software/Lizenzierung von Drittanbietern:
+ [Digitaler Petri Modbus](https://github.com/digitalpetri/modbus)

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="modbus-tcp-connector-changelog"></a>

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


| Version | Änderungen | Datum | 
| --- | --- | --- | 
| 3 (empfohlen) | Diese Version enthält Fehlerkorrekturen. | 22. Dezember 2021 | 
| 2 | Unterstützung für ASCII- und ISO8859 kodierte UTF8 Quellzeichenfolgen hinzugefügt. | 24. Mai 2021 | 
| 1 | Erstversion. | 15. Dezember 2020 | 

<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="modbus-tcp-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)

# Raspberry Pi GPIO-Anschluss
<a name="raspberrypi-gpio-connector"></a>

**Warnung**  <a name="connectors-extended-life-phase-warning"></a>
Dieser Connector befindet sich in der *Phase mit verlängerter Lebensdauer* und veröffentlicht AWS IoT Greengrass keine Updates, die Funktionen, Verbesserungen vorhandener Funktionen, Sicherheitspatches oder Bugfixes bieten. Weitere Informationen finden Sie unter [AWS IoT Greengrass Version 1 Wartungspolitik](maintenance-policy.md).

Der Raspberry [Pi-GPIO-Anschluss](connectors.md) steuert die GPIO-Pins (Allzweckeingang/-ausgang) eines Raspberry Pi-Kerngeräts.

Dieser Konnektor fragt Eingangspins in einem bestimmten Intervall ab und veröffentlicht Zustandsänderungen an MQTT-Themen. Es akzeptiert auch Lese- und Schreibanforderungen als MQTT-Nachrichten von benutzerdefinierten Lambda-Funktionen. Schreibanforderungen werden verwendet, um den Pin auf Hoch- oder Niederspannung zu setzen.

Der Konnektor stellt Parameter zur Verfügung, mit denen Sie Eingangs- und Ausgangspins definieren. Dieses Verhalten wird vor der Bereitstellung der Gruppe konfiguriert. Es kann während der Laufzeit nicht geändert werden.
+ Eingangspins können zum Empfangen von Daten von Peripheriegeräten verwendet werden.
+ Ausgangspins können zur Steuerung von Peripheriegeräten oder zum Senden von Daten an Peripheriegeräte verwendet werden.

Sie können diesen Konnektor für viele Szenarien verwenden, wie z. B.:
+ Steuerung der grünen, gelben und roten LED-Leuchten für eine Ampel.
+ Steuern eines Lüfters (mit einem elektrischen Relais verbunden) basierend auf Daten eines Feuchtigkeitssensors.
+ Alarmierung der Mitarbeiter in einem Einzelhandelsgeschäft auf Knopfdruck.
+ Verwendung eines intelligenten Lichtschalters zur Steuerung anderer IoT-Geräte.

**Anmerkung**  
Dieser Konnektor ist nicht geeignet für Anwendungen, die Echtzeitanforderungen haben Ereignisse mit kurzer Dauer können verpasst werden.

Dieser Konnektor hat die folgenden Versionen.


| Version | ARN | 
| --- | --- | 
| 3 | `arn:aws:greengrass:region::/connectors/RaspberryPiGPIO/versions/3` | 
| 2 | `arn:aws:greengrass:region::/connectors/RaspberryPiGPIO/versions/2` | 
| 1 | `arn:aws:greengrass:region::/connectors/RaspberryPiGPIO/versions/1` | 

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

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

Dieser Konnektor hat die folgenden Anforderungen:

------
#### [ Version 3 ]
+ <a name="conn-req-ggc-v1.9.3"></a>AWS IoT Greengrass Kernsoftware v1.9.3 oder höher.
+ [Python-Version](https://www.python.org/) 3.7 wurde auf dem Core-Gerät installiert und zur Umgebungsvariablen PATH hinzugefügt.
+ <a name="conn-gpio-req-pin-seq"></a>Raspberry Pi 4 Modell B oder Raspberry Pi 3 Modell B/B\$1. Sie müssen die PIN-Reihenfolge Ihres Raspberry Pi kennen. Weitere Informationen finden Sie unter [GPIO-Pin-Sequenz](#raspberrypi-gpio-connector-req-pins).
+ <a name="conn-gpio-req-dev-gpiomem-resource"></a>Eine [lokale Geräteressource](access-local-resources.md) in der Greengrass-Gruppe, die `/dev/gpiomem` auf dem Raspberry Pi verweist. Wenn Sie die Ressource in der Konsole erstellen, müssen Sie die Option **Betriebssystemgruppenberechtigungen automatisch hinzufügen der Linux-Gruppe auswählen, der die Ressource gehört**. Stellen Sie die `GroupOwnerSetting.AutoAddGroupOwner` Eigenschaft in der API auf ein`true`.
+ <a name="conn-gpio-req-rpi-gpio"></a>Das auf dem Raspberry Pi installierte [RPi.GPIO-Modul](https://sourceforge.net/p/raspberry-gpio-python/wiki/Home/). In Raspbian ist dieses Modul standardmäßig installiert. Mit dem folgenden Befehl können Sie es neu installieren:

  ```
  sudo pip install RPi.GPIO
  ```

------
#### [ 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-gpio-req-pin-seq"></a>Raspberry Pi 4 Modell B oder Raspberry Pi 3 Modell B/B\$1. Sie müssen die PIN-Reihenfolge Ihres Raspberry Pi kennen. Weitere Informationen finden Sie unter [GPIO-Pin-Sequenz](#raspberrypi-gpio-connector-req-pins).
+ <a name="conn-gpio-req-dev-gpiomem-resource"></a>Eine [lokale Geräteressource](access-local-resources.md) in der Greengrass-Gruppe, die `/dev/gpiomem` auf dem Raspberry Pi verweist. Wenn Sie die Ressource in der Konsole erstellen, müssen Sie die Option **Betriebssystemgruppenberechtigungen automatisch hinzufügen der Linux-Gruppe auswählen, der die Ressource gehört**. Stellen Sie die `GroupOwnerSetting.AutoAddGroupOwner` Eigenschaft in der API auf ein`true`.
+ <a name="conn-gpio-req-rpi-gpio"></a>Das auf dem Raspberry Pi installierte [RPi.GPIO-Modul](https://sourceforge.net/p/raspberry-gpio-python/wiki/Home/). In Raspbian ist dieses Modul standardmäßig installiert. Mit dem folgenden Befehl können Sie es neu installieren:

  ```
  sudo pip install RPi.GPIO
  ```

------

### GPIO-Pin-Sequenz
<a name="raspberrypi-gpio-connector-req-pins"></a>

Der Raspberry Pi-GPIO-Anschluss referenziert GPIO-Pins anhand des Nummerierungsschemas des zugrunde liegenden System on Chip (SoC), nicht anhand der physikalischen Anordnung der GPIO-Pins. Die physische Reihenfolge der Pins kann je nach Raspberry Pi-Version variieren. Weitere Informationen finden Sie unter [GPIO](https://www.raspberrypi.org/documentation/usage/gpio/) in der Raspberry Pi-Dokumentation.

Der Konnektor kann nicht prüfen, ob die von Ihnen konfigurierten Ein- und Ausgangspins korrekt auf die zugrunde liegende Hardware Ihres Raspberry Pi passen. Wenn die Pin-Konfiguration ungültig ist, gibt der Konnektor einen Laufzeitfehler zurück, wenn er versucht, auf dem Gerät zu starten. Um dieses Problem zu beheben, konfigurieren Sie den Konnektor neu und stellen Sie ihn dann erneut bereit.

**Anmerkung**  
Stellen Sie sicher, dass die Peripheriegeräte für GPIO-Pins richtig verdrahtet sind, um Schäden an den Komponenten zu vermeiden.

## Steckerparameter
<a name="raspberrypi-gpio-connector-param"></a>

Dieser Konnektor stellt die folgenden Parameter bereit:

`InputGpios`  
Eine kommagetrennte Liste von GPIO-Pin-Nummern, die als Eingänge konfiguriert werden können. Optional können Sie `U` anfügen, um den Pull-up-Widerstand eines Pins einzustellen, oder `D`, um den Pull-down-Widerstand einzustellen. Beispiel: `"5,6U,7D"`.  
Anzeigename in der AWS IoT Konsole: **GPIO-Pins eingeben**  
Erforderlich: `false`. Sie müssen Eingangspins, Ausgangspins oder beides angeben.  
Typ: `string`  
Gültiges Muster: `^$|^[0-9]+[UD]?(,[0-9]+[UD]?)*$`

`InputPollPeriod`  
Das Intervall (in Millisekunden) zwischen jedem Polling-Vorgang, das die Eingangs-GPIO-Pins auf Zustandsänderungen überprüft. Der minimale Wert beträgt 1.  
Dieser Wert hängt von Ihrem Szenario und der Art der abgerufenen Geräte ab. Ein Wert von `50` sollte beispielsweise schnell genug sein, um einen Tastendruck zu erkennen.  
Anzeigename in der AWS IoT Konsole: **Geben Sie den GPIO-Abfragezeitraum** ein  
Erforderlich: `false`  
Typ: `string`  
Gültiges Muster: `^$|^[1-9][0-9]*$`

`OutputGpios`  
Eine kommagetrennte Liste von GPIO-Pin-Nummern, die als Ausgänge konfiguriert werden können. Optional kann `H` angefügt werden, um einen hohen Zustand (1) zu setzen, oder `L`, um einen niedrigen Zustand (0) einzustellen. Beispiel: `"8H,9,27L"`.  
Anzeigename in der AWS IoT Konsole: **Ausgangs-GPIO-Pins**  
Erforderlich: `false`. Sie müssen Eingangspins, Ausgangspins oder beides angeben.  
Typ: `string`  
Gültiges Muster: `^$|^[0-9]+[HL]?(,[0-9]+[HL]?)*$`

`GpioMem-ResourceId`  
Die ID der lokalen Geräteressource, die `/dev/gpiomem` repräsentiert.  
Dieser Konnektor hat Zugriff zum Lesen und Schreiben auf die Ressource.
Anzeigename in der AWS IoT Konsole: **for /dev/gpiomemRessourcengerät**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `.+`

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

Der folgende CLI-Befehl erstellt eine `ConnectorDefinition` mit einer ersten Version, die den Raspberry Pi GPIO-Anschluss enthält.

```
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{
    "Connectors": [
        {
            "Id": "MyRaspberryPiGPIOConnector",
            "ConnectorArn": "arn:aws:greengrass:region::/connectors/RaspberryPiGPIO/versions/3",
            "Parameters": {
                "GpioMem-ResourceId": "my-gpio-resource",
                "InputGpios": "5,6U,7D",
                "InputPollPeriod": 50,
                "OutputGpios": "8H,9,27L"
            }
        }
    ]
}'
```

**Anmerkung**  
Die Lambda-Funktion in diesem Konnektor hat einen [langlebigen Lebenszyklus](lambda-functions.md#lambda-lifecycle).

**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="raspberrypi-gpio-connector-data-input"></a>

Dieser Connector akzeptiert Lese- oder Schreibanforderungen für GPIO-Pins zu zwei MQTT-Themen.
+ Leseanforderungen zum Thema `gpio/+/+/read`.
+ Schreibanforderungen zum Thema `gpio/+/+/write`.

Um zu diesen Themen zu veröffentlichen, ersetzen Sie jeweils die Platzhalter `+` durch den Namen der Core-Objekte und die Nummer des Zielpins. Zum Beispiel:

```
gpio/core-thing-name/gpio-number/read
```

**Anmerkung**  
Derzeit müssen Sie beim Erstellen eines Abonnements, das den Raspberry Pi GPIO-Connector verwendet, einen Wert für mindestens einen der Plus-Platzhalter im Thema angeben.

**Themenfilter:** `gpio/+/+/read`  
Verwenden Sie dieses Thema, um den Konnektor anzuweisen, den Zustand des GPIO-Pins zu lesen, der im Thema angegeben ist.  
Der Konnektor veröffentlicht die Antwort zum entsprechenden Ausgabethema (z. B. `gpio/core-thing-name/gpio-number/state`).    
**Nachrichten-Eigenschaften**  
Keine. Nachrichten, die an dieses Thema gesendet werden, werden ignoriert.

**Themenfilter:** `gpio/+/+/write`  
Verwenden Sie dieses Thema, um Schreibanfragen an einen GPIO-Pin zu senden. Dadurch wird der Konnektor angewiesen, den GPIO-Pin, der im Thema angegeben ist, auf eine Nieder- oder Hochspannung einzustellen.  
+ `0` setzt den Pin auf Niederspannung.
+ `1` setzt den Pin auf Hochspannung.
Der Konnektor veröffentlicht die Antwort zum entsprechenden `/state`-Thema (z. B. `gpio/core-thing-name/gpio-number/state`).    
**Nachrichten-Eigenschaften**  
Der Wert `0` oder `1` als ganze Zahl oder Zeichenkette.  
**Beispieleingabe**  

```
0
```

## Ausgabedaten
<a name="raspberrypi-gpio-connector-data-output"></a>

Dieser Konnektor veröffentlicht Daten zu zwei Themen:
+ Hohe oder niedrige Zustandsänderungen im Thema `gpio/+/+/state`.
+ Fehler im Thema `gpio/+/error`.

**Themenfilter:** `gpio/+/+/state`  
Verwenden Sie dieses Thema, um auf Zustandsänderungen an den Eingangspins und Antworten auf Leseanforderungen zu warten. Der Konnektor gibt die Zeichenkette `"0"` zurück, wenn sich der Pin in einem niedrigen Zustand befindet, oder `"1"`, wenn er sich in einem hohen Zustand befindet.  
Bei der Veröffentlichung zu diesem Thema ersetzt der Konnektor die Platzhalter `+` durch den Namen des Core-Objekts bzw. den Zielpin. Zum Beispiel:  

```
gpio/core-thing-name/gpio-number/state
```
Derzeit müssen Sie beim Erstellen eines Abonnements, das den Raspberry Pi-GPIO-Connector verwendet, einen Wert für mindestens einen der Plus-Platzhalter im Thema angeben.  
**Beispielausgabe**  

```
0
```

**Themenfilter:** `gpio/+/error`  
Verwenden Sie dieses Thema, um nach Fehlern zu suchen. Der Konnektor veröffentlicht zu diesem Thema aufgrund einer ungültigen Anforderung, (z. B., wenn eine Zustandsänderung an einem Eingangspin angefordert wird).  
Bei der Veröffentlichung zu diesem Thema ersetzt der Konnektor den Platzhalter `+` durch den Namen des Core-Objekts.    
**Beispielausgabe**  

```
{
   "topic": "gpio/my-core-thing/22/write",
   "error": "Invalid GPIO operation",
   "long_description": "GPIO 22 is configured as an INPUT GPIO. Write operations are not permitted."
 }
```

## Beispiel für eine Verwendung
<a name="raspberrypi-gpio-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](#raspberrypi-gpio-connector-req) für den Konnektor erfüllen.

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](#raspberrypi-gpio-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. <a name="connectors-setup-device-resource"></a>Fügen Sie die erforderliche lokale Geräteressource hinzu und gewähren Sie Lese-/Schreibzugriff auf die Lambda-Funktion.

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

   1. Fügen Sie Abonnements hinzu, die es dem Konnektor ermöglichen, [Eingabedaten](#raspberrypi-gpio-connector-data-input) zu empfangen und [Ausgabedaten](#raspberrypi-gpio-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="raspberrypi-gpio-connector-usage-example"></a>

Die folgende Lambda-Beispielfunktion sendet eine Eingabenachricht an den Konnektor. In diesem Beispiel werden Leseanfragen für einen Satz von GPIO-Eingangspins gesendet. Es zeigt, wie Sie Themen mit dem Namen des Core-Objekts und der PIN-Nummer erstellen.

```
import greengrasssdk
import json
import os

iot_client = greengrasssdk.client('iot-data')
INPUT_GPIOS = [6, 17, 22]

thingName = os.environ['AWS_IOT_THING_NAME']

def get_read_topic(gpio_num):
    return '/'.join(['gpio', thingName, str(gpio_num), 'read'])

def get_write_topic(gpio_num):
    return '/'.join(['gpio', thingName, str(gpio_num), 'write'])

def send_message_to_connector(topic, message=''):
    iot_client.publish(topic=topic, payload=str(message))

def set_gpio_state(gpio, state):
    send_message_to_connector(get_write_topic(gpio), str(state))

def read_gpio_state(gpio):
    send_message_to_connector(get_read_topic(gpio))

def publish_basic_message():
    for i in INPUT_GPIOS:
    	read_gpio_state(i)

publish_basic_message()

def lambda_handler(event, context):
    return
```

## Lizenzen
<a name="raspberrypi-gpio-connector-license"></a>

Der Raspberry Pi GPIO; -Anschluss beinhaltet die folgende Software/Lizenzierung von Drittanbietern:
+ [RPi.GPIO /MIT](https://pypi.org/project/RPi.GPIO/)

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="raspberrypi-gpio-connector-changelog"></a>

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


| Version | Änderungen | 
| --- | --- | 
| 3 | <a name="upgrade-runtime-py3.7"></a>Die Lambda-Laufzeit wurde auf Python 3.7 aktualisiert, was die Laufzeitanforderungen ändert. | 
| 2 | Der Connector-ARN wurde zur AWS-Region Unterstützung aktualisiert. | 
| 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="raspberrypi-gpio-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)
+ [GPIO](https://www.raspberrypi.org/documentation/usage/gpio/) in der Raspberry Pi-Dokumentation

# Serieller Stream-Anschluss
<a name="serial-stream-connector"></a>

**Warnung**  <a name="connectors-extended-life-phase-warning"></a>
Dieser Connector befindet sich in der *Phase mit verlängerter Lebensdauer* und veröffentlicht AWS IoT Greengrass keine Updates, die Funktionen, Verbesserungen vorhandener Funktionen, Sicherheitspatches oder Bugfixes bieten. Weitere Informationen finden Sie unter [AWS IoT Greengrass Version 1 Wartungspolitik](maintenance-policy.md).

Der Serial Stream [Connector](connectors.md) liest und schreibt an eine serielle Schnittstelle eines AWS IoT Greengrass Core-Geräts.

Dieser Konnektor unterstützt zwei Betriebsarten:
+ **Read-On-Demand**. Empfängt Lese- und Schreibanforderungen zu MQTT-Themen und veröffentlicht die Antwort des Lesevorgangs oder den Status des Schreibvorgangs.
+ **Polling-Read**. Liest in regelmäßigen Abständen von der seriellen Schnittstelle. Dieser Modus unterstützt auch Read-On-Demand Anfragen.

**Anmerkung**  
Leseanforderungen sind auf eine maximale Leselänge von 63994 Bytes begrenzt. Schreibanforderungen sind auf eine maximale Datenlänge von 128000 Bytes beschränkt.

Dieser Konnektor hat die folgenden Versionen.


| Version | ARN | 
| --- | --- | 
| 3 | `arn:aws:greengrass:region::/connectors/SerialStream/versions/3` | 
| 2 | `arn:aws:greengrass:region::/connectors/SerialStream/versions/2` | 
| 1 | `arn:aws:greengrass:region::/connectors/SerialStream/versions/1` | 

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

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

Dieser Konnektor hat die folgenden Anforderungen:

------
#### [ Version 3 ]
+ <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-serial-stream-req-serial-port-resource"></a>Eine [lokale Geräteressource](access-local-resources.md) in der Greengrass-Gruppe, die auf die serielle Zielschnittstelle verweist.
**Anmerkung**  
Bevor Sie diesen Konnektor bereitstellen, empfehlen wir, die serielle Schnittstelle einzurichten und zu überprüfen, ob sie lesbar und beschreibbar ist. 

------
#### [ 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-serial-stream-req-serial-port-resource"></a>Eine [lokale Geräteressource](access-local-resources.md) in der Greengrass-Gruppe, die auf die serielle Zielschnittstelle verweist.
**Anmerkung**  
Bevor Sie diesen Konnektor bereitstellen, empfehlen wir, die serielle Schnittstelle einzurichten und zu überprüfen, ob sie lesbar und beschreibbar ist. 

------

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

Dieser Konnektor stellt die folgenden Parameter bereit:

`BaudRate`  
Die Baudrate der seriellen Verbindung.  
Anzeigename in der AWS IoT Konsole: **Baudrate**  
Erforderlich: `true`  
Typ: `string`  
Zulässige Werte: `110, 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 56000, 57600, 115200, 230400`  
Gültiges Muster: `^110$|^300$|^600$|^1200$|^2400$|^4800$|^9600$|^14400$|^19200$|^28800$|^38400$|^56000$|^57600$|^115200$|^230400$`

`Timeout`  
Der Timeout (in Sekunden) für einen Lesevorgang.  
Anzeigename in der AWS IoT Konsole: **Timeout**  
Erforderlich: `true`  
Typ: `string`  
Zulässige Werte: `1 - 59`  
Gültiges Muster: `^([1-9]|[1-5][0-9])$`

`SerialPort`  
Der absolute Pfad zur physikalischen seriellen Schnittstelle auf dem Gerät. Dies ist der Quellpfad, der für die lokale Geräteressource angegeben ist.  
Anzeigename in der AWS IoT Konsole: **Serielle Schnittstelle**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `[/a-zA-Z0-9_-]+`

`SerialPort-ResourceId`  
Die ID der lokalen Geräteressource, die die physische serielle Schnittstelle darstellt.  
Dieser Konnektor hat Zugriff zum Lesen und Schreiben auf die Ressource.
Anzeigename in der AWS IoT Konsole: **Ressource für serielle Schnittstelle**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `[a-zA-Z0-9_-]+`

`PollingRead`  
Legt den Lesemodus fest: Polling-Read oder. Read-On-Demand  
+ Für den Polling-Read-Modus geben Sie `true` an. In diesem Modus werden nur die Eigenschaften `PollingInterval`, `PollingReadType` und `PollingReadLength` benötigt.
+ Geben Sie für Read-On-Demand den Modus an. `false` In diesem Modus werden die Werte für Typ und Länge in der Leseanforderung angegeben.
Anzeigename in der AWS IoT Konsole: **Lesemodus**  
Erforderlich: `true`  
Typ: `string`  
Zulässige Werte: `true, false`  
Gültiges Muster: `^([Tt][Rr][Uu][Ee]|[Ff][Aa][Ll][Ss][Ee])$`

`PollingReadLength`  
Die Länge der zu lesenden Daten (in Bytes) bei jedem Polling-Lesevorgang. Dies gilt nur bei Verwendung des Polling-Read-Modus.  
Anzeigename in der AWS IoT Konsole: **Leselänge beim Abfragen**  
Erforderlich: `false`. Diese Eigenschaft ist erforderlich, wenn `PollingRead` `true` ist.  
Typ: `string`  
Gültiges Muster: `^(|[1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-2][0-9]{3}|63[0-8][0-9]{2}|639[0-8][0-9]|6399[0-4])$`

`PollingReadInterval`  
Das Intervall (in Sekunden), in dem das Lesen des Pollings stattfindet. Dies gilt nur bei Verwendung des Polling-Read-Modus.  
Anzeigename in der AWS IoT Konsole: **Leseintervall für Abfragen**  
Erforderlich: `false`. Diese Eigenschaft ist erforderlich, wenn `PollingRead` `true` ist.  
Typ: `string`  
Gültige Werte: 1 — 999  
Gültiges Muster: `^(|[1-9]|[1-9][0-9]|[1-9][0-9][0-9])$`

`PollingReadType`  
Der Typ der Daten, die der Polling-Thread liest. Dies gilt nur bei Verwendung des Polling-Read-Modus.  
Anzeigename in der AWS IoT Konsole: **Lesetyp der Abfrage**  
Erforderlich: `false`. Diese Eigenschaft ist erforderlich, wenn `PollingRead` `true` ist.  
Typ: `string`  
Zulässige Werte: `ascii, hex`  
Gültiges Muster: `^(|[Aa][Ss][Cc][Ii][Ii]|[Hh][Ee][Xx])$`

`RtsCts`  
Gibt an, ob die RTS/CTS-Flusssteuerung aktiviert werden soll. Der Standardwert ist `false`. Weitere Informationen finden Sie unter [RTS, CTS und RTR](https://en.wikipedia.org/wiki/RS-232#RTS,_CTS,_and_RTR).   
Anzeigename in der AWS IoT Konsole: **RTS/CTS Flow Control**  
Erforderlich: `false`  
Typ: `string`  
Zulässige Werte: `true, false`  
Gültiges Muster: `^(|[Tt][Rr][Uu][Ee]|[Ff][Aa][Ll][Ss][Ee])$`

`XonXoff`  
Gibt an, ob die Software-Flusssteuerung aktiviert werden soll. Der Standardwert ist `false`. Weitere Informationen finden Sie unter [Software-Flusssteuerung](https://en.wikipedia.org/wiki/Software_flow_control).  
Anzeigename in der AWS IoT Konsole: **Softwareflusssteuerung**  
Erforderlich: `false`  
Typ: `string`  
Zulässige Werte: `true, false`  
Gültiges Muster: `^(|[Tt][Rr][Uu][Ee]|[Ff][Aa][Ll][Ss][Ee])$`

`Parity`  
Die Parität der seriellen Schnittstelle. Der Standardwert ist `N`. Weitere Informationen finden Sie unter [Parität](https://en.wikipedia.org/wiki/Serial_port#Parity).   
Anzeigename in der AWS IoT Konsole: **Parität der seriellen Schnittstelle**  
Erforderlich: `false`  
Typ: `string`  
Zulässige Werte: `N, E, O, S, M`  
Gültiges Muster: `^(|[NEOSMneosm])$`

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

Der folgende CLI-Befehl erstellt eine `ConnectorDefinition` mit einer ersten Version, die den Serial Stream-Connector enthält. Konfiguriert den Konnektor für den Polling-Read-Modus.

```
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{
    "Connectors": [
        {
            "Id": "MySerialStreamConnector",
            "ConnectorArn": "arn:aws:greengrass:region::/connectors/SerialStream/versions/3",
            "Parameters": {
                "BaudRate" : "9600",
                "Timeout" : "25",
                "SerialPort" : "/dev/serial1",
                "SerialPort-ResourceId" : "my-serial-port-resource",
                "PollingRead" : "true",
                "PollingReadLength" : "30",
                "PollingReadInterval" : "30",
                "PollingReadType" : "hex"
            }
        }
    ]
}'
```

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="serial-stream-connector-data-input"></a>

Dieser Connector akzeptiert Lese- oder Schreibanforderungen für serielle Schnittstellen zu zwei MQTT-Themen. Eingabenachrichten müssen im JSON-Format sein.
+ Leseanforderungen zum Thema `serial/+/read/#`.
+ Schreibanforderungen zum Thema `serial/+/write/#`.

Um zu diesen Themen zu veröffentlichen, ersetzen Sie den Platzhalter `+` durch den Namen des Core-Objekts und den Platzhalter `#` durch den Pfad zur seriellen Schnittstelle. Zum Beispiel:

```
serial/core-thing-name/read/dev/serial-port
```

**Themenfilter:** `serial/+/read/#`  
Verwenden Sie dieses Thema, um On-Demand-Leseanforderungen an einen seriellen Pin zu senden. Leseanforderungen sind auf eine maximale Leselänge von 63994 Bytes begrenzt.    
**Nachrichten-Eigenschaften**    
`readLength`  
Die Länge der Daten, die von der seriellen Schnittstelle gelesen werden sollen.  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `^[1-9][0-9]*$`  
`type`  
Der Typ der zu lesenden Daten.  
Erforderlich: `true`  
Typ: `string`  
Zulässige Werte: `ascii, hex`  
Gültiges Muster: `(?i)^(ascii|hex)$`  
`id`  
Eine willkürliche ID für die Anforderung. Diese Eigenschaft wird verwendet, um eine Eingangsanforderung einer Ausgabeantwort zuzuordnen.  
Erforderlich: `false`  
Typ: `string`  
Gültiges Muster: `.+`  
**Beispieleingabe**  

```
{
    "readLength": "30",
    "type": "ascii",
    "id": "abc123"
}
```

**Themenfilter:** `serial/+/write/#`  
Verwenden Sie dieses Thema, um Schreibanforderungen an einen seriellen Pin zu senden. Schreibanforderungen sind auf eine maximale Datenlänge von 128000 Bytes beschränkt.    
**Nachrichten-Eigenschaften**    
`data`  
Die Zeichenfolge, die auf die serielle Schnittstelle geschrieben werden soll.  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `^[1-9][0-9]*$`  
`type`  
Der Typ der zu lesenden Daten.  
Erforderlich: `true`  
Typ: `string`  
Zulässige Werte: `ascii, hex`  
Gültiges Muster: `^(ascii|hex|ASCII|HEX)$`  
`id`  
Eine willkürliche ID für die Anforderung. Diese Eigenschaft wird verwendet, um eine Eingangsanforderung einer Ausgabeantwort zuzuordnen.  
Erforderlich: `false`  
Typ: `string`  
Gültiges Muster: `.+`  
**Beispiel-Eingabe: ASCII-Anforderung**  

```
{
    "data": "random serial data",
    "type": "ascii",
    "id": "abc123"
}
```  
**Beispiel-Eingabe: Hex-Anforderung**  

```
{
    "data": "base64 encoded data",
    "type": "hex",
    "id": "abc123"
}
```

## Ausgabedaten
<a name="serial-stream-connector-data-output"></a>

Der Konnektor veröffentlicht Ausgabedaten zu zwei Themen:
+ Statusinformationen vom Konnektor im Thema `serial/+/status/#`.
+ Antworten auf Leseanforderungen zum Thema `serial/+/read_response/#`.

Bei der Veröffentlichung zu diesem Thema ersetzt der Konnektor den Platzhalter `+` durch den Namen des Core-Objekts und den Platzhalter `#` durch den Pfad zur seriellen Schnittstelle. Zum Beispiel:

```
serial/core-thing-name/status/dev/serial-port
```

**Themenfilter:** `serial/+/status/#`  
Verwenden Sie dieses Thema, um den Status von Lese- und Schreibanforderungen anzuhören. Wenn eine `id`-Eigenschaft in die Anfrage aufgenommen wird, wird sie in der Antwort zurückgegeben.    
**Beispielausgabe: Erfolg**  

```
{
    "response": {
        "status": "success"
    },
    "id": "abc123"
}
```  
**Beispielausgabe: Fehler**  
Eine Fehlerreaktion beinhaltet eine `error_message`-Eigenschaft, die den Fehler oder das Timeout beschreibt, das beim Ausführen des Lese- oder Schreibvorgangs aufgetreten ist.  

```
{
    "response": {
        "status": "fail",
        "error_message": "Could not write to port"
    },
    "id": "abc123"
}
```

**Themenfilter:** `serial/+/read_response/#`  
Verwenden Sie dieses Thema, um Antwortdaten von einem Lesevorgang zu empfangen. Die Antwortdaten sind Base64-kodiert, wenn der Typ `hex` ist.    
**Beispielausgabe**  

```
{
    "data": "output of serial read operation"
    "id": "abc123"
}
```

## Beispiel für die Verwendung
<a name="serial-stream-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](#serial-stream-connector-req) für den Konnektor erfüllen.

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](#serial-stream-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. <a name="connectors-setup-device-resource"></a>Fügen Sie die erforderliche lokale Geräteressource hinzu und gewähren Sie Lese-/Schreibzugriff auf die Lambda-Funktion.

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

   1. Fügen Sie der Gruppe Abonnements hinzu, die es dem Konnektor ermöglichen, [Eingabedaten](#serial-stream-connector-data-input) zu empfangen und [Ausgabedaten](#serial-stream-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="serial-stream-connector-usage-example"></a>

Die folgende Lambda-Beispielfunktion sendet eine Eingabenachricht an den Konnektor.

```
import greengrasssdk
import json

TOPIC_REQUEST = 'serial/CORE_THING_NAME/write/dev/serial1'

# Creating a greengrass core sdk client
iot_client = greengrasssdk.client('iot-data')

def create_serial_stream_request():
	request = {
		"data": "TEST",
		"type": "ascii",
		"id": "abc123"
	}
	return request

def publish_basic_request():
	iot_client.publish(payload=json.dumps(create_serial_stream_request()), topic=TOPIC_REQUEST)

publish_basic_request()

def lambda_handler(event, context):
	return
```

## Lizenzen
<a name="serial-stream-connector-license"></a>

Der Serial Stream Connector umfasst die folgende Software/Lizenzierung von Drittanbietern:
+ [pyserial](https://github.com/pyserial/pyserial)/BSD

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="serial-stream-connector-changelog"></a>

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


| Version | Änderungen | 
| --- | --- | 
| 3 | <a name="upgrade-runtime-py3.7"></a>Die Lambda-Laufzeit wurde auf Python 3.7 aktualisiert, was die Laufzeitanforderungen ändert. | 
| 2 | Der Connector-ARN wurde zur AWS-Region Unterstützung aktualisiert. | 
| 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="serial-stream-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)

# ServiceNow MetricBase Integrationsanschluss
<a name="servicenow-connector"></a>

**Warnung**  <a name="connectors-extended-life-phase-warning"></a>
Dieser Connector befindet sich in der *Phase mit verlängerter Lebensdauer* und veröffentlicht AWS IoT Greengrass keine Updates, die Funktionen, Verbesserungen vorhandener Funktionen, Sicherheitspatches oder Bugfixes bereitstellen. Weitere Informationen finden Sie unter [AWS IoT Greengrass Version 1 Wartungspolitik](maintenance-policy.md).

Der ServiceNow MetricBase [Integrationskonnektor](connectors.md) veröffentlicht Zeitreihenmetriken von Greengrass-Geräten an ServiceNow MetricBase. Auf diese Weise können Sie Zeitreihendaten aus der Greengrass Core-Umgebung speichern, analysieren und visualisieren und auf lokale Ereignisse reagieren.

Dieser Konnektor empfängt Zeitreihendaten zu einem MQTT-Thema und veröffentlicht die Daten in regelmäßigen Abständen in der ServiceNow API.

Sie können diesen Konnektor zur Unterstützung vieler Szenarien verwenden, darunter z. B.:
+ Erstellen von Schwellenwert-basierten Warnmeldungen und Alarmen basierend auf Zeitreihendaten, die von Greengrass-Geräten gesammelt wurden.
+ Verwenden Sie Zeitdienstdaten von Greengrass-Geräten mit benutzerdefinierten Anwendungen, die auf der ServiceNow Plattform erstellt wurden.

Dieser Konnektor hat die folgenden Versionen.


| Version | ARN | 
| --- | --- | 
| 4 | `arn:aws:greengrass:region::/connectors/ServiceNowMetricBaseIntegration/versions/4` | 
| 3 | `arn:aws:greengrass:region::/connectors/ServiceNowMetricBaseIntegration/versions/3` | 
| 2 | `arn:aws:greengrass:region::/connectors/ServiceNowMetricBaseIntegration/versions/2` | 
| 1 | `arn:aws:greengrass:region::/connectors/ServiceNowMetricBaseIntegration/versions/1` | 

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

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

Dieser Konnektor hat die folgenden Anforderungen:

------
#### [ Version 3 - 4 ]
+ <a name="conn-req-ggc-v1.9.3-secrets"></a>AWS IoT Greengrass Kernsoftware v1.9.3 oder höher. AWS IoT Greengrass muss so konfiguriert sein, dass es lokale Geheimnisse unterstützt, wie in [Secrets Requirements](secrets.md#secrets-reqs) beschrieben.
**Anmerkung**  
Diese Anforderung beinhaltet die Gewährung des Zugriffs auf Ihre Secrets Manager Manager-Geheimnisse. Wenn Sie die standardmäßige Greengrass-Servicerolle verwenden, ist Greengrass berechtigt, die Werte von Geheimnissen abzurufen, deren Namen mit *greengrass* - beginnen.
+ <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-servicenow-req-servicenow-account"></a>Ein ServiceNow Konto mit einem aktivierten Abonnement für MetricBase. Darüber hinaus muss im Konto eine Metrik und eine metrische Tabelle angelegt werden. Weitere Informationen finden Sie [MetricBase](https://docs.servicenow.com/bundle/london-servicenow-platform/page/administer/metricbase/concept/metricbase.html)in der ServiceNow Dokumentation.
+ <a name="conn-servicenow-req-secret"></a>Ein geheimer Texttyp AWS Secrets Manager , in dem der Benutzername und das Passwort für die Anmeldung bei Ihrer ServiceNow Instance mit Standardauthentifizierung gespeichert werden. Das Secret muss "Benutzer-" und "Passwort-"Schlüssel mit entsprechenden Werten enthalten. Weitere Informationen finden Sie unter [Creating a Basic Secret](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_create-basic-secret.html) im *AWS Secrets Manager Benutzerhandbuch*.
+ Eine geheime Ressource in der Greengrass-Gruppe, die auf das Secrets Manager Manager-Geheimnis verweist. Weitere Informationen finden Sie unter [Setzen Sie Geheimnisse bis ins AWS IoT Greengrass Mark ein](secrets.md).

------
#### [ Versions 1 - 2 ]
+ <a name="conn-req-ggc-v1.7.0-secrets"></a>AWS IoT Greengrass Kernsoftware v1.7 oder höher. AWS IoT Greengrass muss so konfiguriert sein, dass es lokale Geheimnisse unterstützt, wie in [Secrets Requirements](secrets.md#secrets-reqs) beschrieben.
**Anmerkung**  
Diese Anforderung beinhaltet die Gewährung des Zugriffs auf Ihre Secrets Manager Manager-Geheimnisse. Wenn Sie die standardmäßige Greengrass-Servicerolle verwenden, ist Greengrass berechtigt, die Werte von Geheimnissen abzurufen, deren Namen mit *greengrass* - beginnen.
+ [Python-Version](https://www.python.org/) 2.7 wurde auf dem Core-Gerät installiert und zur Umgebungsvariablen PATH hinzugefügt.
+ <a name="conn-servicenow-req-servicenow-account"></a>Ein ServiceNow Konto mit einem aktivierten Abonnement für MetricBase. Darüber hinaus muss im Konto eine Metrik und eine metrische Tabelle angelegt werden. Weitere Informationen finden Sie [MetricBase](https://docs.servicenow.com/bundle/london-servicenow-platform/page/administer/metricbase/concept/metricbase.html)in der ServiceNow Dokumentation.
+ <a name="conn-servicenow-req-secret"></a>Ein geheimer Texttyp AWS Secrets Manager , in dem der Benutzername und das Passwort für die Anmeldung bei Ihrer ServiceNow Instance mit Standardauthentifizierung gespeichert werden. Das Secret muss "Benutzer-" und "Passwort-"Schlüssel mit entsprechenden Werten enthalten. Weitere Informationen finden Sie unter [Creating a Basic Secret](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_create-basic-secret.html) im *AWS Secrets Manager Benutzerhandbuch*.
+ Eine geheime Ressource in der Greengrass-Gruppe, die auf das Secrets Manager Manager-Geheimnis verweist. Weitere Informationen finden Sie unter [Setzen Sie Geheimnisse bis ins AWS IoT Greengrass Mark ein](secrets.md).

------

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

Dieser Konnektor stellt die folgenden Parameter bereit:

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

`PublishInterval`  <a name="service-now-PublishInterval"></a>
Die maximale Anzahl von Sekunden, bis zu der zwischen Veröffentlichungsereignissen gewartet werden soll ServiceNow. Der maximale Wert beträgt 900.  
Der Connector veröffentlicht, bis ServiceNow er erreicht `PublishBatchSize` ist oder `PublishInterval` abläuft.  
Anzeigename in der AWS IoT Konsole: **Veröffentlichungsintervall in Sekunden**  
Erforderlich: `true`  
Typ: `string`  
Zulässige Werte: `1 - 900`  
Gültiges Muster: `[1-9]|[1-9]\d|[1-9]\d\d|900`

`PublishBatchSize`  <a name="service-now-PublishBatchSize"></a>
Die maximale Anzahl von Metrikwerten, die gebündelt werden können, bevor sie veröffentlicht werden. ServiceNow  
Der Connector veröffentlicht bis zu dem ServiceNow Zeitpunkt, an dem er erreicht `PublishBatchSize` ist oder `PublishInterval` abläuft.  
Anzeigename in der AWS IoT Konsole: **Batchgröße veröffentlichen**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `^[0-9]+$`

`InstanceName`  <a name="service-now-InstanceName"></a>
Der Name der Instanz, mit der eine Verbindung hergestellt wurde ServiceNow.  
Anzeigename in der AWS IoT Konsole: **Name der ServiceNow Instanz**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `.+`

`DefaultTableName`  <a name="service-now-DefaultTableName"></a>
Der Name der Tabelle, die die mit der Zeitreihe `GlideRecord` verknüpfte MetricBase Datenbank enthält. Die Eigenschaft `table` in der Nutzlast der Input-Message kann verwendet werden, um diesen Wert zu überschreiben.  
Anzeigename in der AWS IoT Konsole: **Name der Tabelle, die die Metrik enthalten soll**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `.+`

`MaxMetricsToRetain`  <a name="service-now-MaxMetricsToRetain"></a>
Die maximale Anzahl der Metriken, die im Speicher gespeichert werden können, bevor sie durch neue Metriken ersetzt werden.  
Diese Begrenzung gilt, wenn keine Verbindung zum Internet besteht und der Konnektor beginnt, die Metriken zu puffern, um sie später zu veröffentlichen. Wenn der Puffer voll ist, werden die ältesten Metriken durch neue Metriken ersetzt.  
Metriken werden nicht gespeichert, wenn der Host-Prozess für den Konnektor unterbrochen wird. Dies kann beispielsweise während der Gruppen-Bereitstellung oder beim Neustart des Geräts geschehen.
Dieser Wert sollte größer als die Batch-Größe und groß genug sein, um Nachrichten basierend auf der Eingangsrate der MQTT-Nachrichten zu halten.  
Anzeigename in der AWS IoT Konsole: **Maximale Anzahl von Metriken, die im Speicher aufbewahrt** werden sollen  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `^[0-9]+$`

`AuthSecretArn`  <a name="service-now-AuthSecretArn"></a>
Das AWS Secrets Manager darin enthaltene Geheimnis speichert den ServiceNow Benutzernamen und das Passwort. Dies muss ein Texttyp Secret sein. Das Secret muss "Benutzer-" und "Passwort-"Schlüssel mit entsprechenden Werten enthalten.  
Anzeigename in der AWS IoT Konsole: **ARN of Auth Secret**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `arn:aws:secretsmanager:[a-z0-9\-]+:[0-9]{12}:secret:([a-zA-Z0-9\\]+/)*[a-zA-Z0-9/_+=,.@\-]+-[a-zA-Z0-9]+`

`AuthSecretArn-ResourceId`  <a name="service-now-AuthSecretArn-ResourceId"></a>
Die geheime Ressource in der Gruppe, die auf das Secrets Manager Manager-Geheimnis für die ServiceNow Anmeldeinformationen verweist.  
Anzeigename in der AWS IoT Konsole: **Auth-Token-Ressource**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `.+`

`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$`

------
#### [ Version 1 - 3 ]

`PublishInterval`  <a name="service-now-PublishInterval"></a>
Die maximale Anzahl von Sekunden, bis zu der zwischen Veröffentlichungsereignissen gewartet werden soll ServiceNow. Der maximale Wert beträgt 900.  
Der Connector veröffentlicht, bis ServiceNow er erreicht `PublishBatchSize` ist oder `PublishInterval` abläuft.  
Anzeigename in der AWS IoT Konsole: **Veröffentlichungsintervall in Sekunden**  
Erforderlich: `true`  
Typ: `string`  
Zulässige Werte: `1 - 900`  
Gültiges Muster: `[1-9]|[1-9]\d|[1-9]\d\d|900`

`PublishBatchSize`  <a name="service-now-PublishBatchSize"></a>
Die maximale Anzahl von Metrikwerten, die gebündelt werden können, bevor sie veröffentlicht werden. ServiceNow  
Der Connector veröffentlicht bis zu dem ServiceNow Zeitpunkt, an dem er erreicht `PublishBatchSize` ist oder `PublishInterval` abläuft.  
Anzeigename in der AWS IoT Konsole: **Batchgröße veröffentlichen**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `^[0-9]+$`

`InstanceName`  <a name="service-now-InstanceName"></a>
Der Name der Instanz, mit der eine Verbindung hergestellt wurde ServiceNow.  
Anzeigename in der AWS IoT Konsole: **Name der ServiceNow Instanz**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `.+`

`DefaultTableName`  <a name="service-now-DefaultTableName"></a>
Der Name der Tabelle, die die mit der Zeitreihe `GlideRecord` verknüpfte MetricBase Datenbank enthält. Die Eigenschaft `table` in der Nutzlast der Input-Message kann verwendet werden, um diesen Wert zu überschreiben.  
Anzeigename in der AWS IoT Konsole: **Name der Tabelle, die die Metrik enthalten soll**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `.+`

`MaxMetricsToRetain`  <a name="service-now-MaxMetricsToRetain"></a>
Die maximale Anzahl der Metriken, die im Speicher gespeichert werden können, bevor sie durch neue Metriken ersetzt werden.  
Diese Begrenzung gilt, wenn keine Verbindung zum Internet besteht und der Konnektor beginnt, die Metriken zu puffern, um sie später zu veröffentlichen. Wenn der Puffer voll ist, werden die ältesten Metriken durch neue Metriken ersetzt.  
Metriken werden nicht gespeichert, wenn der Host-Prozess für den Konnektor unterbrochen wird. Dies kann beispielsweise während der Gruppen-Bereitstellung oder beim Neustart des Geräts geschehen.
Dieser Wert sollte größer als die Batch-Größe und groß genug sein, um Nachrichten basierend auf der Eingangsrate der MQTT-Nachrichten zu halten.  
Anzeigename in der AWS IoT Konsole: **Maximale Anzahl von Metriken, die im Speicher aufbewahrt** werden sollen  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `^[0-9]+$`

`AuthSecretArn`  <a name="service-now-AuthSecretArn"></a>
Das AWS Secrets Manager darin enthaltene Geheimnis speichert den ServiceNow Benutzernamen und das Passwort. Dies muss ein Texttyp Secret sein. Das Secret muss "Benutzer-" und "Passwort-"Schlüssel mit entsprechenden Werten enthalten.  
Anzeigename in der AWS IoT Konsole: **ARN of Auth Secret**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `arn:aws:secretsmanager:[a-z0-9\-]+:[0-9]{12}:secret:([a-zA-Z0-9\\]+/)*[a-zA-Z0-9/_+=,.@\-]+-[a-zA-Z0-9]+`

`AuthSecretArn-ResourceId`  <a name="service-now-AuthSecretArn-ResourceId"></a>
Die geheime Ressource in der Gruppe, die auf das Secrets Manager Manager-Geheimnis für die ServiceNow Anmeldeinformationen verweist.  
Anzeigename in der AWS IoT Konsole: **Auth-Token-Ressource**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `.+`

------

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

Der folgende CLI-Befehl erstellt eine `ConnectorDefinition` mit einer ersten Version, die den ServiceNow MetricBase Integrationsconnector enthält.

```
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{
    "Connectors": [
        {
            "Id": "MyServiceNowMetricBaseIntegrationConnector",
            "ConnectorArn": "arn:aws:greengrass:region::/connectors/ServiceNowMetricBaseIntegration/versions/4",
            "Parameters": {
                "PublishInterval" : "10",
                "PublishBatchSize" : "50",
                "InstanceName" : "myinstance",
                "DefaultTableName" : "u_greengrass_app",
                "MaxMetricsToRetain" : "20000",
                "AuthSecretArn" : "arn:aws:secretsmanager:region:account-id:secret:greengrass-secret-hash",
                "AuthSecretArn-ResourceId" : "MySecretResource", 
                "IsolationMode" : "GreengrassContainer"
            }
        }
    ]
}'
```

**Anmerkung**  
Die Lambda-Funktion in diesem Konnektor hat einen [langlebigen Lebenszyklus](lambda-functions.md#lambda-lifecycle).

**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="servicenow-connector-data-input"></a>

Dieser Connector akzeptiert Zeitreihenmetriken zu einem MQTT-Thema und veröffentlicht die Metriken unter. ServiceNow Eingabenachrichten müssen im JSON-Format sein.

<a name="topic-filter"></a>**Themenfilter im Abonnement**  
`servicenow/metricbase/metric`

**Nachrichten-Eigenschaften**    
`request`  
Informationen über die Tabelle, den Datensatz und die Metrik. Diese Anforderung repräsentiert das Objekt `seriesRef` in einer Zeitreihen-POST-Anforderung. Weitere Informationen finden Sie unter [ Clotho Zeitreihen-API - POST](https://docs.servicenow.com/bundle/london-application-development/page/integrate/inbound-rest/concept/Clotho-Time-Series-API.html#clotho-POST-put).  
  
Erforderlich: `true`  
Typ: `object` der die folgenden Eigenschaften beinhaltet:    
`subject`  
Die `sys_id` des spezifischen Datensatzes in der Tabelle.  
Erforderlich: `true`  
Typ: `string`  
`metric_name`  
Der Metrik-Feldname.  
Erforderlich: `true`  
Typ: `string`  
`table`  
Der Name der Tabelle, in der der Datensatz gespeichert werden soll. Geben Sie diesen Wert an, um den Parameter `DefaultTableName` zu überschreiben.  
Erforderlich: `false`  
Typ: `string`  
`value`  
Der Wert des einzelnen Datenpunktes.  
Erforderlich: `true`  
Typ: `float`  
`timestamp`  
Der Zeitstempel des einzelnen Datenpunktes. Der Standardwert ist die aktuelle Zeit.  
Erforderlich: `false`  
Typ: `string`

**Beispieleingabe**  

```
{
    "request": {
        "subject":"ef43c6d40a0a0b5700c77f9bf387afe3",
        "metric_name":"u_count",
        "table": "u_greengrass_app"
        "value": 1.0,
        "timestamp": "2018-10-14T10:30:00"
    }
}
```

## Ausgabedaten
<a name="servicenow-connector-data-output"></a>

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

<a name="topic-filter"></a>**Themenfilter im Abonnement**  
`servicenow/metricbase/metric/status`

**Beispielausgabe: Erfolg**  

```
{
    "response": {
        "metric_name": "Errors",
        "table_name": "GliderProd",
        "processed_on": "2018-10-14T10:35:00",
        "response_id": "khjKSkj132qwr23fcba",
        "status": "success",
        "values": [
            {
                "timestamp": "2016-10-14T10:30:00",
                "value": 1.0
            },
            {
                "timestamp": "2016-10-14T10:31:00",
                "value": 1.1
            }
        ]
    }
}
```

**Beispielausgabe: Fehler**  

```
{
    "response": {
        "error": "InvalidInputException",
        "error_message": "metric value is invalid",
        "status": "fail"
    }
}
```
Wenn der Connector einen Fehler erkennt, der wiederholt werden kann (z. B. Verbindungsfehler), versucht er die Veröffentlichung im nächsten Batch erneut.

## Beispiel für die Verwendung
<a name="servicenow-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](#servicenow-connector-req) für den Konnektor erfüllen.

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](#servicenow-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. <a name="connectors-setup-secret-resource"></a>Fügen Sie die erforderliche geheime Ressource hinzu und gewähren Sie der Lambda-Funktion Lesezugriff.

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

   1. Fügen Sie Abonnements hinzu, die es dem Konnektor ermöglichen, [Eingabedaten](#servicenow-connector-data-input) zu empfangen und [Ausgabedaten](#servicenow-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="servicenow-connector-usage-example"></a>

Die folgende Lambda-Beispielfunktion sendet eine Eingabenachricht an den Konnektor.

```
import greengrasssdk
import json

iot_client = greengrasssdk.client('iot-data')
SEND_TOPIC = 'servicenow/metricbase/metric'

def create_request_with_all_fields():
    return {
        "request": {
             "subject": '2efdf6badbd523803acfae441b961961',
             "metric_name": 'u_count',
             "value": 1234,
             "timestamp": '2018-10-20T20:22:20',
             "table": 'u_greengrass_metricbase_test'
        }
    }

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

Der ServiceNow MetricBase Integrationskonnektor umfasst die folgende Software/Lizenzierung von Drittanbietern:
+ [pysnow](https://github.com/rbw/pysnow)/MIT

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="servicenow-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="servicenow-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)

# 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*

# Konnektor für Splunk-Integration
<a name="splunk-connector"></a>

**Warnung**  <a name="connectors-extended-life-phase-warning"></a>
Dieser Connector befindet sich in der *Phase mit verlängerter Lebensdauer* und veröffentlicht AWS IoT Greengrass keine Updates, die Funktionen, Verbesserungen vorhandener Funktionen, Sicherheitspatches oder Bugfixes bieten. Weitere Informationen finden Sie unter [AWS IoT Greengrass Version 1 Wartungspolitik](maintenance-policy.md).

Der Splunk Integration [Connector](connectors.md) veröffentlicht Daten von Greengrass-Geräten an Splunk. Dies ermöglicht es Ihnen, Splunk zur Überwachung und Analyse der Greengrass Core-Umgebung zu verwenden und auf lokale Ereignisse zu reagieren. Der Konnektor ist in den HTTP Event Collector (HEC) integriert. Weitere Informationen finden Sie unter [Einführung in den Splunk HTTP Event Collector](https://dev.splunk.com/view/event-collector/SP-CAAAE6M) in der Splunk-Dokumentation.

Dieser Konnektor empfängt Protokoll- und Ereignisdaten zu einem MQTT-Thema und veröffentlicht die Daten an die Splunk-API.

Sie können diesen Konnektor zur Unterstützung von industriellen Szenarien verwenden, darunter z. B.:
+ Bediener können periodische Daten von Aktuatoren und Sensoren (z. B. Temperatur-, Druck- und Wasserwerte) verwenden, um Alarme auszulösen, wenn Werte bestimmte Schwellenwerte überschreiten.
+ Developer können Daten verwenden, die von Industriemaschinen gesammelt wurden, um ML-Modelle zu entwerfen, die die Anlagen auf mögliche Probleme überwachen.

Dieser Anschluss hat die folgenden Versionen.


| Version | ARN | 
| --- | --- | 
| 4 | `arn:aws:greengrass:region::/connectors/SplunkIntegration/versions/4` | 
| 3 | `arn:aws:greengrass:region::/connectors/SplunkIntegration/versions/3` | 
| 2 | `arn:aws:greengrass:region::/connectors/SplunkIntegration/versions/2` | 
| 1 | `arn:aws:greengrass:region::/connectors/SplunkIntegration/versions/1` | 

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

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

Dieser Konnektor hat die folgenden Anforderungen:

------
#### [ Version 3 - 4 ]
+ <a name="conn-req-ggc-v1.9.3-secrets"></a>AWS IoT Greengrass Kernsoftware v1.9.3 oder höher. AWS IoT Greengrass muss so konfiguriert sein, dass es lokale Geheimnisse unterstützt, wie in [Secrets Requirements](secrets.md#secrets-reqs) beschrieben.
**Anmerkung**  
Diese Anforderung beinhaltet die Gewährung des Zugriffs auf Ihre Secrets Manager Manager-Geheimnisse. Wenn Sie die standardmäßige Greengrass-Servicerolle verwenden, ist Greengrass berechtigt, die Werte von Geheimnissen abzurufen, deren Namen mit *greengrass* - beginnen.
+ <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-splunk-req-http-event-collector"></a>Die Funktionalität des HTTP Event Collectors muss im Splunk aktiviert sein. Weitere Informationen finden Sie unter [Set up and use HTTP Event Collector in Splunk Web](https://docs.splunk.com/Documentation/Splunk/7.2.0/Data/UsetheHTTPEventCollector) in der Splunk-Dokumentation.
+ <a name="conn-splunk-req-secret"></a>Ein geheimer Texttyp AWS Secrets Manager , in dem Ihr Splunk HTTP Event Collector-Token gespeichert wird. *Weitere Informationen finden Sie in der Splunk-Dokumentation unter [Über Event-Collector-Token](https://docs.splunk.com/Documentation/Splunk/7.2.0/Data/UsetheHTTPEventCollector#About_Event_Collector_tokens) und unter [Creating a Basic Secret im Benutzerhandbuch](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_create-basic-secret.html).AWS Secrets Manager *
**Anmerkung**  
Um das Geheimnis in der Secrets Manager-Konsole zu erstellen, geben Sie Ihr Token auf der Registerkarte **Klartext** ein. Verwenden Sie keine Anführungszeichen oder andere Formatierungen. Geben Sie in der API das Token als Wert für die `SecretString` Eigenschaft an.
+ Eine geheime Ressource in der Greengrass-Gruppe, die auf das Secrets Manager Manager-Geheimnis verweist. Weitere Informationen finden Sie unter [Setzen Sie Geheimnisse bis ins AWS IoT Greengrass Mark ein](secrets.md).

------
#### [ Versions 1 - 2 ]
+ <a name="conn-req-ggc-v1.7.0-secrets"></a>AWS IoT Greengrass Kernsoftware v1.7 oder höher. AWS IoT Greengrass muss so konfiguriert sein, dass es lokale Geheimnisse unterstützt, wie in [Secrets Requirements](secrets.md#secrets-reqs) beschrieben.
**Anmerkung**  
Diese Anforderung beinhaltet die Gewährung des Zugriffs auf Ihre Secrets Manager Manager-Geheimnisse. Wenn Sie die standardmäßige Greengrass-Servicerolle verwenden, ist Greengrass berechtigt, die Werte von Geheimnissen abzurufen, deren Namen mit *greengrass* - beginnen.
+ [Python-Version](https://www.python.org/) 2.7 wurde auf dem Core-Gerät installiert und zur Umgebungsvariablen PATH hinzugefügt.
+ <a name="conn-splunk-req-http-event-collector"></a>Die Funktionalität des HTTP Event Collectors muss im Splunk aktiviert sein. Weitere Informationen finden Sie unter [Set up and use HTTP Event Collector in Splunk Web](https://docs.splunk.com/Documentation/Splunk/7.2.0/Data/UsetheHTTPEventCollector) in der Splunk-Dokumentation.
+ <a name="conn-splunk-req-secret"></a>Ein geheimer Texttyp AWS Secrets Manager , in dem Ihr Splunk HTTP Event Collector-Token gespeichert wird. *Weitere Informationen finden Sie in der Splunk-Dokumentation unter [Über Event-Collector-Token](https://docs.splunk.com/Documentation/Splunk/7.2.0/Data/UsetheHTTPEventCollector#About_Event_Collector_tokens) und unter [Creating a Basic Secret im Benutzerhandbuch](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_create-basic-secret.html).AWS Secrets Manager *
**Anmerkung**  
Um das Geheimnis in der Secrets Manager-Konsole zu erstellen, geben Sie Ihr Token auf der Registerkarte **Klartext** ein. Verwenden Sie keine Anführungszeichen oder andere Formatierungen. Geben Sie in der API das Token als Wert für die `SecretString` Eigenschaft an.
+ Eine geheime Ressource in der Greengrass-Gruppe, die auf das Secrets Manager Manager-Geheimnis verweist. Weitere Informationen finden Sie unter [Setzen Sie Geheimnisse bis ins AWS IoT Greengrass Mark ein](secrets.md).

------

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

Dieser Konnektor stellt die folgenden Parameter bereit:

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

`SplunkEndpoint`  <a name="splunk-SplunkEndpoint"></a>
Der Endpunkt Ihrer Splunk-Instance. Dieser Wert muss das Protokoll, den Hostnamen und den Port enthalten.  
Anzeigename in der AWS IoT Konsole: **Splunk-Endpunkt**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `^(http:\/\/|https:\/\/)?[a-z0-9]+([-.]{1}[a-z0-9]+)*.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$`

`MemorySize`  <a name="splunk-MemorySize"></a>
Die Speichergröße (in KB), die dem Konnektor zugewiesen werden soll.  
Anzeigename in der AWS IoT Konsole: **Speichergröße**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `^[0-9]+$`

`SplunkQueueSize`  <a name="splunk-SplunkQueueSize"></a>
Die maximale Anzahl von Elementen, die im Speicher gespeichert werden können, bevor die Elemente übertragen oder verworfen werden. Wenn dieses Limit erreicht wird, werden die ältesten Elemente in der Warteschlange durch neuere Elemente ersetzt. Diese Begrenzung kommt typischerweise zum tragen, wenn keine Verbindung zum Internet besteht.  
Anzeigename in der AWS IoT Konsole: **Maximale Anzahl der beizubehaltenden Elemente**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `^[0-9]+$`

`SplunkFlushIntervalSeconds`  <a name="splunk-SplunkFlushIntervalSeconds"></a>
Das Intervall (in Sekunden) für die Veröffentlichung empfangener Daten an Splunk HEC. Der maximale Wert beträgt 900. Um den Konnektor so zu konfigurieren, dass er Elemente veröffentlicht, sobald sie empfangen werden (ohne Batching), geben Sie 0 an.  
Anzeigename in der AWS IoT Konsole: **Splunk-Veröffentlichungsintervall**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `[0-9]|[1-9]\d|[1-9]\d\d|900`

`SplunkTokenSecretArn`  <a name="splunk-SplunkTokenSecretArn"></a>
Das Geheimnis AWS Secrets Manager , in dem das Splunk-Token gespeichert ist. Dies muss ein Texttyp Secret sein.  
Anzeigename in der AWS IoT Konsole: **ARN des geheimen Splunk-Authentifizierungstokens**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `arn:aws:secretsmanager:[a-z]{2}-[a-z]+-\d{1}:\d{12}?:secret:[a-zA-Z0-9-_]+-[a-zA-Z0-9-_]+`

`SplunkTokenSecretArn-ResourceId`  <a name="splunk-SplunkTokenSecretArn-ResourceId"></a>
Die geheime Ressource in der Greengrass-Gruppe, die auf das Splunk-Secret verweist.  
Anzeigename in der AWS IoT Konsole: **Splunk-Authentifizierungstoken-Ressource**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `.+`

`SplunkCustomCALocation`  <a name="splunk-SplunkCustomCALocation"></a>
Der Dateipfad der benutzerdefinierten Zertifizierungsstelle (CA) für Splunk (z. B. `/etc/ssl/certs/splunk.crt`).  
Anzeigename in der AWS IoT Konsole: Standort der **benutzerdefinierten Splunk-Zertifizierungsstelle**  
Erforderlich: `false`  
Typ: `string`  
Gültiges Muster: `^$|/.*`

`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$`

------
#### [ Version 1 - 3 ]

`SplunkEndpoint`  <a name="splunk-SplunkEndpoint"></a>
Der Endpunkt Ihrer Splunk-Instance. Dieser Wert muss das Protokoll, den Hostnamen und den Port enthalten.  
Anzeigename in der AWS IoT Konsole: **Splunk-Endpunkt**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `^(http:\/\/|https:\/\/)?[a-z0-9]+([-.]{1}[a-z0-9]+)*.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$`

`MemorySize`  <a name="splunk-MemorySize"></a>
Die Speichergröße (in KB), die dem Konnektor zugewiesen werden soll.  
Anzeigename in der AWS IoT Konsole: **Speichergröße**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `^[0-9]+$`

`SplunkQueueSize`  <a name="splunk-SplunkQueueSize"></a>
Die maximale Anzahl von Elementen, die im Speicher gespeichert werden können, bevor die Elemente übertragen oder verworfen werden. Wenn dieses Limit erreicht wird, werden die ältesten Elemente in der Warteschlange durch neuere Elemente ersetzt. Diese Begrenzung kommt typischerweise zum tragen, wenn keine Verbindung zum Internet besteht.  
Anzeigename in der AWS IoT Konsole: **Maximale Anzahl der beizubehaltenden Elemente**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `^[0-9]+$`

`SplunkFlushIntervalSeconds`  <a name="splunk-SplunkFlushIntervalSeconds"></a>
Das Intervall (in Sekunden) für die Veröffentlichung empfangener Daten an Splunk HEC. Der maximale Wert beträgt 900. Um den Konnektor so zu konfigurieren, dass er Elemente veröffentlicht, sobald sie empfangen werden (ohne Batching), geben Sie 0 an.  
Anzeigename in der AWS IoT Konsole: **Splunk-Veröffentlichungsintervall**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `[0-9]|[1-9]\d|[1-9]\d\d|900`

`SplunkTokenSecretArn`  <a name="splunk-SplunkTokenSecretArn"></a>
Das Geheimnis AWS Secrets Manager , in dem das Splunk-Token gespeichert ist. Dies muss ein Texttyp Secret sein.  
Anzeigename in der AWS IoT Konsole: **ARN des geheimen Splunk-Authentifizierungstokens**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `arn:aws:secretsmanager:[a-z]{2}-[a-z]+-\d{1}:\d{12}?:secret:[a-zA-Z0-9-_]+-[a-zA-Z0-9-_]+`

`SplunkTokenSecretArn-ResourceId`  <a name="splunk-SplunkTokenSecretArn-ResourceId"></a>
Die geheime Ressource in der Greengrass-Gruppe, die auf das Splunk-Secret verweist.  
Anzeigename in der AWS IoT Konsole: **Splunk-Authentifizierungstoken-Ressource**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `.+`

`SplunkCustomCALocation`  <a name="splunk-SplunkCustomCALocation"></a>
Der Dateipfad der benutzerdefinierten Zertifizierungsstelle (CA) für Splunk (z. B. `/etc/ssl/certs/splunk.crt`).  
Anzeigename in der AWS IoT Konsole: Standort der **benutzerdefinierten Splunk-Zertifizierungsstelle**  
Erforderlich: `false`  
Typ: `string`  
Gültiges Muster: `^$|/.*`

------

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

Der folgende CLI-Befehl erstellt eine `ConnectorDefinition` mit einer ersten Version, die den Splunk Integration Connector enthält.

```
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{
    "Connectors": [
        {
            "Id": "MySplunkIntegrationConnector",
            "ConnectorArn": "arn:aws:greengrass:region::/connectors/SplunkIntegration/versions/4",
            "Parameters": {
                "SplunkEndpoint": "https://myinstance.cloud.splunk.com:8088",
                "MemorySize": 200000,
                "SplunkQueueSize": 10000,
                "SplunkFlushIntervalSeconds": 5,
                "SplunkTokenSecretArn":"arn:aws:secretsmanager:region:account-id:secret:greengrass-secret-hash",
                "SplunkTokenSecretArn-ResourceId": "MySplunkResource", 
                "IsolationMode" : "GreengrassContainer"
            }
        }
    ]
}'
```

**Anmerkung**  
Die Lambda-Funktion in diesem Konnektor hat einen [langlebigen Lebenszyklus](lambda-functions.md#lambda-lifecycle).

**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="splunk-connector-data-input"></a>

Dieser Connector akzeptiert Protokollierungs- und Ereignisdaten zu einem MQTT-Thema und veröffentlicht die empfangenen Daten unverändert in der Splunk-API. Eingabenachrichten müssen im JSON-Format vorliegen.

<a name="topic-filter"></a>**Themenfilter im Abonnement**  
`splunk/logs/put`

**Nachrichten-Eigenschaften**    
`request`  
Die Ereignisdaten, die an die Splunk-API gesendet werden sollen. Ereignisse müssen den Spezifikationen der [Services/Collector](https://docs.splunk.com/Documentation/Splunk/latest/RESTREF/RESTinput#services.2Fcollector)-API entsprechen.  
Erforderlich: `true`  
Typ:`object`. Nur die `event`-Eigenschaft ist erforderlich.  
`id`  
Eine willkürliche ID für die Anforderung. Diese Eigenschaft wird verwendet, um eine Eingangsanforderung auf einen Ausgangsstatus abzubilden.  
Erforderlich: `false`  
Typ: `string`

**Beschränkungen**  
Alle Beschränkungen, die durch die Splunk-API auferlegt werden, gelten für diesen Konnektor. Weitere Informationen finden Sie unter [Services/Collector](https://docs.splunk.com/Documentation/Splunk/latest/RESTREF/RESTinput#services.2Fcollector).

**Beispieleingabe**  

```
{
    "request": {
        "event": "some event",
        "fields": {
            "severity": "INFO",
            "category": [
                "value1",
                "value2"
            ]
        }
    },
    "id": "request123"
}
```

## Ausgabedaten
<a name="splunk-connector-data-output"></a>

Dieser Konnektor veröffentlicht Ausgabedaten zu zwei Themen:
+ Statusinformationen zum Thema `splunk/logs/put/status`.
+ Fehler im Thema `splunk/logs/put/error`.

**Themenfilter:** `splunk/logs/put/status`  
Verwenden Sie dieses Thema, um den Status der Anforderungen anzuhören. Jedes Mal, wenn der Connector einen Stapel empfangener Daten an die Splunk-API sendet, veröffentlicht er eine Liste IDs der erfolgreichen und fehlgeschlagenen Anfragen.    
**Beispielausgabe**  

```
{
    "response": {
        "succeeded": [
            "request123",
            ...
        ],
        "failed": [
            "request789",
            ...
        ]
    }
}
```

**Themenfilter:** `splunk/logs/put/error`  
Verwenden Sie dieses Thema, um nach Fehlern vom Konnektor zu suchen. Die Eigenschaft `error_message`, die den Fehler oder das Timeout beschreibt, die beim Verarbeiten der Anforderung aufgetreten sind.    
**Beispielausgabe**  

```
{
    "response": {
        "error": "UnauthorizedException",
        "error_message": "invalid splunk token",
        "status": "fail"
    }
}
```
Wenn der Connector einen Fehler erkennt, der wiederholt werden kann (z. B. Verbindungsfehler), versucht er die Veröffentlichung im nächsten Batch erneut.

## Beispiel für die Verwendung
<a name="splunk-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](#splunk-connector-req) für den Konnektor erfüllen.

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](#splunk-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. <a name="connectors-setup-secret-resource"></a>Fügen Sie die erforderliche geheime Ressource hinzu und gewähren Sie der Lambda-Funktion Lesezugriff.

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

   1. Fügen Sie Abonnements hinzu, die es dem Konnektor ermöglichen, [Eingabedaten](#splunk-connector-data-input) zu empfangen und [Ausgabedaten](#splunk-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="splunk-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 = 'splunk/logs/put'

def create_request_with_all_fields():
    return {
        "request": {
            "event": "Access log test message."
        },
        "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="splunk-connector-license"></a>

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="splunk-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="splunk-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)

# Konnektor für Twilio-Benachrichtigungen
<a name="twilio-notifications-connector"></a>

**Warnung**  <a name="connectors-extended-life-phase-warning"></a>
Dieser Connector befindet sich in der *Phase mit verlängerter Lebensdauer* und veröffentlicht AWS IoT Greengrass keine Updates, die Funktionen, Verbesserungen vorhandener Funktionen, Sicherheitspatches oder Bugfixes bieten. Weitere Informationen finden Sie unter [AWS IoT Greengrass Version 1 Wartungspolitik](maintenance-policy.md).

Der Twilio Notifications [Connector](connectors.md) tätigt automatisierte Telefonanrufe oder sendet Textnachrichten über Twilio. Mit diesem Konnektor können Sie Benachrichtigungen als Reaktion auf Ereignisse in der Greengrass-Gruppe senden. Bei Telefonaten kann der Konnektor eine Sprachnachricht an den Empfänger weiterleiten.

Dieser Konnektor empfängt Twilio-Nachrichteninformationen zu einem MQTT-Thema und löst dann eine Twilio-Benachrichtigung aus.

**Anmerkung**  
Eine Anleitung zur Verwendung des Twilio Notifications Connectors finden Sie unter oder. [Erste Schritte mit Greengrass-Konnektoren (Konsole)](connectors-console.md) [Erste Schritte mit Greengrass-Konnektoren (CLI)](connectors-cli.md)

Dieser Connector hat die folgenden Versionen.


| Version | ARN | 
| --- | --- | 
| 5 | `arn:aws:greengrass:region::/connectors/TwilioNotifications/versions/5` | 
| 4 | `arn:aws:greengrass:region::/connectors/TwilioNotifications/versions/4` | 
| 3 | `arn:aws:greengrass:region::/connectors/TwilioNotifications/versions/3` | 
| 2 | `arn:aws:greengrass:region::/connectors/TwilioNotifications/versions/2` | 
| 1 | `arn:aws:greengrass:region::/connectors/TwilioNotifications/versions/1` | 

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

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

Dieser Konnektor hat die folgenden Anforderungen:

------
#### [ Version 4 - 5 ]
+ <a name="conn-req-ggc-v1.9.3-secrets"></a>AWS IoT Greengrass Kernsoftware v1.9.3 oder höher. AWS IoT Greengrass muss so konfiguriert sein, dass es lokale Geheimnisse unterstützt, wie in [Secrets Requirements](secrets.md#secrets-reqs) beschrieben.
**Anmerkung**  
Diese Anforderung beinhaltet die Gewährung des Zugriffs auf Ihre Secrets Manager Manager-Geheimnisse. Wenn Sie die standardmäßige Greengrass-Servicerolle verwenden, ist Greengrass berechtigt, die Werte von Geheimnissen abzurufen, deren Namen mit *greengrass* - beginnen.
+ <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.
+ Eine Twilio-Konto-SID, ein Authent-Token und eine Twilio-aktivierte Telefonnummer. Nachdem Sie ein Twilio-Projekt erstellt haben, stehen diese Werte im Projekt-Dashboard zur Verfügung.
**Anmerkung**  
Sie können ein Twilio-Testkonto verwenden. Wenn Sie ein Testkonto verwenden, müssen Sie einer Liste verifizierter Telefonnummern hinzufügen, die keine Twilio-Empfänger sind. Weitere Informationen finden Sie unter [So arbeiten Sie mit Ihrem kostenlosen Twilio-Testkonto.](https://www.twilio.com/docs/usage/tutorials/how-to-use-your-free-trial-account)
+ <a name="conn-twilio-req-secret"></a>Ein geheimer Texttyp AWS Secrets Manager , in dem das Twilio-Authentifizierungstoken gespeichert wird. Weitere Informationen finden Sie im *AWS Secrets Manager Benutzerhandbuch* unter [Erstellen eines grundlegenden Geheimnisses](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_create-basic-secret.html).
**Anmerkung**  
Um das Geheimnis in der Secrets Manager-Konsole zu erstellen, geben Sie Ihr Token auf der Registerkarte **Klartext** ein. Verwenden Sie keine Anführungszeichen oder andere Formatierungen. Geben Sie in der API das Token als Wert für die `SecretString` Eigenschaft an.
+ Eine geheime Ressource in der Greengrass-Gruppe, die auf das Secrets Manager Manager-Geheimnis verweist. Weitere Informationen finden Sie unter [Setzen Sie Geheimnisse bis ins AWS IoT Greengrass Mark ein](secrets.md).

------
#### [ Versions 1 - 3 ]
+ <a name="conn-req-ggc-v1.7.0-secrets"></a>AWS IoT Greengrass Kernsoftware v1.7 oder höher. AWS IoT Greengrass muss so konfiguriert sein, dass es lokale Geheimnisse unterstützt, wie in [Secrets Requirements](secrets.md#secrets-reqs) beschrieben.
**Anmerkung**  
Diese Anforderung beinhaltet die Gewährung des Zugriffs auf Ihre Secrets Manager Manager-Geheimnisse. Wenn Sie die standardmäßige Greengrass-Servicerolle verwenden, ist Greengrass berechtigt, die Werte von Geheimnissen abzurufen, deren Namen mit *greengrass* - beginnen.
+ [Python-Version](https://www.python.org/) 2.7 wurde auf dem Core-Gerät installiert und zur Umgebungsvariablen PATH hinzugefügt.
+ Eine Twilio-Konto-SID, ein Authent-Token und eine Twilio-aktivierte Telefonnummer. Nachdem Sie ein Twilio-Projekt erstellt haben, stehen diese Werte im Projekt-Dashboard zur Verfügung.
**Anmerkung**  
Sie können ein Twilio-Testkonto verwenden. Wenn Sie ein Testkonto verwenden, müssen Sie einer Liste verifizierter Telefonnummern hinzufügen, die keine Twilio-Empfänger sind. Weitere Informationen finden Sie unter [So arbeiten Sie mit Ihrem kostenlosen Twilio-Testkonto.](https://www.twilio.com/docs/usage/tutorials/how-to-use-your-free-trial-account)
+ <a name="conn-twilio-req-secret"></a>Ein geheimer Texttyp AWS Secrets Manager , in dem das Twilio-Authentifizierungstoken gespeichert wird. Weitere Informationen finden Sie im *AWS Secrets Manager Benutzerhandbuch* unter [Erstellen eines grundlegenden Geheimnisses](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_create-basic-secret.html).
**Anmerkung**  
Um das Geheimnis in der Secrets Manager-Konsole zu erstellen, geben Sie Ihr Token auf der Registerkarte **Klartext** ein. Verwenden Sie keine Anführungszeichen oder andere Formatierungen. Geben Sie in der API das Token als Wert für die `SecretString` Eigenschaft an.
+ Eine geheime Ressource in der Greengrass-Gruppe, die auf das Secrets Manager Manager-Geheimnis verweist. Weitere Informationen finden Sie unter [Setzen Sie Geheimnisse bis ins AWS IoT Greengrass Mark ein](secrets.md).

------

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

Dieser Konnektor stellt die folgenden Parameter bereit.

------
#### [ Version 5 ]

`TWILIO_ACCOUNT_SID`  <a name="twilio-TWILIO_ACCOUNT_SID"></a>
Die SID des Twilio-Kontos, mit der die Twilio-API aufgerufen wird.  
Anzeigename in der AWS IoT Konsole: **Twilio-Konto-SID**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `.+`

`TwilioAuthTokenSecretArn`  <a name="twilio-TwilioAuthTokenSecretArn"></a>
Der ARN des Secrets Manager, in dem das Twilio-Authentifizierungstoken gespeichert ist.  
Dies wird verwendet, um auf den Wert des lokalen Secrets auf dem Core zuzugreifen.
Anzeigename in der AWS IoT Konsole: **ARN des geheimen Twilio-Authentifizierungstokens**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `arn:aws:secretsmanager:[a-z0-9\-]+:[0-9]{12}:secret:([a-zA-Z0-9\\]+/)*[a-zA-Z0-9/_+=,.@\-]+-[a-zA-Z0-9]+`

`TwilioAuthTokenSecretArn-ResourceId`  <a name="twilio-TwilioAuthTokenSecretArn-ResourceId"></a>
Die ID der geheimen Ressource in der Greengrass-Gruppe, die auf das Secret für das Twilio-Authent-Token verweist.  
Anzeigename in der AWS IoT Konsole: **Twilio-Authentifizierungstoken-Ressource**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `.+`

`DefaultFromPhoneNumber`  <a name="twilio-DefaultFromPhoneNumber"></a>
Die standardmäßige Twilio-aktivierte Telefonnummer, die Twilio zum Senden von Nachrichten verwendet. Twilio verwendet diese Nummer, um die Textnachricht oder den Anruf zu initiieren.  
+ Wenn Sie keine Standard-Rufnummer konfigurieren, müssen Sie eine Rufnummer in der Eigenschaft `from_number` im Textkörper der Eingabemeldung angeben.
+ Wenn Sie eine Standard-Rufnummer konfigurieren, können Sie die Standardeinstellung optional überschreiben, indem Sie die Eigenschaft `from_number` im Textkörper der Eingabemeldung angeben.
Anzeigename in der AWS IoT Konsole: **Standardeinstellung aus der Telefonnummer**  
Erforderlich: `false`  
Typ: `string`  
Gültiges Muster: `^$|\+[0-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$`

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

`TWILIO_ACCOUNT_SID`  <a name="twilio-TWILIO_ACCOUNT_SID"></a>
Die SID des Twilio-Kontos, mit der die Twilio-API aufgerufen wird.  
Anzeigename in der AWS IoT Konsole: **Twilio-Konto-SID**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `.+`

`TwilioAuthTokenSecretArn`  <a name="twilio-TwilioAuthTokenSecretArn"></a>
Der ARN des Secrets Manager, in dem das Twilio-Authentifizierungstoken gespeichert ist.  
Dies wird verwendet, um auf den Wert des lokalen Secrets auf dem Core zuzugreifen.
Anzeigename in der AWS IoT Konsole: **ARN des geheimen Twilio-Authentifizierungstokens**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `arn:aws:secretsmanager:[a-z0-9\-]+:[0-9]{12}:secret:([a-zA-Z0-9\\]+/)*[a-zA-Z0-9/_+=,.@\-]+-[a-zA-Z0-9]+`

`TwilioAuthTokenSecretArn-ResourceId`  <a name="twilio-TwilioAuthTokenSecretArn-ResourceId"></a>
Die ID der geheimen Ressource in der Greengrass-Gruppe, die auf das Secret für das Twilio-Authent-Token verweist.  
Anzeigename in der AWS IoT Konsole: **Twilio-Authentifizierungstoken-Ressource**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `.+`

`DefaultFromPhoneNumber`  <a name="twilio-DefaultFromPhoneNumber"></a>
Die standardmäßige Twilio-aktivierte Telefonnummer, die Twilio zum Senden von Nachrichten verwendet. Twilio verwendet diese Nummer, um die Textnachricht oder den Anruf zu initiieren.  
+ Wenn Sie keine Standard-Rufnummer konfigurieren, müssen Sie eine Rufnummer in der Eigenschaft `from_number` im Textkörper der Eingabemeldung angeben.
+ Wenn Sie eine Standard-Rufnummer konfigurieren, können Sie die Standardeinstellung optional überschreiben, indem Sie die Eigenschaft `from_number` im Textkörper der Eingabemeldung angeben.
Anzeigename in der AWS IoT Konsole: **Standardeinstellung aus der Telefonnummer**  
Erforderlich: `false`  
Typ: `string`  
Gültiges Muster: `^$|\+[0-9]+`

------

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

Der folgende CLI-Beispielbefehl erstellt eine `ConnectorDefinition` mit einer ersten Version, die den Twilio Notifications Connector enthält.

```
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{
    "Connectors": [
        {
            "Id": "MyTwilioNotificationsConnector",
            "ConnectorArn": "arn:aws:greengrass:region::/connectors/TwilioNotifications/versions/5",
            "Parameters": {
                "TWILIO_ACCOUNT_SID": "abcd12345xyz",
                "TwilioAuthTokenSecretArn": "arn:aws:secretsmanager:region:account-id:secret:greengrass-secret-hash",
                "TwilioAuthTokenSecretArn-ResourceId": "MyTwilioSecret",
                "DefaultFromPhoneNumber": "+19999999999",
                "IsolationMode" : "GreengrassContainer"
            }
        }
    ]
}'
```

Tutorials, die zeigen, wie der Twilio Notifications Connector zu einer Gruppe hinzugefügt wird, finden Sie unter [Erste Schritte mit Greengrass-Konnektoren (CLI)](connectors-cli.md) und. [Erste Schritte mit Greengrass-Konnektoren (Konsole)](connectors-console.md)

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

Dieser Connector akzeptiert Twilio-Nachrichteninformationen zu zwei MQTT-Themen. Eingabenachrichten müssen im JSON-Format vorliegen.
+ Textnachrichteninformationen zum Thema `twilio/txt`.
+ Telefonnachrichteninformationen zum Thema `twilio/call`.

**Anmerkung**  
Die Nutzlast der Eingabemeldung kann eine Textnachricht (`message`) oder eine Sprachnachricht (`voice_message_location`) beinhalten, aber nicht beide.

**Themenfilter: `twilio/txt`**    
**Nachrichten-Eigenschaften**    
`request`  
Informationen über die Twilio-Benachrichtigung.  
Erforderlich: `true`  
Typ: `object` der die folgenden Eigenschaften beinhaltet:    
`recipient`  
Der Nachrichtenempfänger. Nur ein Empfänger wird unterstützt.  
Erforderlich: `true`  
Typ: `object` der die folgenden Eigenschaften beinhaltet:    
`name`  
Der Name des Empfängers.  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `.*`  
`phone_number`  
Die Telefonnummer des Empfängers.  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `\+[1-9]+`  
`message`  
Der Textinhalt der Textnachricht. Zu diesem Thema werden nur Textnachrichten unterstützt. Für Sprachnachrichten verwenden Sie `twilio/call`.  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `.+`  
`from_number`  
Die Telefonnummer des Absenders. Twilio verwendet diese Telefonnummer, um die Nachricht zu senden. Diese Eigenschaft ist erforderlich, wenn der Parameter `DefaultFromPhoneNumber` nicht konfiguriert ist. Wenn `DefaultFromPhoneNumber` konfiguriert ist, können Sie diese Eigenschaft verwenden, um den Standard zu überschreiben.  
Erforderlich: `false`  
Typ: `string`  
Gültiges Muster: `\+[1-9]+`  
`retries`  
Die Anzahl der Wiederholungen Der Standardwert ist 0.  
Erforderlich: `false`  
Typ: `integer`  
`id`  
Eine willkürliche ID für die Anforderung. Diese Eigenschaft wird verwendet, um eine Eingangsanforderung einer Ausgabeantwort zuzuordnen.   
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `.+`  
**Beispieleingabe**  

```
{
    "request": {
        "recipient": {
            "name": "Darla",
            "phone_number": "+12345000000",
            "message": "Hello from the edge"
        },
        "from_number": "+19999999999",
        "retries": 3
    },
    "id": "request123"
}
```

**Themenfilter: `twilio/call`**    
**Nachrichten-Eigenschaften**    
`request`  
Informationen über die Twilio-Benachrichtigung.  
Erforderlich: `true`  
Typ: `object` der die folgenden Eigenschaften beinhaltet:    
`recipient`  
Der Nachrichtenempfänger. Nur ein Empfänger wird unterstützt.  
Erforderlich: `true`  
Typ: `object` der die folgenden Eigenschaften beinhaltet:    
`name`  
Der Name des Empfängers.  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `.+`  
`phone_number`  
Die Telefonnummer des Empfängers.  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `\+[1-9]+`  
`voice_message_location`  
Die URL des Audioinhalts für die Sprachnachricht. Diese muss im TwiML-Format vorliegen. Zu diesem Thema werden nur Sprachnachrichten unterstützt. Für Textnachrichten verwenden Sie `twilio/txt`.  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `.+`  
`from_number`  
Die Telefonnummer des Absenders. Twilio verwendet diese Telefonnummer, um die Nachricht zu senden. Diese Eigenschaft ist erforderlich, wenn der Parameter `DefaultFromPhoneNumber` nicht konfiguriert ist. Wenn `DefaultFromPhoneNumber` konfiguriert ist, können Sie diese Eigenschaft verwenden, um den Standard zu überschreiben.  
Erforderlich: `false`  
Typ: `string`  
Gültiges Muster: `\+[1-9]+`  
`retries`  
Die Anzahl der Wiederholungen Der Standardwert ist 0.  
Erforderlich: `false`  
Typ: `integer`  
`id`  
Eine willkürliche ID für die Anforderung. Diese Eigenschaft wird verwendet, um eine Eingangsanforderung einer Ausgabeantwort zuzuordnen.   
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `.+`  
**Beispieleingabe**  

```
{
    "request": {
        "recipient": {
            "name": "Darla",
            "phone_number": "+12345000000",
            "voice_message_location": "https://some-public-TwiML"
        },
        "from_number": "+19999999999",
        "retries": 3
    },
    "id": "request123"
}
```

## Ausgabedaten
<a name="twilio-notifications-connector-data-output"></a>

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

<a name="topic-filter"></a>**Themenfilter im Abonnement**  
`twilio/message/status`

**Beispielausgabe: Erfolg**  

```
{
    "response": {
        "status": "success",
        "payload": {
            "from_number": "+19999999999",
            "messages": {
                "message_status": "queued",
                "to_number": "+12345000000",
                "name": "Darla"
            }
        }
    },
    "id": "request123"
}
```

**Beispielausgabe: Fehler**  

```
{
    "response": {
        "status": "fail",
        "error_message": "Recipient name cannot be None",
        "error": "InvalidParameter",
        "payload": None
        }
    },
    "id": "request123"
}
```
Die Eigenschaft `payload` in der Ausgabe ist die Antwort der Twilio-API beim Senden der Nachricht. Wenn der Konnektor erkennt, dass die Eingabedaten ungültig sind (z. B. kein erforderliches Eingabefeld angegeben ist), gibt der Konnektor einen Fehler zurück und setzt den Wert auf `None`. Im Folgenden finden Sie Beispiele für Nutzlasten:  

```
{
    'from_number':'+19999999999',
    'messages': {
        'name':'Darla',
        'to_number':'+12345000000',
        'message_status':'undelivered'
    }
}
```

```
{
    'from_number':'+19999999999',
    'messages': {
        'name':'Darla',
        'to_number':'+12345000000',
        'message_status':'queued'
    }
}
```

## Beispiel für die Verwendung
<a name="twilio-notifications-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>
Die [Erste Schritte mit Greengrass-Konnektoren (CLI)](connectors-cli.md) Themen [Erste Schritte mit Greengrass-Konnektoren (Konsole)](connectors-console.md) und enthalten end-to-end Schritte, die zeigen, wie Sie den Twilio Notifications Connector einrichten, bereitstellen und testen.

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

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](#twilio-notifications-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. <a name="connectors-setup-secret-resource"></a>Fügen Sie die erforderliche geheime Ressource hinzu und gewähren Sie der Lambda-Funktion Lesezugriff.

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

   1. Fügen Sie Abonnements hinzu, die es dem Konnektor ermöglichen, [Eingabedaten](#twilio-notifications-connector-data-input) zu empfangen und [Ausgabedaten](#twilio-notifications-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="twilio-notifications-connector-usage-example"></a>

Die folgende Lambda-Beispielfunktion sendet eine Eingabenachricht an den Konnektor. Dieses Beispiel löst eine Textnachricht aus.

```
import greengrasssdk
import json

iot_client = greengrasssdk.client('iot-data')
TXT_INPUT_TOPIC = 'twilio/txt'
CALL_INPUT_TOPIC = 'twilio/call'

def publish_basic_message():

    txt = {
        "request": {
            "recipient" : {
                "name": "Darla",
                "phone_number": "+12345000000",
                "message": 'Hello from the edge'
            },
            "from_number" : "+19999999999"
        },
        "id" : "request123"
    }
    
    print("Message To Publish: ", txt)

    client.publish(topic=TXT_INPUT_TOPIC,
                   payload=json.dumps(txt))

publish_basic_message()

def lambda_handler(event, context):
    return
```

## Lizenzen
<a name="twilio-notifications-connector-license"></a>

Der Twilio Notifications Connector umfasst die folgende Software/Lizenzierung von Drittanbietern:
+ [twilio-python](https://github.com/twilio/twilio-python)/MIT

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="twilio-notifications-connector-changelog"></a>

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


| Version | Änderungen | 
| --- | --- | 
| 5 | <a name="isolation-mode-changelog"></a>Der Parameter `IsolationMode` wurde hinzugefügt, um den Containerisierungsmodus für den Konnektor zu konfigurieren. | 
| 4 | <a name="upgrade-runtime-py3.7"></a>Die Lambda-Laufzeit wurde auf Python 3.7 aktualisiert, was die Laufzeitanforderungen ändert. | 
| 3 | Beheben, um übermäßige Protokollierung zu reduzieren. | 
| 2 | Kleinere Fehlerbehebungen und Verbesserungen. | 
| 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="twilio-notifications-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)
+ [Twilio-API-Referenz](https://www.twilio.com/docs/api)

# Erste Schritte mit Greengrass-Konnektoren (Konsole)
<a name="connectors-console"></a>

Diese Funktion ist für AWS IoT Greengrass Core v1.7 und höher verfügbar.

Dieses Tutorial zeigt, wie Sie den verwenden, AWS-Managementkonsole um mit Anschlüssen zu arbeiten.

Verwenden Sie Konnektoren, um Ihren Entwicklungslebenszyklus zu beschleunigen. Konnektoren sind vorgefertigte, wiederverwendbare Module, die die Interaktion mit Services, Protokollen und Ressourcen erleichtern können. Sie können Ihnen helfen, die Geschäftslogik schneller auf Greengrass-Geräten zu implementieren. Weitere Informationen finden Sie unter [Integrieren von Services und Protokollen mit Greengrass-Konnektoren](connectors.md).

In diesem Tutorial konfigurieren und implementieren Sie den [Twilio Notifications](twilio-notifications-connector.md) Connector. Der Konnektor empfängt Twilio-Nachrichteninformationen als Eingangsdaten und löst dann eine Twilio-SMS aus. Der Datenfluss ist in der folgenden Abbildung dargestellt.

![\[Datenfluss von der Lambda-Funktion zum Twilio Notifications Connector zu Twilio.\]](http://docs.aws.amazon.com/de_de/greengrass/v1/developerguide/images/connectors/twilio-solution.png)


Nachdem Sie den Connector konfiguriert haben, erstellen Sie eine Lambda-Funktion und ein Abonnement.
+ Die Funktion wertet simulierte Daten eines Temperatursensors aus. Es veröffentlicht bedingt die Twilio-Nachrichteninformationen zu einem MQTT-Thema. Dies ist das Thema, dass der Konnektor abonniert hat.
+ Das Abonnement ermöglicht es der Funktion, zum Thema zu veröffentlichen, und dem Konnektor, die Daten vom Thema zu empfangen.

Der Twilio Notifications Connector benötigt ein Twilio-Authentifizierungstoken, um mit der Twilio-API zu interagieren. Das Token ist ein Geheimnis vom Typ Text, das in einer Gruppenressource erstellt AWS Secrets Manager und von dort aus referenziert wird. Dadurch kann AWS IoT Greengrass eine lokale Kopie des Secrets auf dem Greengrass-Core erstellt werden, wo es verschlüsselt und dem Connector zur Verfügung gestellt wird. Weitere Informationen finden Sie unter [Setzen Sie Geheimnisse bis ins AWS IoT Greengrass Mark ein](secrets.md).

Das Tutorial enthält die folgenden allgemeinen Schritte:

1. [Erstellen Sie ein Secrets Manager Manager-Geheimnis](#connectors-console-create-secret)

1. [Hinzufügen einer geheimen Ressource zu einer Gruppe](#connectors-console-create-resource)

1. [Hinzufügen eines Konnektors zur Gruppe](#connectors-console-create-connector)

1. [Erstellen Sie ein Bereitstellungspaket für Lambda-Funktionen](#connectors-console-create-deployment-package)

1. [Erstellen einer Lambda-Funktion](#connectors-console-create-function)

1. [Hinzufügen einer Funktion zur Gruppe](#connectors-console-create-gg-function)

1. [Hinzufügen von Abonnements zur Gruppe](#connectors-console-create-subscription)

1. [Bereitstellen der Gruppe](#connectors-console-create-deployment)

1. [Testen der Lösung](#connectors-console-test-solution)

Für dieses Tutorial benötigen Sie ungefähr 20 Minuten.

## Voraussetzungen
<a name="connectors-console-prerequisites"></a>

Zum Durchführen dieses Tutorials benötigen Sie Folgendes:
+ Eine Greengrass-Gruppe und ein Greengrass-Core (v1.9.3 oder höher). Weitere Informationen zum Erstellen einer Greengrass-Gruppe und Greengrass Core finden Sie unter [Erste Schritte mit AWS IoT Greengrass](gg-gs.md). Das Tutorial „Erste Schritte“ enthält auch die Schritte zur Installation der AWS IoT Greengrass -Core Software.
+ Python 3.7 ist auf dem AWS IoT Greengrass Core-Gerät installiert.
+  AWS IoT Greengrass muss so konfiguriert sein, dass es lokale Geheimnisse unterstützt, wie in [Secrets Requirements](secrets.md#secrets-reqs) beschrieben.
**Anmerkung**  
Diese Anforderung beinhaltet die Gewährung des Zugriffs auf Ihre Secrets Manager Manager-Geheimnisse. Wenn Sie die standardmäßige Greengrass-Servicerolle verwenden, ist Greengrass berechtigt, die Werte von Geheimnissen abzurufen, deren Namen mit *greengrass* - beginnen.
+ Eine Twilio-Konto-SID, ein Authent-Token und eine Twilio-aktivierte Telefonnummer. Nachdem Sie ein Twilio-Projekt erstellt haben, stehen diese Werte im Projekt-Dashboard zur Verfügung.
**Anmerkung**  
Sie können ein Twilio-Testkonto verwenden. Wenn Sie ein Testkonto verwenden, müssen Sie Telefonnummern von Empfängern, die keine Twilio-Empfänger sind, zu einer Liste verifizierter Telefonnummern hinzufügen. Weitere Informationen finden Sie unter [So arbeiten Sie mit Ihrem kostenlosen Twilio-Testkonto.](https://www.twilio.com/docs/usage/tutorials/how-to-use-your-free-trial-account)

## Schritt 1: Erstellen Sie ein Secrets Manager Manager-Geheimnis
<a name="connectors-console-create-secret"></a>

In diesem Schritt verwenden Sie die AWS Secrets Manager Konsole, um ein Textgeheimnis für Ihr Twilio-Authentifizierungstoken zu erstellen.

1. <a name="create-secret-step-signin"></a>Melden Sie sich bei der [AWS Secrets Manager -Konsole](https://console.aws.amazon.com/secretsmanager/) an.
**Anmerkung**  
Weitere Informationen zu diesem Vorgang finden Sie unter [Schritt 1: Ihr Geheimnis erstellen und speichern AWS Secrets Manager im AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/tutorials_basic.html) *Benutzerhandbuch*.

1. <a name="create-secret-step-create"></a>Wählen Sie **Store a new secret** (Ein neues Secret speichern).

1. <a name="create-secret-step-othertype"></a>**Wählen Sie unter Geheimtyp** auswählen die Option **Anderer Geheimtyp aus**.

1. **Geben Sie unter Geben Sie die key/value Paare an, die für dieses Geheimnis gespeichert werden sollen**, auf der Registerkarte **Klartext** Ihr Twilio-Authentifizierungstoken ein. Entfernen Sie alle JSON-Formatierungen und geben Sie nur den Token-Wert ein.

1. <a name="create-secret-step-encryption"></a>**Lassen Sie **aws/secretsmanager für den Verschlüsselungsschlüssel** ausgewählt und wählen Sie dann Weiter.**
**Anmerkung**  
Es fallen keine Gebühren an, AWS KMS wenn Sie den AWS verwalteten Standardschlüssel verwenden, den Secrets Manager in Ihrem Konto erstellt.

1. Geben Sie für **Secret name (Secret-Name)** **greengrass-TwilioAuthToken** ein und klicken Sie auf **Next (Weiter)**.
**Anmerkung**  
Standardmäßig ermöglicht AWS IoT Greengrass die Greengrass-Dienstrolle das Abrufen des Werts von Geheimnissen mit Namen, die mit *greengrass* - beginnen. Weitere Informationen finden Sie unter [Anforderungen für Secrets](secrets.md#secrets-reqs).

1. <a name="create-secret-step-rotation"></a>**Für dieses Tutorial ist keine Rotation erforderlich. Wählen Sie „Automatische Rotation deaktivieren“ und anschließend „Weiter“.**

1. <a name="create-secret-step-review"></a>Prüfen Sie auf der Seite **Review (Prüfen)** Ihre Einstellungen und wählen Sie **Store (Speichern)**.

   Als nächstes erstellen Sie in Ihrer Greengrass-Gruppe eine geheime Ressource, die auf das Secret verweist.

## Schritt 2: Hinzufügen einer geheimen Ressource zu einer Greengrass-Gruppe
<a name="connectors-console-create-resource"></a>

In diesem Schritt fügen Sie eine *geheime Ressource* zur Greengrass-Gruppe hinzu. Diese Ressource ist eine Referenz auf das Secret, das Sie im vorherigen Schritt angelegt haben.

1. <a name="console-gg-groups"></a>Erweitern Sie im Navigationsbereich der AWS IoT Konsole unter **Verwalten** die Option **Greengrass-Geräte** und wählen Sie dann **Gruppen (V1)** aus.

1. <a name="create-secret-resource-step-choosegroup"></a>Wählen Sie die Gruppe, zu der Sie die geheime Ressource hinzufügen möchten.

1. <a name="create-secret-resource-step-secretstab"></a>Wählen Sie auf der Gruppenkonfigurationsseite die Registerkarte **Ressourcen** und scrollen Sie dann nach unten zum Abschnitt **Secrets**. Im Bereich **Secrets** werden die geheimen Ressourcen angezeigt, die zu der Gruppe gehören. In diesem Bereich können Sie geheime Ressourcen hinzufügen, bearbeiten und entfernen.
**Anmerkung**  
Alternativ können Sie mit der Konsole eine geheime und geheime Ressource erstellen, wenn Sie einen Connector oder eine Lambda-Funktion konfigurieren. Sie können dies auf der Seite „**Parameter konfigurieren**“ des Connectors oder auf der Seite „**Ressourcen**“ der Lambda-Funktion tun.

1. <a name="create-secret-resource-step-addsecretresource"></a>Wählen Sie im Bereich **Secrets** die Option **Hinzufügen** aus.

1. Geben Sie auf der Seite **Geheime Ressource hinzufügen** **MyTwilioAuthToken** den **Namen der Ressource** ein.

1. Wählen Sie für das **Secret** **greengrass- TwilioAuthToken**.

1. <a name="create-secret-resource-step-selectlabels"></a>Im Abschnitt **Select labels (optional)** steht das AWSCURRENT Staging-Label für die neueste Version des Secrets. Dieses Label ist immer in einer geheimen Ressource enthalten.
**Anmerkung**  
Für dieses Tutorial ist nur das AWSCURRENT Label erforderlich. Sie können optional Beschriftungen hinzufügen, die für Ihre Lambda-Funktion oder Ihren Lambda-Konnektor erforderlich sind.

1. Wählen Sie **Add resource (Ressource hinzufügen)** aus.

## Schritt 3: Hinzufügen eines Konnektors zur Greengrass-Gruppe
<a name="connectors-console-create-connector"></a>

In diesem Schritt konfigurieren Sie Parameter für den [Twilio Notifications Connector](twilio-notifications-connector.md) und fügen ihn der Gruppe hinzu.

1. Wählen Sie auf der Gruppenkonfigurationsseite die Option **Connectors (Konnektoren)**, und wählen Sie dann **Add a connector (Konnektor hinzufügen)**.

1. Wählen Sie auf der Seite „**Connector hinzufügen**“ die Option **Twilio Notifications** aus.

1. Wählen Sie die -Version aus.

1. Gehen Sie im Abschnitt **Konfiguration** wie folgt vor:
   + Geben Sie für die **Twilio-Authentifizierungstoken-Ressource** die Ressource ein, die Sie im vorherigen Schritt erstellt haben.
**Anmerkung**  
Wenn Sie die Ressource eingeben, wird der **ARN der geheimen Eigenschaft des Twilio-Authentifizierungstokens** für Sie aufgefüllt.
   + Geben Sie unter **Default from phone number (Standard Telefonnummer)** Ihre Twilio-aktivierte Telefonnummer ein.
   + Geben Sie für **Twilio account SID (Twilio-Konto-SID)** Ihre Twilio-Konto-SID ein.

1. Wählen Sie **Add resource (Ressource hinzufügen)** aus.

## Schritt 4: Erstellen Sie ein Lambda-Funktionsbereitstellungspaket
<a name="connectors-console-create-deployment-package"></a>

Um eine Lambda-Funktion zu erstellen, müssen Sie zunächst ein *Lambda-Funktionsbereitstellungspaket* erstellen, das den Funktionscode und die Abhängigkeiten enthält. Greengrass Lambda-Funktionen benötigen das [AWS IoT Greengrass Core SDK](lambda-functions.md#lambda-sdks-core) für Aufgaben wie die Kommunikation mit MQTT-Nachrichten in der Kernumgebung und den Zugriff auf lokale Geheimnisse. In diesem Tutorial wird eine Python-Funktion erstellt, sodass Sie die Python-Version des SDK im Bereitstellungspaket verwenden.

1. <a name="download-ggc-sdk"></a> Laden Sie von der [AWS IoT Greengrass Core SDK-Downloadseite](what-is-gg.md#gg-core-sdk-download) das AWS IoT Greengrass Core SDK für Python auf Ihren Computer herunter.

1. <a name="unzip-ggc-sdk"></a>Entpacken Sie das heruntergeladene Paket, um das SDK zu erhalten. Das SDK ist der `greengrasssdk`-Ordner.

1. Speichern Sie die folgende Pythoncode-Funktion in einer lokalen Datei namens `temp_monitor.py`.

   ```
   import greengrasssdk
   import json
   import random
   
   client = greengrasssdk.client('iot-data')
   
   # publish to the Twilio Notifications connector through the twilio/txt topic
   def function_handler(event, context):
       temp = event['temperature']
       
       # check the temperature
       # if greater than 30C, send a notification
       if temp > 30:
           data = build_request(event)
           client.publish(topic='twilio/txt', payload=json.dumps(data))
           print('published:' + str(data))
           
       print('temperature:' + str(temp))
       return
   
   # build the Twilio request from the input data
   def build_request(event):
       to_name = event['to_name']
       to_number = event['to_number']
       temp_report = 'temperature:' + str(event['temperature'])
   
       return {
           "request": {
               "recipient": {
                   "name": to_name,
                   "phone_number": to_number,
                   "message": temp_report
               }
           },
           "id": "request_" + str(random.randint(1,101))
       }
   ```

1. Packen Sie die folgenden Elemente in einer ZIP-Datei mit dem Namen `temp_monitor_python.zip`. Verwenden Sie zum Erstellen der ZIP-Datei nur den Code und die entsprechenden Abhängigkeiten und nicht den dazugehörigen Ordner.
   + **temp\$1monitor.py**. App-Logik.
   + **greengrasssdk**. Erforderliche Bibliothek für Python Greengrass Lambda-Funktionen, die MQTT-Nachrichten veröffentlichen.

   Dies ist Ihr Lambda-Funktionsbereitstellungspaket.

Erstellen Sie nun eine Lambda-Funktion, die das Bereitstellungspaket verwendet.

## Schritt 5: Erstellen Sie eine Lambda-Funktion in der Konsole AWS Lambda
<a name="connectors-console-create-function"></a>

In diesem Schritt verwenden Sie die AWS Lambda Konsole, um eine Lambda-Funktion zu erstellen und sie für die Verwendung Ihres Bereitstellungspakets zu konfigurieren. Anschließend veröffentlichen Sie eine Funktionsversion und erstellen einen Alias.

1. Erstellen Sie zunächst die Lambda-Funktion.

   1. <a name="lambda-console-open"></a>Wählen Sie in der AWS-Managementkonsole**Dienste** aus und öffnen Sie die AWS Lambda Konsole.

   1. <a name="lambda-console-create-function"></a>Wählen Sie „**Funktion erstellen**“ und anschließend „**Von Grund auf neu erstellen**“.

   1. Verwenden Sie im Abschnitt **Basic information (Basisinformationen)** folgende Werte:
      + Geben Sie für **Function name** (Funktionsname) **TempMonitor** ein.
      + Wählen Sie für **Runtime (Laufzeit)** die Option **Python 3.7** aus.
      + Behalten Sie für **Berechtigungen** die Standardeinstellung bei. Dadurch wird eine Ausführungsrolle erstellt, die grundlegende Lambda-Berechtigungen gewährt. Diese Rolle wird nicht verwendet von AWS IoT Greengrass.

   1. <a name="lambda-console-save-function"></a>Klicken Sie unten auf der Seite auf **Create function**.

1. Registrieren Sie als Nächstes den Handler und laden Sie Ihr Lambda-Funktionsbereitstellungspaket hoch.

   1. <a name="lambda-console-upload"></a>Wählen Sie auf der Registerkarte **Code** unter **Codequelle** die Option **Upload von aus**. Wählen Sie in der Dropdownliste die **ZIP-Datei** aus.  
![\[Das Drop-down-Menü „Von hochladen“, wobei die ZIP-Datei hervorgehoben ist.\]](http://docs.aws.amazon.com/de_de/greengrass/v1/developerguide/images/lra-console/upload-deployment-package.png)

   1. Wählen Sie **Hochladen** und dann Ihr `temp_monitor_python.zip` Bereitstellungspaket aus. Wählen Sie dann **Save (Speichern)** aus.

   1. <a name="lambda-console-runtime-settings-para"></a>Wählen Sie auf der Registerkarte **Code** für die Funktion unter **Laufzeiteinstellungen** die Option **Bearbeiten** aus, und geben Sie dann die folgenden Werte ein.
      + Wählen Sie für **Runtime (Laufzeit)** die Option **Python 3.7** aus.
      + Geben Sie unter **Handler** **temp\$1monitor.function\$1handler** ein.

   1. <a name="lambda-console-save-config"></a>Wählen Sie **Speichern**.
**Anmerkung**  
Die **Testtaste** auf der AWS Lambda Konsole funktioniert mit dieser Funktion nicht. Das AWS IoT Greengrass Core SDK enthält keine Module, die erforderlich sind, um Ihre Greengrass Lambda-Funktionen unabhängig in der AWS Lambda Konsole auszuführen. Diese Module (zum Beispiel`greengrass_common`) werden den Funktionen zur Verfügung gestellt, nachdem sie auf Ihrem Greengrass-Kern bereitgestellt wurden.

1. Veröffentlichen Sie jetzt die erste Version Ihrer Lambda-Funktion und erstellen Sie einen [Alias für die Version](https://docs.aws.amazon.com/lambda/latest/dg/versioning-aliases.html).
**Anmerkung**  
Greengrass-Gruppen können eine Lambda-Funktion nach Alias (empfohlen) oder nach Version referenzieren. Die Verwendung eines Alias erleichtert die Verwaltung von Codeaktualisierungen, da Sie Ihre Abonnementtabelle oder Gruppendefinition nicht ändern müssen, wenn der Funktionscode aktualisiert wird. Stattdessen verweisen Sie einfach mit dem Alias auf die neue Funktionsversion.

   1. <a name="shared-publish-function-version"></a>Wählen Sie im Menü **Actions** die Option **Publish new version** aus.

   1. <a name="shared-publish-function-version-description"></a>Geben Sie unter **Version description (Versionsbeschreibung)** den Wert **First version** ein und wählen Sie dann **Publish (Veröffentlichen)** aus.

   1. Wählen Sie auf der Konfigurationsseite **TempMonitor: 1** im Menü **Aktionen** die Option **Alias erstellen** aus.

   1. Geben Sie auf der Seite **Create a new alias** folgende Werte an:
      + Geben Sie unter **Name** **GG\$1TempMonitor** ein.
      + Wählen Sie für **Version** die Option **1**.
**Anmerkung**  
AWS IoT Greengrass unterstützt keine Lambda-Aliase für **\$1LATEST-Versionen**.

   1. Wählen Sie **Erstellen** aus.

Jetzt sind Sie bereit, die Lambda-Funktion zu Ihrer Greengrass-Gruppe hinzuzufügen.

## Schritt 6: Fügen Sie der Greengrass-Gruppe eine Lambda-Funktion hinzu
<a name="connectors-console-create-gg-function"></a>

In diesem Schritt fügen Sie der Gruppe die Lambda-Funktion hinzu und konfigurieren dann ihre Lebenszyklus- und Umgebungsvariablen. Weitere Informationen finden Sie unter [Steuerung der Ausführung von Greengrass Lambda-Funktionen mithilfe einer gruppenspezifischen Konfiguration](lambda-group-config.md).

1. <a name="choose-add-lambda"></a>Wählen Sie auf der Gruppenkonfigurationsseite die Registerkarte **Lambda-Funktionen** aus.

1. Wählen Sie unter **Meine Lambda-Funktionen** die Option **Hinzufügen** aus.

1. Wählen **TempMonitor**Sie auf der Seite **Lambda-Funktion hinzufügen** Ihre Lambda-Funktion aus.

1. Wählen Sie für die **Lambda-Funktionsversion** **Alias: TempMonitor GG\$1**.

1. Wählen Sie **Lambda-Funktion hinzufügen**.

## Schritt 7: Hinzufügen von Abonnements zur Greengrass-Gruppe
<a name="connectors-console-create-subscription"></a>

<a name="connectors-how-to-add-subscriptions-p1"></a>In diesem Schritt fügen Sie ein Abonnement hinzu, das es der Lambda-Funktion ermöglicht, Eingabedaten an den Connector zu senden. Der Konnektor definiert die MQTT-Themen, die er abonniert, und dieses Abonnement verwendet eines dieser Themen. Es ist das gleiche Thema, zu dem die Beispielfunktion veröffentlicht.

<a name="connectors-how-to-add-subscriptions-p2"></a>Für dieses Tutorial erstellen Sie auch Abonnements, die es der Funktion ermöglichen, simulierte Temperaturmesswerte vom Connector AWS IoT zu empfangen AWS IoT und Statusinformationen vom Connector zu empfangen.

1. <a name="shared-subscriptions-addsubscription"></a>Wählen Sie auf der Gruppenkonfigurationsseite die Registerkarte **Abonnements** und dann **Abonnement hinzufügen** aus.

1. Konfigurieren Sie auf der Seite **Abonnement erstellen** die Quelle und das Ziel wie folgt:

   1. Wählen Sie als **Quelltyp** die Option **Lambda-Funktion** und wählen Sie **TempMonitor**dann.

   1. Wählen Sie als **Zieltyp** die Option **Connector** und dann **Twilio** Notifications aus.

1. Wählen **twilio/txt** Sie für den **Themenfilter**.

1. Wählen Sie **Create subscription** (Abonnement erstellen) aus.

1. Wiederholen Sie die Schritte 1 bis 4, um ein Abonnement AWS IoT zu erstellen, mit dem Sie Nachrichten für die Funktion veröffentlichen können.

   1. Wählen Sie als **Quelltyp** **Service** und dann **IoT Cloud** aus.

   1. **Wählen Sie für Select a target** die Option **Lambda-Funktion** aus, und wählen Sie **TempMonitor**dann.

   1. Geben Sie für **Topic filter (Themenfilter)** die Zeichenfolge **temperature/input** ein.

1. Wiederholen Sie die Schritte 1 - 4, um ein Abonnement zu erstellen, das es dem Konnektor ermöglicht, Nachrichten an AWS IoT zu veröffentlichen.

   1. Wählen Sie als **Quelltyp** die Option **Connector** und dann **Twilio** Notifications aus.

   1. Wählen Sie als **Zieltyp** **Service** und dann **IoT Cloud** aus.

   1. Für **Themenfilter** wird automatisch **twilio/message/status** eingegeben. Dies ist das vordefinierte Thema, in das der Konnektor veröffentlicht.

## Schritt 8: Bereitstellen der Greengrass-Gruppe
<a name="connectors-console-create-deployment"></a>

Stellen Sie die Gruppe auf dem Core-Gerät bereit.

1. <a name="shared-deploy-group-checkggc"></a>Stellen Sie sicher, dass der AWS IoT Greengrass Core läuft. Führen Sie im Raspberry Pi-Terminal die folgenden Befehle aus, falls nötig.

   1. So prüfen Sie, ob der Daemon ausgeführt wird:

      ```
      ps aux | grep -E 'greengrass.*daemon'
      ```

      Wenn die Ausgabe einen `root`-Eintrag für `/greengrass/ggc/packages/ggc-version/bin/daemon` enthält, dann wird der Daemon ausgeführt.
**Anmerkung**  
Die Version im Pfad hängt von der AWS IoT Greengrass Core-Softwareversion ab, die auf Ihrem Core-Gerät installiert ist.

   1. Um den Daemon zu starten:

      ```
      cd /greengrass/ggc/core/
      sudo ./greengrassd start
      ```

1. <a name="shared-deploy-group-deploy"></a>Wählen Sie auf der Seite mit der Gruppenkonfiguration die Option **Deploy** aus.

1. <a name="shared-deploy-group-ipconfig"></a>

   1. **Wählen Sie auf der Registerkarte **Lambda-Funktionen** im Abschnitt **System-Lambda-Funktionen** die Option **IP-Detektor** und dann Bearbeiten aus.**

   1. Wählen **Sie im Dialogfeld IP-Detektoreinstellungen bearbeiten** die Option **MQTT-Broker-Endpunkte automatisch erkennen und überschreiben** aus.

   1. Wählen Sie **Speichern**.

      Damit können Geräte automatisch Core-Verbindungsinformationen abrufen, z. B. die IP-Adresse, DNS und die Portnummer. Eine automatische Erkennung wird empfohlen, unterstützt aber AWS IoT Greengrass auch manuell angegebene Endpunkte. Sie werden nur bei der ersten Bereitstellung der Gruppe zur Angabe der Ermittlungsmethode aufgefordert.
**Anmerkung**  
Wenn Sie dazu aufgefordert werden, erteilen Sie die Erlaubnis, die [Greengrass-Servicerolle zu erstellen und sie Ihrer AWS-Konto aktuellen AWS-Region Rolle](service-role.md) zuzuordnen. Diese Rolle ermöglicht AWS IoT Greengrass den Zugriff auf Ihre Ressourcen in AWS Diensten.

      Auf der Seite **Deployments** werden der Zeitstempel, die Versions-ID und der Status der Bereitstellung angegeben. Nach Abschluss sollte der für die Bereitstellung angezeigte Status **Abgeschlossen** lauten.

      Hilfe zur Problembehebung finden Sie unter [Problembehebung AWS IoT Greengrass](gg-troubleshooting.md).

**Anmerkung**  
<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).

## Testen der Lösung
<a name="connectors-console-test-solution"></a>

1. <a name="choose-test-page"></a>Wählen Sie auf der Startseite der AWS IoT Konsole die Option **Test** aus.

1. Verwenden **Sie für Thema abonnieren** die folgenden Werte und wählen Sie dann **Abonnieren** aus. Der Twilio Notifications Connector veröffentlicht Statusinformationen zu diesem Thema.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/greengrass/v1/developerguide/connectors-console.html)

1. Verwenden **Sie für In Thema veröffentlichen** die folgenden Werte und wählen Sie dann **Veröffentlichen**, um die Funktion aufzurufen.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/greengrass/v1/developerguide/connectors-console.html)

   Wenn erfolgreich, erhält der Empfänger die Textnachricht und die Konsole zeigt den Status `success` für die [Ausgangsdaten](twilio-notifications-connector.md#twilio-notifications-connector-data-output).

   Ändern Sie nun den `temperature` in der Eingabemeldung auf **29** und veröffentlichen Sie. Da dieser Wert unter 30 liegt, löst die TempMonitor Funktion keine Twilio-Nachricht aus.

## Weitere Informationen finden Sie auch unter
<a name="connectors-console-see-also"></a>
+ [Integrieren von Services und Protokollen mit Greengrass-Konnektoren](connectors.md)
+  [AWS-mitgelieferte Greengrass-Anschlüsse](connectors-list.md)

# Erste Schritte mit Greengrass-Konnektoren (CLI)
<a name="connectors-cli"></a>

Diese Funktion ist für AWS IoT Greengrass Core v1.7 und höher verfügbar.

Dieses Tutorial zeigt, wie Sie mit Konnektoren arbeiten. AWS CLI 

Verwenden Sie Konnektoren, um Ihren Entwicklungslebenszyklus zu beschleunigen. Konnektoren sind vorgefertigte, wiederverwendbare Module, die die Interaktion mit Services, Protokollen und Ressourcen erleichtern können. Sie können Ihnen helfen, die Geschäftslogik schneller auf Greengrass-Geräten zu implementieren. Weitere Informationen finden Sie unter [Integrieren von Services und Protokollen mit Greengrass-Konnektoren](connectors.md).

In diesem Tutorial konfigurieren und implementieren Sie den [Twilio Notifications](twilio-notifications-connector.md) Connector. Der Konnektor empfängt Twilio-Nachrichteninformationen als Eingangsdaten und löst dann eine Twilio-SMS aus. Der Datenfluss ist in der folgenden Abbildung dargestellt.

![\[Datenfluss von der Lambda-Funktion zum Twilio Notifications Connector zu Twilio.\]](http://docs.aws.amazon.com/de_de/greengrass/v1/developerguide/images/connectors/twilio-solution.png)


Nachdem Sie den Connector konfiguriert haben, erstellen Sie eine Lambda-Funktion und ein Abonnement.
+ Die Funktion wertet simulierte Daten eines Temperatursensors aus. Es veröffentlicht bedingt die Twilio-Nachrichteninformationen zu einem MQTT-Thema. Dies ist das Thema, dass der Konnektor abonniert hat.
+ Das Abonnement ermöglicht es der Funktion, zum Thema zu veröffentlichen, und dem Konnektor, die Daten vom Thema zu empfangen.

Der Twilio Notifications Connector benötigt ein Twilio-Authentifizierungstoken, um mit der Twilio-API zu interagieren. Das Token ist ein Geheimnis vom Typ Text, das in einer Gruppenressource erstellt AWS Secrets Manager und von dort aus referenziert wird. Dadurch kann AWS IoT Greengrass eine lokale Kopie des Secrets auf dem Greengrass-Core erstellt werden, wo es verschlüsselt und dem Connector zur Verfügung gestellt wird. Weitere Informationen finden Sie unter [Setzen Sie Geheimnisse bis ins AWS IoT Greengrass Mark ein](secrets.md).

Das Tutorial enthält die folgenden allgemeinen Schritte:

1. [Ein Secrets Manager Manager-Geheimnis erstellen](#connectors-cli-create-secret)

1. [Erstellen einer Ressourcendefinition und -version](#connectors-cli-create-resource-definition)

1. [Erstellen einer Konnektordefinition und -version](#connectors-cli-create-connector-definition)

1. [Erstellen Sie ein Bereitstellungspaket für Lambda-Funktionen](#connectors-cli-create-deployment-package)

1. [Erstellen einer Lambda-Funktion](#connectors-cli-create-function)

1. [Erstellen einer Funktionsdefinition und -version](#connectors-cli-create-function-definition)

1. [Erstellen einer Abonnementdefinition und -version](#connectors-cli-create-subscription-definition)

1. [Erstellen einer Gruppenversion](#connectors-cli-create-group-version)

1. [Eine Bereitstellung auswählen](#connectors-cli-create-deployment)

1. [Testen der Lösung](#connectors-cli-test-solution)

Für dieses Tutorial benötigen Sie ungefähr 30 Minuten.

**Mithilfe der API AWS IoT Greengrass **

Es ist hilfreich, die folgenden Muster zu verstehen, wenn Sie mit Greengrass-Gruppen und -Gruppenkomponenten arbeiten (z. B. die Konnektoren, Funktionen und Ressourcen in der Gruppe).
+ An der Spitze der Hierarchie befindet sich ein *Definition*-Objekt, das ein Container für *Version*-Objekte ist. Eine Version wiederum ist ein Container für die Konnektoren, Funktionen oder andere Komponententypen.
+ Wenn Sie im Greengrass Core bereitstellen, stellen Sie eine bestimmte Gruppenversion bereit. Eine Gruppenversion kann eine Version jeder Art von Komponente enthalten. Ein Core ist erforderlich, aber die anderen werden bei Bedarf einbezogen.
+ Versionen sind unveränderlich, daher müssen Sie neue Versionen anlegen, wenn Sie Änderungen vornehmen möchten. 

**Tipp**  
Wenn Sie bei der Ausführung eines AWS CLI Befehls eine Fehlermeldung erhalten, fügen Sie den `--debug` Parameter hinzu und führen Sie den Befehl erneut aus, um weitere Informationen zu dem Fehler zu erhalten.

Mit der AWS IoT Greengrass API können Sie mehrere Definitionen für einen Komponententyp erstellen. Beispielsweise können Sie jedes Mal, wenn Sie ein `FunctionDefinition`-Objekt erstellen, ein `FunctionDefinitionVersion` erstellen, oder Sie können neue Versionen zu einer bestehenden Definition hinzufügen. Diese Flexibilität ermöglicht es Ihnen, Ihr Versionsmanagementsystem individuell anzupassen.

## Voraussetzungen
<a name="connectors-cli-prerequisites"></a>

Zum Durchführen dieses Tutorials benötigen Sie Folgendes:
+ Eine Greengrass-Gruppe und ein Greengrass-Core (v1.9.3 oder höher). Weitere Informationen zum Erstellen einer Greengrass-Gruppe und Greengrass Core finden Sie unter [Erste Schritte mit AWS IoT Greengrass](gg-gs.md). Das Tutorial „Erste Schritte“ enthält auch die Schritte zur Installation der AWS IoT Greengrass -Core Software.
+ Python 3.7 ist auf dem AWS IoT Greengrass Core-Gerät installiert.
+  AWS IoT Greengrass muss so konfiguriert sein, dass es lokale Geheimnisse unterstützt, wie in [Secrets Requirements](secrets.md#secrets-reqs) beschrieben.
**Anmerkung**  
Diese Anforderung beinhaltet die Gewährung des Zugriffs auf Ihre Secrets Manager Manager-Geheimnisse. Wenn Sie die standardmäßige Greengrass-Servicerolle verwenden, ist Greengrass berechtigt, die Werte von Geheimnissen abzurufen, deren Namen mit *greengrass* - beginnen.
+ Eine Twilio-Konto-SID, ein Authent-Token und eine Twilio-aktivierte Telefonnummer. Nachdem Sie ein Twilio-Projekt erstellt haben, stehen diese Werte im Projekt-Dashboard zur Verfügung.
**Anmerkung**  
Sie können ein Twilio-Testkonto verwenden. Wenn Sie ein Testkonto verwenden, müssen Sie einer Liste verifizierter Telefonnummern hinzufügen, die keine Twilio-Empfänger sind. Weitere Informationen finden Sie unter [So arbeiten Sie mit Ihrem kostenlosen Twilio-Testkonto.](https://www.twilio.com/docs/usage/tutorials/how-to-use-your-free-trial-account)
+ AWS CLI auf Ihrem Computer installiert und konfiguriert. Weitere Informationen finden Sie [unter Installation AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/installing.html) und [Konfiguration von AWS CLI im AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html) *Benutzerhandbuch*.

   

  Die Beispiele in diesem Tutorial sind für Linux und andere Unix-basierte Systeme geschrieben. Wenn Sie Windows verwenden, finden Sie unter [Angeben von Parameterwerten für die](https://docs.aws.amazon.com/cli/latest/userguide/cli-using-param.html) Informationen AWS Command Line Interface zu Unterschieden in der Syntax.

  Wenn der Befehl eine JSON-Zeichenkette enthält, zeigt das Tutorial ein Beispiel, das das JSON auf einer einzigen Zeile hat. Auf einigen Systemen ist es möglicherweise einfacher, Befehle in diesem Format zu bearbeiten und auszuführen.

## Schritt 1: Erstellen Sie ein Secrets Manager Manager-Geheimnis
<a name="connectors-cli-create-secret"></a>

In diesem Schritt verwenden Sie die AWS Secrets Manager API, um ein Geheimnis für Ihr Twilio-Authentifizierungstoken zu erstellen.

1. Erstellen Sie zunächst das Secret.
   + Ersetzen Sie es *twilio-auth-token* durch Ihr Twilio-Authentifizierungstoken.

   ```
   aws secretsmanager create-secret --name greengrass-TwilioAuthToken --secret-string twilio-auth-token
   ```
**Anmerkung**  
Standardmäßig ermöglicht AWS IoT Greengrass die Greengrass-Dienstrolle das Abrufen des Werts von Geheimnissen mit Namen, die mit *greengrass* - beginnen. Weitere Informationen finden Sie unter [Anforderungen für Secrets](secrets.md#secrets-reqs).

1. Kopieren Sie den `ARN` des Secrets aus der Ausgabe. Sie verwenden dies, um die geheime Ressource zu erstellen und den Twilio Notifications Connector zu konfigurieren.

## Schritt 2: Erstellen einer Ressourcendefinition und -version
<a name="connectors-cli-create-resource-definition"></a>

In diesem Schritt verwenden Sie die AWS IoT Greengrass API, um eine geheime Ressource für Ihr Secrets Manager-Geheimnis zu erstellen.

1. Erstellen Sie eine Ressourcendefinition, die eine Initialversion enthält.
   + *secret-arn*Ersetzen Sie es durch das Geheimnis, das Sie im vorherigen Schritt kopiert haben. `ARN`

    

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

   ```
   aws greengrass create-resource-definition --name MyGreengrassResources --initial-version '{
       "Resources": [
           {
               "Id": "TwilioAuthToken",
               "Name": "MyTwilioAuthToken",
               "ResourceDataContainer": {
                   "SecretsManagerSecretResourceData": {
                       "ARN": "secret-arn"
                   }
               }
           }
       ]
   }'
   ```

------
#### [ JSON Single-line ]

   ```
   aws greengrass create-resource-definition \
   --name MyGreengrassResources \
   --initial-version '{"Resources": [{"Id": "TwilioAuthToken", "Name": "MyTwilioAuthToken", "ResourceDataContainer": {"SecretsManagerSecretResourceData": {"ARN": "secret-arn"}}}]}'
   ```

------

1. Kopieren Sie den `LatestVersionArn` der Ressourcendefinition aus der Ausgabe. Mit diesem Wert fügen Sie die Version der Ressourcendefinition der Gruppenversion hinzu, die Sie im Core bereitstellen.

## Schritt 3: Erstellen einer Konnektordefinition und -version
<a name="connectors-cli-create-connector-definition"></a>

In diesem Schritt konfigurieren Sie Parameter für den Twilio Notifications Connector.

1. Erstellen Sie eine Konnektordefinition mit einer Initialversion.
   + Ersetzen Sie es *account-sid* durch die SID Ihres Twilio-Kontos.
   + *secret-arn*Ersetzen Sie es durch das `ARN` Ihres Secrets Manager Manager-Geheimnisses. Der Konnektor verwendet dies, um den Wert des lokalen Secrets zu erhalten.
   + Ersetze es *phone-number* durch deine Twilio-fähige Telefonnummer. Twilio verwendet sie, um die Textnachricht zu initiieren. Dies kann in der Nutzlast der Eingabenachricht überschrieben werden. Verwenden Sie das folgende Format: `+19999999999`.

    

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

   ```
   aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{
       "Connectors": [
           {
               "Id": "MyTwilioNotificationsConnector",
               "ConnectorArn": "arn:aws:greengrass:region::/connectors/TwilioNotifications/versions/4",
               "Parameters": {
                   "TWILIO_ACCOUNT_SID": "account-sid",
                   "TwilioAuthTokenSecretArn": "secret-arn",
                   "TwilioAuthTokenSecretArn-ResourceId": "TwilioAuthToken",
                   "DefaultFromPhoneNumber": "phone-number"
               }
           }
       ]
   }'
   ```

------
#### [ JSON Single-line ]

   ```
   aws greengrass create-connector-definition \
   --name MyGreengrassConnectors \
   --initial-version '{"Connectors": [{"Id": "MyTwilioNotificationsConnector", "ConnectorArn": "arn:aws:greengrass:region::/connectors/TwilioNotifications/versions/4", "Parameters": {"TWILIO_ACCOUNT_SID": "account-sid", "TwilioAuthTokenSecretArn": "secret-arn", "TwilioAuthTokenSecretArn-ResourceId": "TwilioAuthToken", "DefaultFromPhoneNumber": "phone-number"}}]}'
   ```

------
**Anmerkung**  
`TwilioAuthToken` ist die ID, die Sie im vorherigen Schritt zum Erstellen der geheimen Ressource verwendet haben.

1. Kopieren Sie den `LatestVersionArn` der Konnektordefinition aus der Ausgabe. Mit diesem Wert fügen Sie die Version der Konnektordefinition der Gruppenversion hinzu, die Sie im Core bereitstellen.

## Schritt 4: Erstellen Sie ein Lambda-Funktionsbereitstellungspaket
<a name="connectors-cli-create-deployment-package"></a>

Um eine Lambda-Funktion zu erstellen, müssen Sie zunächst ein *Lambda-Funktionsbereitstellungspaket* erstellen, das den Funktionscode und die Abhängigkeiten enthält. Greengrass Lambda-Funktionen benötigen das [AWS IoT Greengrass Core SDK](lambda-functions.md#lambda-sdks-core) für Aufgaben wie die Kommunikation mit MQTT-Nachrichten in der Kernumgebung und den Zugriff auf lokale Geheimnisse. In diesem Tutorial wird eine Python-Funktion erstellt, sodass Sie die Python-Version des SDK im Bereitstellungspaket verwenden.

1. <a name="download-ggc-sdk"></a> Laden Sie von der [AWS IoT Greengrass Core SDK-Downloadseite](what-is-gg.md#gg-core-sdk-download) das AWS IoT Greengrass Core SDK für Python auf Ihren Computer herunter.

1. <a name="unzip-ggc-sdk"></a>Entpacken Sie das heruntergeladene Paket, um das SDK zu erhalten. Das SDK ist der `greengrasssdk`-Ordner.

1. Speichern Sie die folgende Pythoncode-Funktion in einer lokalen Datei namens `temp_monitor.py`.

   ```
   import greengrasssdk
   import json
   import random
   
   client = greengrasssdk.client('iot-data')
   
   # publish to the Twilio Notifications connector through the twilio/txt topic
   def function_handler(event, context):
       temp = event['temperature']
       
       # check the temperature
       # if greater than 30C, send a notification
       if temp > 30:
           data = build_request(event)
           client.publish(topic='twilio/txt', payload=json.dumps(data))
           print('published:' + str(data))
           
       print('temperature:' + str(temp))
       return
   
   # build the Twilio request from the input data
   def build_request(event):
       to_name = event['to_name']
       to_number = event['to_number']
       temp_report = 'temperature:' + str(event['temperature'])
   
       return {
           "request": {
               "recipient": {
                   "name": to_name,
                   "phone_number": to_number,
                   "message": temp_report
               }
           },
           "id": "request_" + str(random.randint(1,101))
       }
   ```

1. Packen Sie die folgenden Elemente in einer ZIP-Datei mit dem Namen `temp_monitor_python.zip`. Verwenden Sie zum Erstellen der ZIP-Datei nur den Code und die entsprechenden Abhängigkeiten und nicht den dazugehörigen Ordner.
   + **temp\$1monitor.py**. App-Logik.
   + **greengrasssdk**. Erforderliche Bibliothek für Python Greengrass Lambda-Funktionen, die MQTT-Nachrichten veröffentlichen.

   Dies ist Ihr Lambda-Funktionsbereitstellungspaket.

## Schritt 5: Erstellen Sie eine Lambda-Funktion
<a name="connectors-cli-create-function"></a>

Erstellen Sie nun eine Lambda-Funktion, die das Bereitstellungspaket verwendet.

1. <a name="cli-create-empty-lambda-role"></a>Erstellen Sie eine IAM-Rolle, damit Sie den Rollen-ARN bei der Erstellung der Funktion übergeben können.

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

   ```
   aws iam create-role --role-name Lambda_empty --assume-role-policy '{
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": "lambda.amazonaws.com"
               },
              "Action": "sts:AssumeRole"
           }
       ]
   }'
   ```

------
#### [ JSON Single-line ]

   ```
   aws iam create-role --role-name Lambda_empty --assume-role-policy '{"Version": "2012-10-17",		 	 	  "Statement": [{"Effect": "Allow", "Principal": {"Service": "lambda.amazonaws.com"},"Action": "sts:AssumeRole"}]}'
   ```

------
**Anmerkung**  
AWS IoT Greengrass verwendet diese Rolle nicht, da die Berechtigungen für Ihre Greengrass Lambda-Funktionen in der Greengrass-Gruppenrolle angegeben sind. Für dieses Tutorial erstellen Sie eine leere Rolle.

1. <a name="cli-copy-lambda-role-arn"></a>Kopieren Sie die `Arn` aus der Ausgabe.

1. Verwenden Sie die AWS Lambda API, um die Funktion zu erstellen. TempMonitor Der folgende Befehl geht davon aus, dass sich die Zip-Datei im aktuellen Verzeichnis befindet.
   + Ersetzen Sie *role-arn* durch den `Arn`, den Sie kopiert haben.

   ```
   aws lambda create-function \
   --function-name TempMonitor \
   --zip-file fileb://temp_monitor_python.zip \
   --role role-arn \
   --handler temp_monitor.function_handler \
   --runtime python3.7
   ```

1. Veröffentlichen einer Version der Funktion.

   ```
   aws lambda publish-version --function-name TempMonitor --description 'First version'
   ```

1. Erstellen Sie einen Alias für die veröffentlichte Version.

   Greengrass-Gruppen können eine Lambda-Funktion nach Alias (empfohlen) oder nach Version referenzieren. Die Verwendung eines Alias erleichtert die Verwaltung von Codeaktualisierungen, da Sie Ihre Abonnementtabelle oder Gruppendefinition nicht ändern müssen, wenn der Funktionscode aktualisiert wird. Stattdessen verweisen Sie einfach mit dem Alias auf die neue Funktionsversion.
**Anmerkung**  
AWS IoT Greengrass unterstützt keine Lambda-Aliase für **\$1LATEST-Versionen**.

   ```
   aws lambda create-alias --function-name TempMonitor --name GG_TempMonitor --function-version 1
   ```

1. Kopieren Sie die `AliasArn` aus der Ausgabe. Sie verwenden diesen Wert, wenn Sie die Funktion für ein Abonnement konfigurieren AWS IoT Greengrass und wenn Sie ein Abonnement erstellen.

Jetzt sind Sie bereit, die Funktion für zu konfigurieren AWS IoT Greengrass.

## Schritt 6: Erstellen einer Funktionsdefinition und -version
<a name="connectors-cli-create-function-definition"></a>

Um eine Lambda-Funktion auf einem AWS IoT Greengrass Core zu verwenden, erstellen Sie eine Funktionsdefinitionsversion, die per Alias auf die Lambda-Funktion verweist und die Konfiguration auf Gruppenebene definiert. Weitere Informationen finden Sie unter [Steuerung der Ausführung von Greengrass Lambda-Funktionen mithilfe einer gruppenspezifischen Konfiguration](lambda-group-config.md).

1. Erstellen Sie eine Funktionsdefinition, die eine Initialversion enthält.
   + Ersetzen Sie sie *alias-arn* durch die Datei`AliasArn`, die Sie bei der Erstellung des Alias kopiert haben.

    

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

   ```
   aws greengrass create-function-definition --name MyGreengrassFunctions --initial-version '{
       "Functions": [
           {
               "Id": "TempMonitorFunction",
               "FunctionArn": "alias-arn",
               "FunctionConfiguration": {
                   "Executable": "temp_monitor.function_handler",
                   "MemorySize": 16000,
                   "Timeout": 5
               }
           }
       ]
   }'
   ```

------
#### [ JSON Single-line ]

   ```
   aws greengrass create-function-definition \
   --name MyGreengrassFunctions \
   --initial-version '{"Functions": [{"Id": "TempMonitorFunction", "FunctionArn": "alias-arn", "FunctionConfiguration": {"Executable": "temp_monitor.function_handler", "MemorySize": 16000,"Timeout": 5}}]}'
   ```

------

1. Kopieren Sie die `LatestVersionArn` aus der Ausgabe. Mit diesem Wert fügen Sie die Version der Funktionsdefinition der Gruppenversion hinzu, die Sie im Core bereitstellen.

1. Kopieren Sie die `Id` aus der Ausgabe. Diesen Wert verwenden Sie später, wenn Sie die Funktion aktualisieren.

## Schritt 7: Erstellen einer Abonnementdefinition und -version
<a name="connectors-cli-create-subscription-definition"></a>

<a name="connectors-how-to-add-subscriptions-p1"></a>In diesem Schritt fügen Sie ein Abonnement hinzu, das es der Lambda-Funktion ermöglicht, Eingabedaten an den Connector zu senden. Der Konnektor definiert die MQTT-Themen, die er abonniert, und dieses Abonnement verwendet eines dieser Themen. Es ist das gleiche Thema, zu dem die Beispielfunktion veröffentlicht.

<a name="connectors-how-to-add-subscriptions-p2"></a>Für dieses Tutorial erstellen Sie auch Abonnements, die es der Funktion ermöglichen, simulierte Temperaturmesswerte vom Connector AWS IoT zu empfangen AWS IoT und Statusinformationen vom Connector zu empfangen.

1. Erstellen Sie eine Abonnementdefinition, die eine Initialversion enthält, die die Abonnements umfasst.
   + *alias-arn*Ersetzen Sie es durch `AliasArn` das, was Sie kopiert haben, als Sie den Alias für die Funktion erstellt haben. Verwenden Sie diesen ARN für beide Abonnements, die ihn verwenden.

    

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

   ```
   aws greengrass create-subscription-definition --initial-version '{
       "Subscriptions": [
           {
               "Id": "TriggerNotification",
               "Source": "alias-arn",
               "Subject": "twilio/txt",
               "Target": "arn:aws:greengrass:region::/connectors/TwilioNotifications/versions/4"
           },        
           {
               "Id": "TemperatureInput",
               "Source": "cloud",
               "Subject": "temperature/input",
               "Target": "alias-arn"
           },
           {
               "Id": "OutputStatus",
               "Source": "arn:aws:greengrass:region::/connectors/TwilioNotifications/versions/4",
               "Subject": "twilio/message/status",
               "Target": "cloud"
           }
       ]
   }'
   ```

------
#### [ JSON Single-line ]

   ```
   aws greengrass create-subscription-definition \
   --initial-version '{"Subscriptions": [{"Id": "TriggerNotification", "Source": "alias-arn", "Subject": "twilio/txt", "Target": "arn:aws:greengrass:region::/connectors/TwilioNotifications/versions/4"},{"Id": "TemperatureInput", "Source": "cloud", "Subject": "temperature/input", "Target": "alias-arn"},{"Id": "OutputStatus", "Source": "arn:aws:greengrass:region::/connectors/TwilioNotifications/versions/4", "Subject": "twilio/message/status", "Target": "cloud"}]}'
   ```

------

1. Kopieren Sie die `LatestVersionArn` aus der Ausgabe. Mit diesem Wert fügen Sie die Version der Abonnementdefinition der Gruppenversion hinzu, die Sie im Core bereitstellen.

## Schritt 8: Erstellen einer Gruppenversion
<a name="connectors-cli-create-group-version"></a>

Jetzt können Sie eine Gruppenversion erstellen, die alle Elemente enthält, die Sie bereitstellen möchten. Dazu legen Sie eine Gruppenversion an, die auf die Zielversion jedes Komponententyps verweist.

Zuerst erhalten Sie die Gruppen-ID und den ARN der Core-Definitionsversion. Diese Werte sind erforderlich, um die Gruppenversion zu erstellen.

1. Rufen Sie die ID der Gruppe und die neueste Gruppenversion ab:

   1. <a name="get-group-id-latestversion"></a>Rufen Sie IDs die Greengrass-Zielgruppe und die Gruppenversion ab. Bei diesem Verfahren wird davon ausgegangen, dass es sich um die neueste Gruppen- und Gruppenversion handelt. Die folgende Abfrage gibt die zuletzt erstellte Gruppe zurück.

      ```
      aws greengrass list-groups --query "reverse(sort_by(Groups, &CreationTimestamp))[0]"
      ```

      Sie können auch nach Namen abfragen. Gruppennamen müssen nicht eindeutig sein, sodass mehrere Gruppen zurückgegeben werden können.

      ```
      aws greengrass list-groups --query "Groups[?Name=='MyGroup']"
      ```
**Anmerkung**  
<a name="find-group-ids-console"></a>Sie finden diese Werte auch in der AWS IoT Konsole. Die Gruppen-ID wird auf der Seite **Einstellungen** der Gruppe angezeigt. Die Gruppenversion IDs wird auf der Registerkarte **Bereitstellungen** der Gruppe angezeigt.

   1. <a name="copy-target-group-id"></a>Kopieren Sie die `Id` der Zielgruppe aus der Ausgabe. Sie verwenden sie, um die Core-Definitionsversion zu erhalten, und wenn Sie die Gruppe bereitstellen.

   1. <a name="copy-latest-group-version-id"></a>Kopieren Sie die `LatestVersion` aus der Ausgabe, d. h. die ID der letzten Version, die der Gruppe hinzugefügt wurde. Damit erhalten Sie die Core-Definitionsversion.

1. Abrufen des ARN der Core-Definitionsversion:

   1. Abrufen der Gruppenversion. Für diesen Schritt gehen wir davon aus, dass die neueste Gruppenversion eine Core-Definitionsversion enthält.
      + *group-id*Ersetzen Sie es durch `Id` das, was Sie für die Gruppe kopiert haben.
      + *group-version-id*Ersetzen Sie es durch `LatestVersion` das, was Sie für die Gruppe kopiert haben.

      ```
      aws greengrass get-group-version \
      --group-id group-id \
      --group-version-id group-version-id
      ```

   1. Kopieren Sie die `CoreDefinitionVersionArn` aus der Ausgabe.

1. Erstellen einer Gruppenversion
   + *group-id*Ersetzen Sie es durch `Id` das, was Sie für die Gruppe kopiert haben.
   + *core-definition-version-arn*Ersetzen Sie es durch `CoreDefinitionVersionArn` das, was Sie für die Version der Kerndefinition kopiert haben.
   + *resource-definition-version-arn*Ersetzen Sie es durch `LatestVersionArn` das, was Sie für die Ressourcendefinition kopiert haben.
   + *connector-definition-version-arn*Ersetzen Sie es durch `LatestVersionArn` das, was Sie für die Konnektordefinition kopiert haben.
   + *function-definition-version-arn*Ersetzen Sie es durch `LatestVersionArn` das, was Sie für die Funktionsdefinition kopiert haben.
   + *subscription-definition-version-arn*Ersetzen Sie es durch `LatestVersionArn` das, was Sie für die Abonnementdefinition kopiert haben.

   ```
   aws greengrass create-group-version \
   --group-id group-id \
   --core-definition-version-arn core-definition-version-arn \
   --resource-definition-version-arn resource-definition-version-arn \
   --connector-definition-version-arn connector-definition-version-arn \
   --function-definition-version-arn function-definition-version-arn \
   --subscription-definition-version-arn subscription-definition-version-arn
   ```

1. Kopieren Sie den Wert `Version` aus der Ausgabe. Dies ist die ID der Gruppenversion. Mit diesem Wert können Sie die Gruppenversion bereitstellen.

## Schritt 9: Erstellen einer Bereitstellung
<a name="connectors-cli-create-deployment"></a>

Stellen Sie die Gruppe auf dem Core-Gerät bereit.

1. <a name="check-gg-daemon-is-running"></a>Stellen Sie in einem Core-Device-Terminal sicher, dass der AWS IoT Greengrass Daemon läuft.

   1. So prüfen Sie, ob der Daemon ausgeführt wird:

      ```
      ps aux | grep -E 'greengrass.*daemon'
      ```

      Wenn die Ausgabe einen `root`-Eintrag für `/greengrass/ggc/packages/1.11.6/bin/daemon` enthält, dann wird der Daemon ausgeführt.

   1. Um den Daemon zu starten:

      ```
      cd /greengrass/ggc/core/
      sudo ./greengrassd start
      ```

1. <a name="create-deployment"></a>Erstellen einer -Bereitstellung.
   + Ersetze es *group-id* durch `Id` das, was du für die Gruppe kopiert hast.
   + *group-version-id*Ersetzen Sie es durch `Version` das, was Sie für die neue Gruppenversion kopiert haben.

   ```
   aws greengrass create-deployment \
   --deployment-type NewDeployment \
   --group-id group-id \
   --group-version-id group-version-id
   ```

1. <a name="copy-deployment-id"></a>Kopieren Sie die `DeploymentId` aus der Ausgabe.

1. <a name="get-deployment-status"></a>Abrufen des Bereitstellungsstatus.
   + *group-id*Ersetzen Sie es durch `Id` das, was Sie für die Gruppe kopiert haben.
   + *deployment-id*Ersetzen Sie es durch `DeploymentId` das, was Sie für die Bereitstellung kopiert haben.

   ```
   aws greengrass get-deployment-status \
   --group-id group-id \
   --deployment-id deployment-id
   ```

   Wenn der Status lautet`Success`, war die Bereitstellung erfolgreich. Hilfe zur Problembehebung finden Sie unter [Problembehebung AWS IoT Greengrass](gg-troubleshooting.md).

## Testen der Lösung
<a name="connectors-cli-test-solution"></a>

1. <a name="choose-test-page"></a>Wählen Sie auf der Startseite der AWS IoT Konsole die Option **Test** aus.

1. Verwenden **Sie für Thema abonnieren** die folgenden Werte und wählen Sie dann **Abonnieren** aus. Der Twilio Notifications Connector veröffentlicht Statusinformationen zu diesem Thema.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/greengrass/v1/developerguide/connectors-cli.html)

1. Verwenden **Sie für In Thema veröffentlichen** die folgenden Werte und wählen Sie dann **Veröffentlichen**, um die Funktion aufzurufen.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/greengrass/v1/developerguide/connectors-cli.html)

   Wenn erfolgreich, erhält der Empfänger die Textnachricht und die Konsole zeigt den Status `success` für die [Ausgangsdaten](twilio-notifications-connector.md#twilio-notifications-connector-data-output).

   Ändern Sie nun den `temperature` in der Eingabemeldung auf **29** und veröffentlichen Sie. Da dieser Wert unter 30 liegt, löst die TempMonitor Funktion keine Twilio-Nachricht aus.

## Weitere Informationen finden Sie auch unter
<a name="connectors-cli-see-also"></a>
+ [Integrieren von Services und Protokollen mit Greengrass-Konnektoren](connectors.md)
+ [AWS-mitgelieferte Greengrass-Anschlüsse](connectors-list.md)
+ [Erste Schritte mit Greengrass-Konnektoren (Konsole)](connectors-console.md)
+ [AWS Secrets Manager Befehle](https://docs.aws.amazon.com/cli/latest/reference/secretsmanager) in der *AWS CLI Befehlsreferenz*
+ <a name="see-also-iam-cli"></a>[AWS Identity and Access Management (IAM) -Befehle](https://docs.aws.amazon.com/cli/latest/reference/iam) in der *AWS CLI Befehlsreferenz*
+ <a name="see-also-lambda-cli"></a>[AWS Lambda Befehle](https://docs.aws.amazon.com/cli/latest/reference/lambda) in der *AWS CLI Befehlsreferenz*
+ <a name="see-also-gg-cli"></a>[AWS IoT Greengrass Befehle](https://docs.aws.amazon.com/cli/latest/reference/greengrass/index.html) in der *AWS CLI Befehlsreferenz*