

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.

# Modul 3 (Teil 1): Lambda-Funktionen auf AWS IoT Greengrass
<a name="module3-I"></a>

Dieses Modul zeigt Ihnen, wie Sie eine Lambda-Funktion erstellen und bereitstellen, die MQTT-Nachrichten von Ihrem AWS IoT Greengrass Kerngerät sendet. Das Modul beschreibt Lambda-Funktionskonfigurationen, Abonnements, die verwendet werden, um MQTT-Messaging zu ermöglichen, und Bereitstellungen auf einem Kerngerät.

[Modul 3 (Teil 2)](module3-II.md) behandelt die Unterschiede zwischen On-Demand-Funktionen und langlebigen Lambda-Funktionen, die AWS IoT Greengrass auf dem Kern ausgeführt werden.

Bevor Sie beginnen, stellen Sie sicher, dass Sie [Modul 1 und Modul](module1.md) [2](module2.md) abgeschlossen haben und über ein laufendes AWS IoT Greengrass Kerngerät verfügen.

**Tipp**  
Wie Sie vorgehen können, um das Core-Gerät durch ein Skript einrichten zu lassen, erfahren Sie unter [Schnellstart: Greengrass-Geräteeinrichtung](quick-start.md). Das Skript kann auch die in diesem Modul verwendete Lambda-Funktion erstellen und bereitstellen.

Dieses Modul sollte etwa 30 Minuten in Anspruch nehmen.

**Topics**
+ [Eine Lambda-Funktion erstellen und verpacken](create-lambda.md)
+ [Konfigurieren Sie die Lambda-Funktion für AWS IoT Greengrass](config-lambda.md)
+ [Bereitstellen von Cloud-Konfigurationen auf einem Greengrass-Core-Gerät](configs-core.md)
+ [Stellen Sie sicher, dass die Lambda-Funktion auf dem Kerngerät ausgeführt wird](lambda-check.md)

# Eine Lambda-Funktion erstellen und verpacken
<a name="create-lambda"></a>

Die Python-Lambda-Beispielfunktion in diesem Modul verwendet das [AWS IoT Greengrass Core SDK](lambda-functions.md#lambda-sdks-core) für Python, um MQTT-Nachrichten zu veröffentlichen.

In diesem Schritt führen Sie folgende Aktionen aus:
+ Laden Sie das AWS IoT Greengrass Core SDK für Python auf Ihren Computer herunter (nicht auf das AWS IoT Greengrass Kerngerät).
+ Erstellen Sie ein Paket zur Bereitstellung von Lambda-Funktionen, das den Funktionscode und die Abhängigkeiten enthält.
+ Verwenden Sie die Lambda-Konsole, um eine Lambda-Funktion zu erstellen und das Bereitstellungspaket hochzuladen.
+ Veröffentlichen Sie eine Version der Lambda-Funktion und erstellen Sie einen Alias, der auf die Version verweist.

Um dieses Modul abschließen zu können, muss Python 3.7 auf Ihrem Core-Gerät installiert sein.

 <a name="create-lambda-procedure"></a>

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. Entpacken Sie das heruntergeladene Paket, um den Lambda-Funktionscode und das SDK zu erhalten.

   Die Lambda-Funktion in diesem Modul verwendet:
   + Die Datei `greengrassHelloWorld.py` in `examples\HelloWorld`. Dies ist Ihr Lambda-Funktionscode. Alle fünf Sekunden veröffentlicht die Funktion eine von zwei möglichen Nachrichten im Thema `hello/world`.
   + Der Ordner `greengrasssdk`. Dies ist das SDK.

1. Kopieren Sie den Ordner `greengrasssdk` in den Ordner `HelloWorld`, der `greengrassHelloWorld.py` enthält.

1. Um das Lambda-Funktions-Deployment-Paket zu erstellen, speichern Sie `greengrassHelloWorld.py` und den `greengrasssdk` Ordner in einer komprimierten `zip` Datei mit dem Namen`hello_world_python_lambda.zip`. Die Datei `py` und der Ordner `greengrasssdk` müssen sich im Root des Verzeichnisses befinden.  
![\[Screenshot mit dem komprimierten Inhalt der Datei "hello_word_python_lambda.zip"\]](http://docs.aws.amazon.com/de_de/greengrass/v1/developerguide/images/gg-get-started-017.png)

   Auf UNIX-ähnlichen Systemen (einschließlich des Mac-Terminals) können Sie den folgenden Befehl verwenden, um die Datei und den Ordner zu verpacken:

   ```
   zip -r hello_world_python_lambda.zip greengrasssdk greengrassHelloWorld.py
   ```
**Anmerkung**  
Je nach Ihrer Verteilung müssen Sie möglicherweise zuerst `zip` installieren (z. B. durch Ausführen von `sudo apt-get install zip`). Der Installationsbefehl kann für Ihre Verteilung abweichen.

   Jetzt sind Sie bereit, Ihre Lambda-Funktion zu erstellen und das Bereitstellungspaket hochzuladen.

1. Öffnen Sie die Lambda-Konsole und wählen Sie **Create function**.

1. Wählen Sie **Von Grund auf neu schreiben** aus.

1. Geben Sie Ihrer Funktion den Namen **Greengrass\$1HelloWorld** und richten Sie die verbleibenden Felder wie folgt 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.

   Wählen Sie **Funktion erstellen** aus.

1. Laden Sie das Bereitstellungspaket Ihrer Lambda-Funktion hoch:

   1. <a name="lambda-console-upload"></a>Wählen Sie auf der Registerkarte **Code** unter **Codequelle** die Option **Hochladen 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 `hello_world_python_lambda.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** **greengrassHelloWorld.function\$1handler** ein.  
![\[Der Abschnitt „Runtime-Einstellungen“, bei dem das Feld „Runtime“ auf „Python 3.7" und das Feld „Handler“ auf "greengrassHelloWorld.function_handler“ gesetzt ist.\]](http://docs.aws.amazon.com/de_de/greengrass/v1/developerguide/images/gg-get-started-023-2.png)

   1. <a name="lambda-console-save-config"></a>Wählen Sie **Save (Speichern)** aus.
**Anmerkung**  
Die **Test-Schaltfläche** 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. <a name="publish-function-version"></a>Veröffentlichen Sie die Lambda-Funktion:

   1. Wählen Sie im Menü **Aktionen** oben auf der Seite die Option **Neue Version veröffentlichen** aus.  
![\[Screenshot des Menüs „Actions” mit Hervorhebung von „Publish new version”.\]](http://docs.aws.amazon.com/de_de/greengrass/v1/developerguide/images/gg-get-started-026.png)

   1. Geben Sie unter **Version description (Versionsbeschreibung)** den Wert **First version** ein und wählen Sie dann **Publish (Veröffentlichen)** aus.  
![\[Screenshot mit Einstellung des Felds „Version description“ auf „First version“ und Hervorhebung der Schaltfläche „Publish“.\]](http://docs.aws.amazon.com/de_de/greengrass/v1/developerguide/images/gg-get-started-027.png)

1. <a name="create-version-alias"></a>Erstellen Sie einen [Alias](https://docs.aws.amazon.com/lambda/latest/dg/configuration-aliases.html) für die [Lambda-Funktionsversion](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. Wählen Sie im Menü **Aktionen** oben auf der Seite die Option **Alias erstellen** aus.  
![\[Screenshot des Menüs „Actions” mit der Einstellung „Create alias”.\]](http://docs.aws.amazon.com/de_de/greengrass/v1/developerguide/images/gg-get-started-028.png)

   1. Geben Sie dem Alias einen Namen**GG\$1HelloWorld**, legen Sie die Version fest **1** (was der Version entspricht, die Sie gerade veröffentlicht haben), und wählen Sie dann **Speichern** aus.
**Anmerkung**  
AWS IoT Greengrass unterstützt keine Lambda-Aliase für **\$1LATEST-Versionen**.

         
![\[Screenshot von Erstellen Sie einen neuen Alias, bei dem das Feld Name auf GG_ HelloWorld und das Feld Version auf 1 gesetzt ist.\]](http://docs.aws.amazon.com/de_de/greengrass/v1/developerguide/images/gg-get-started-029.png)

# Konfigurieren Sie die Lambda-Funktion für AWS IoT Greengrass
<a name="config-lambda"></a>

Sie sind jetzt bereit, Ihre Lambda-Funktion für AWS IoT Greengrass zu konfigurieren.

In diesem Schritt führen Sie folgende Aktionen aus:
+ Verwenden Sie die AWS IoT Konsole, um die Lambda-Funktion zu Ihrer Greengrass-Gruppe hinzuzufügen.
+ Konfigurieren Sie gruppenspezifische Einstellungen für die Lambda-Funktion.
+ Fügen Sie der Gruppe ein Abonnement hinzu, in dem die Lambda-Funktion MQTT-Nachrichten veröffentlichen kann. AWS IoT
+ Konfigurieren Sie lokale Protokolleinstellungen für die Gruppe.

 

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** die Gruppe aus, die Sie in [Modul 2](module2.md) erstellt haben.

1. Wählen Sie auf der Gruppenkonfigurationsseite die Registerkarte **Lambda-Funktionen** aus, scrollen Sie dann nach unten zum Abschnitt **Meine Lambda-Funktionen** und wählen Sie **Lambda-Funktion hinzufügen** aus.

1. Wählen Sie den Namen der Lambda-Funktion aus, die Sie im vorherigen Schritt erstellt haben (**Greengrass\$1 HelloWorld**, nicht den Aliasnamen).

1. Wählen Sie für die Version **Alias**: GG\$1. HelloWorld

1. Nehmen Sie im Abschnitt **Lambda-Funktionskonfiguration** die folgenden Änderungen vor:
   + Stellen Sie für den **Systembenutzer und die Gruppe** die Option **Gruppenstandard verwenden** ein.
   + Setzen Sie die **Containerisierung der Lambda-Funktion auf Gruppenstandard** **verwenden**.
   + Legen Sie für **Timeout** 25 Sekunden fest. Diese Lambda-Funktion ruht vor jedem Aufruf für 5 Sekunden.
   + **Wählen Sie für **Pinned** die Option True aus.**

    
**Anmerkung**  
<a name="long-lived-lambda"></a>Eine *langlebige* (oder *fixierte*) Lambda-Funktion wird nach dem Start automatisch AWS IoT Greengrass gestartet und läuft in einem eigenen Container weiter. Dies steht im Gegensatz zu einer *On-Demand-Lambda-Funktion*, die startet, wenn sie aufgerufen wird, und stoppt, wenn keine Aufgaben mehr zur Ausführung übrig sind. Weitere Informationen finden Sie unter [Lebenszykluskonfiguration für Greengrass Lambda-Funktionen](lambda-functions.md#lambda-lifecycle).

1. Wählen Sie **Lambda-Funktion hinzufügen**, um Ihre Änderungen zu speichern. Hinweise zu den Eigenschaften von Lambda-Funktionen finden Sie unter[Steuerung der Ausführung von Greengrass Lambda-Funktionen mithilfe einer gruppenspezifischen Konfiguration](lambda-group-config.md).

   Erstellen Sie als Nächstes ein Abonnement, an das die Lambda-Funktion [MQTT-Nachrichten senden kann](http://mqtt.org/). AWS IoT Core

   Eine Greengrass Lambda-Funktion kann MQTT-Nachrichten austauschen mit:
   + [Geräte](what-is-gg.md#greengrass-devices) in der Greengrass-Gruppe.
   + [Konnektoren](connectors.md) in der Gruppe.
   + Andere Lambda-Funktionen in der Gruppe.
   + AWS IoT Core.
   + Service des lokalen Schattens. Weitere Informationen finden Sie unter [Modul 5: Interaktion mit Geräteschatten](module5.md).

   Die Gruppe verwendet Abonnements, um zu steuern, wie diese Entitäten miteinander kommunizieren können sollen. Abonnements bieten vorhersehbare Interaktionen und eine Sicherheitsebene.

   Ein Abonnement besteht aus einer Quelle, einem Ziel und einem Thema. Die Quelle beschreibt den Ursprung der Nachricht. Das Ziel beschreibt die Destination der Nachricht. Mithilfe des Themas können Sie die Daten filtern, die von der Quelle ans Ziel gesendet werden. Die Quelle oder das Ziel kann ein Greengrass-Gerät, eine Lambda-Funktion, ein Connector, ein Geräteshadow oder sein. AWS IoT Core
**Anmerkung**  
Ein Abonnement wird in dem Sinne weitergeleitet, dass Nachrichten in eine bestimmte Richtung fließen: von der Quelle zum Ziel. Wenn Sie eine Zwei-Wege-Kommunikation ermöglichen möchten, müssen Sie zwei Abonnements einrichten.
**Anmerkung**  
 Derzeit erlaubt der Themenfilter für Abonnements nicht mehr als ein einzelnes `+` Zeichen in einem Thema. Der Themenfilter erlaubt nur ein einzelnes `#` Zeichen am Ende eines Themas. 

   Die `Greengrass_HelloWorld` Lambda-Funktion sendet Nachrichten nur an das `hello/world` Thema in AWS IoT Core, sodass Sie nur ein Abonnement von der Lambda-Funktion bis erstellen müssen. AWS IoT Core Sie erstellen dies im nächsten Schritt.

1. Wählen Sie auf der Gruppenkonfigurationsseite die Registerkarte **Abonnements** und dann Abonnement **hinzufügen** aus.

   Ein Beispiel, das Ihnen zeigt, wie Sie ein Abonnement mit dem erstellen AWS CLI, finden Sie [create-subscription-definition](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/greengrass/create-subscription-definition.html)in der *AWS CLI Befehlsreferenz*.

1. Wählen Sie im **Quelltyp** die **Lambda-Funktion** und für die **Quelle** die Option **HelloWorldGreengrass\$1** aus.

1. Wählen Sie für den **Zieltyp** **Service** und für das **Ziel** **IoT Cloud** aus.

1. Geben Sie **hello/world** als **Themenfilter** Folgendes ein und wählen Sie dann **Abonnement erstellen** aus.

1. Konfigurieren Sie die Einstellungen für die Protokollierung der Gruppe. In diesem Tutorial konfigurieren Sie AWS IoT Greengrass Systemkomponenten und benutzerdefinierte Lambda-Funktionen, um Protokolle in das Dateisystem des Kerngeräts zu schreiben.

   1. Wählen Sie auf der Gruppenkonfigurationsseite die Registerkarte **Logs** aus.

   1. Wählen Sie im Abschnitt **Konfiguration der lokalen Protokolle** die Option **Bearbeiten** aus.

   1. Behalten Sie im Dialogfeld **Konfiguration der lokalen Protokolle bearbeiten** die Standardwerte für Protokollebenen und Speichergrößen bei und wählen Sie dann **Speichern** aus.

   Sie können Protokolle verwenden, um Probleme zu beheben, die während dieses Tutorials möglicherweise auftreten. Wenn Sie Probleme beheben, können Sie die Protokollierungsstufe vorübergehend zu **Debug** ändern. Weitere Informationen finden Sie unter [Zugreifen auf Dateisystemprotokolle](greengrass-logs-overview.md#gg-logs-local).

1. <a name="disable-stream-manager-no-java"></a>Wenn die Java 8-Laufzeitumgebung nicht auf Ihrem Core-Gerät installiert ist, müssen Sie sie installieren oder den Stream-Manager deaktivieren.
**Anmerkung**  
In diesem Tutorial wird Stream-Manager nicht verwendet, jedoch wird der Workflow zur **Erstellung von Standardgruppen** verwendet, der Stream-Manager standardmäßig aktiviert. Wenn Stream-Manager aktiviert ist, Java 8 jedoch nicht installiert ist, schlägt die Gruppenbereitstellung fehl. Weitere Informationen finden Sie in den [Anforderungen für Stream-Manager](stream-manager.md#stream-manager-requirements).

   So deaktivieren Sie Stream-Manager:

   1. Wählen Sie auf der Seite mit den Gruppeneinstellungen die Registerkarte **Lambda-Funktionen** aus.

   1. Wählen Sie im Abschnitt **System Lambda functions** die Option **Stream Manager** und dann **Bearbeiten** aus.

   1. Wählen Sie **Disable (Deaktivieren)** und anschließend **Save (Speichern)** aus.

# Bereitstellen von Cloud-Konfigurationen auf einem Greengrass-Core-Gerät
<a name="configs-core"></a>

1. Stellen Sie sicher, dass Ihr Greengrass-Core-Gerät mit dem Internet verbunden ist. Versuchen Sie dazu beispielsweise, zu einer Webseite zu navigieren.

1. Stellen Sie sicher, dass der Greengrass-Daemon auf Ihrem Core-Gerät ausgeführt wird. Führen Sie in Ihrem Core-Device-Terminal die folgenden Befehle aus, um zu überprüfen, ob der Daemon läuft, und starten Sie ihn bei Bedarf.

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

   Jetzt sind Sie bereit, die Lambda-Funktion und Abonnementkonfigurationen auf Ihrem Greengrass-Core-Gerät bereitzustellen.

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** die Gruppe aus, die Sie in [Modul 2](module2.md) erstellt haben.

1. Wählen Sie auf der Gruppenkonfigurationsseite **Deploy** aus.

1. Wählen Sie auf der Registerkarte **Lambda-Funktionen** im Abschnitt **System-Lambda-Funktionen** die Option **IP-Detektor** aus.

1. Wählen Sie **Bearbeiten** und wählen Sie **MQTT-Broker-Endpunkte automatisch erkennen und überschreiben** aus. Damit können Geräte automatisch Core-Verbindungsinformationen abrufen, z. B. die IP-Adresse, DNS und die Portnummer. Die automatische Ermittlung wird empfohlen, aber AWS IoT Greengrass unterstützt auch manuell angegebene Endpunkte. Sie werden nur bei der ersten Bereitstellung der Gruppe zur Angabe der Ermittlungsmethode aufgefordert.

Der erste Bereitstellungsvorgang kann einige Minuten dauern. Nachdem die Bereitstellung abgeschlossen ist, sollten Sie **Successfully completed** (Erfolgreich abgeschlossen) in der Spalte **Status** der Seite **Deployments** (Bereitstellungen) sehen:

**Anmerkung**  
Der Bereitstellungsstatus wird ebenfalls im Header der Seite unter dem Namen der Gruppe angezeigt.

Hilfe zur Problembehebung finden Sie unter [Problembehebung AWS IoT Greengrass](gg-troubleshooting.md).

# Stellen Sie sicher, dass die Lambda-Funktion auf dem Kerngerät ausgeführt wird
<a name="lambda-check"></a>

1. Wählen Sie im Navigationsbereich der [AWS IoT Konsole](https://console.aws.amazon.com/iot/) unter **Test** die Option **MQTT-Testclient** aus.

1. Wählen Sie die Registerkarte **Thema abonnieren**.

1. Rufen Sie **hello/world** den **Themenfilter** auf und erweitern Sie die **Zusätzliche Konfiguration**.

1. Geben Sie die in jedes der folgenden Felder aufgelisteten Informationen ein:
   + Wählen Sie für **Servicequalität** **0** aus.
   + Wählen Sie für **MQTT-Nutzlast-Anzeige** die Option **Nutzlasten als Zeichenfolgen anzeigen** aus.

    

1. Wählen Sie **Subscribe (Abonnieren)** aus.

Unter der Annahme, dass die Lambda-Funktion auf Ihrem Gerät ausgeführt wird, veröffentlicht sie Meldungen, die den folgenden ähneln, zum `hello/world` Thema:

![\[Screenshot der an das hello/world Thema gesendeten Nachricht mit hervorgehobener Nachricht.\]](http://docs.aws.amazon.com/de_de/greengrass/v1/developerguide/images/gg-get-started-045.png)


Obwohl die Lambda-Funktion weiterhin MQTT-Nachrichten an das `hello/world` Thema sendet, stoppen Sie den AWS IoT Greengrass Daemon nicht. Bei den verbleibenden Modulen wird nämlich davon ausgegangen, dass die Funktion ausgeführt wird.

Sie können die Funktion und das Abonnement aus der Gruppe löschen:
+ **Wählen Sie auf der Gruppenkonfigurationsseite unter der Registerkarte **Lambda-Funktionen** die Lambda-Funktion aus, die Sie entfernen möchten, und wählen Sie Entfernen aus.**
+ **Wählen Sie auf der Gruppenkonfigurationsseite unter der Registerkarte **Abonnements** das Abonnement aus und klicken Sie dann auf Löschen.**

Die Funktion und das Abonnement werden während der nächsten Gruppenbereitstellung vom Kern entfernt.