

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 2): Lambda-Funktionen auf AWS IoT Greengrass
<a name="module3-II"></a>

In diesem Modul werden die Unterschiede zwischen On-Demand-Funktionen und langlebigen Lambda-Funktionen untersucht, die AWS IoT Greengrass auf dem Core ausgeführt werden.

Führen Sie vor Beginn das [Greengrass Device Setup-Skript](quick-start.md) aus oder stellen Sie sicher, dass Sie [Modul 1](module1.md), [Modul 2](module2.md) und [Modul 3 (Teil 1)](module3-I.md) abgeschlossen haben.

Dieses Modul sollte etwa 30 Minuten in Anspruch nehmen.

**Topics**
+ [Lambda-Funktion erstellen und verpacken](package.md)
+ [Konfigurieren Sie langlebige Lambda-Funktionen für AWS IoT Greengrass](long-lived.md)
+ [Testen Sie langlebige Lambda-Funktionen](long-testing.md)
+ [Testen Sie Lambda-Funktionen auf Abruf](on-demand.md)

# Lambda-Funktion erstellen und verpacken
<a name="package"></a>

In diesem Schritt führen Sie folgende Aktionen aus:
+ 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.

 

1. Rufen Sie auf Ihrem Computer das AWS IoT Greengrass Core SDK für Python auf, das Sie [Eine Lambda-Funktion erstellen und verpacken](create-lambda.md) in Modul 3-1 heruntergeladen und extrahiert haben.

   Die Lambda-Funktion in diesem Modul verwendet:
   + Die Datei `greengrassHelloWorldCounter.py` in `examples\HelloWorldCounter`. Dies ist Ihr Lambda-Funktionscode.
   + Der Ordner `greengrasssdk`. Dies ist das SDK.

1. Erstellen Sie ein Paket zur Bereitstellung von Lambda-Funktionen:

   1. Kopieren Sie den Ordner `greengrasssdk` in den Ordner `HelloWorldCounter`, der `greengrassHelloWorldCounter.py` enthält.

   1. Speichern Sie `greengrassHelloWorldCounter.py` und den Ordner `greengrasssdk` in einer `zip`-Datei mit der Bezeichnung `hello_world_counter_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_counter_python_lambda.zip”.\]](http://docs.aws.amazon.com/de_de/greengrass/v1/developerguide/images/gg-get-started-046.png)

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

      ```
      zip -r hello_world_counter_python_lambda.zip greengrasssdk greengrassHelloWorldCounter.py
      ```

   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\$1Counter** 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. Oder Sie können die Rolle, die Sie in Modul 3-1 erstellt haben, wiederverwenden.

   Wählen Sie **Funktion erstellen** aus.  
![\[Der Abschnitt „Basisinformationen“, in dem das Feld „Funktionsname“ auf „Greengrass_ HelloWorld _Counter“ und das Feld „Runtime“ auf „Python 3.7" gesetzt ist.\]](http://docs.aws.amazon.com/de_de/greengrass/v1/developerguide/images/gg-get-started-023-3.png)

1. Laden Sie Ihr Lambda-Funktionsbereitstellungspaket hoch.

   1. <a name="lambda-console-upload"></a>Wählen Sie auf der Registerkarte **Code** unter **Codequelle** die Option **Hochladen von aus 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_counter_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** **greengrassHelloWorldCounter.function\$1handler** ein.

   1. <a name="lambda-console-save-config"></a>Wählen Sie **Save (Speichern)** aus.
**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 die erste Version der Funktion.

   1. Wählen Sie im Menü **Aktionen** oben auf der Seite die Option **Neue Version veröffentlichen** aus. Geben Sie für **Version description (Versionsbeschreibung)** **First version** ein.

   1. Wählen Sie **Publish**.

1. Erstellen Sie einen Alias für die Funktionsversion.

   1. Wählen Sie oben auf der Seite im Menü **Aktionen** 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 unter **Name** **GG\$1HW\$1Counter** ein.

   1. Wählen Sie für **Version** die Option **1**.

   1. Wählen Sie **Save (Speichern)** aus.  
![\[Erstellen Sie einen Alias-Screenshot, bei dem das Feld Name auf GG_HW_Counter und das Feld Version auf 1 gesetzt sind.\]](http://docs.aws.amazon.com/de_de/greengrass/v1/developerguide/images/gg-get-started-048.png)

   Aliase bilden eine einzige Entität für Ihre Lambda-Funktion, die Greengrass-Geräte abonnieren können. Auf diese Weise müssen Sie Abonnements nicht jedes Mal mit neuen Versionsnummern der Lambda-Funktion aktualisieren, wenn die Funktion geändert wird.

# Konfigurieren Sie langlebige Lambda-Funktionen für AWS IoT Greengrass
<a name="long-lived"></a>

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

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** und dann unter **Meine Lambda-Funktionen** die Option Hinzufügen aus.**

1. Wählen Sie für die **Lambda-Funktion HelloWorld** **Greengrass\$1** \$1Counter.

1. Wählen Sie für die **Lambda-Funktionsversion** den Alias für die Version aus, die Sie veröffentlicht haben.

1. Geben Sie für **Timeout (Sekunden)** den Wert ein. **25** Diese Lambda-Funktion ruht vor jedem Aufruf 20 Sekunden lang.

1. **Wählen Sie für **Pinned** die Option True aus.**

1. Behalten Sie die Standardwerte für alle anderen Felder bei und wählen Sie **Lambda-Funktion hinzufügen**.

# Testen Sie langlebige Lambda-Funktionen
<a name="long-testing"></a>

Eine *[langlebige](lambda-functions.md#lambda-lifecycle)* Lambda-Funktion wird automatisch gestartet, wenn der AWS IoT Greengrass Kern in einem einzigen Container (oder einer Sandbox) gestartet und ausgeführt wird. Alle Variablen und sämtliche Vorverarbeitungslogik, die außerhalb des Funktionshandlers definiert sind, werden für jeden Aufruf des Funktionshandlers beibehalten. Mehrere Aufrufe werden so lange in eine Warteschlange gesetzt, bis die Ausführung vorheriger Aufrufe abgeschlossen ist.

 Der in diesem Modul verwendete `greengrassHelloWorldCounter.py`-Code definiert eine `my_counter`-Variable außerhalb des Funktionshandlers.

**Anmerkung**  
Sie können den Code in der AWS Lambda Konsole oder im [AWS IoT Greengrass Core SDK für Python](https://github.com/aws/aws-greengrass-core-sdk-python/blob/master/examples/HelloWorldCounter/greengrassHelloWorldCounter.py) unter anzeigen GitHub.

In diesem Schritt erstellen Sie Abonnements, die die Lambda-Funktion und AWS IoT den Austausch von MQTT-Nachrichten ermöglichen. Im Anschluss daran stellen Sie die Gruppe bereit und testen die Funktion.

1. **Wählen Sie auf der Gruppenkonfigurationsseite **Abonnements** und dann Hinzufügen aus.**

1. Wählen Sie unter **Quelltyp** die Option **Lambda-Funktion** und dann **HelloWorldGreengrass\$1** \$1Counter aus.

1. Wählen Sie unter **Zieltyp** die Option **Service** und dann **IoT Cloud** aus.

1. Geben Sie für **Topic filter (Themenfilter)** die Zeichenfolge **hello/world/counter** ein.

1. Wählen Sie **Create subscription** (Abonnement erstellen) aus.

   Dieses einzelne Abonnement geht nur in eine Richtung: von der `Greengrass_HelloWorld_Counter` Lambda-Funktion bis AWS IoT. Um diese Lambda-Funktion aus der Cloud aufzurufen (oder auszulösen), müssen Sie ein Abonnement in umgekehrter Richtung erstellen.

1. Folgen Sie den Schritten 1 bis 5, um ein weiteres Abonnement hinzuzufügen, das die folgenden Werte verwendet. Dieses Abonnement ermöglicht es der Lambda-Funktion, Nachrichten von AWS IoT zu empfangen. Sie verwenden dieses Abonnement, wenn Sie eine Nachricht von der AWS IoT Konsole senden, die die Funktion aufruft.
   + Wählen Sie als Quelle **Service** und dann **IoT Cloud** aus.
   + Wählen Sie für das Ziel **Lambda-Funktion** und dann **HelloWorldGreengrass\$1** \$1Counter aus.
   + Geben Sie für den Themenfilter **hello/world/counter/trigger** ein.

   In diesem Themenfilter wird die Erweiterung `/trigger` verwendet, da Sie zwei Abonnements erstellt haben, die sich nicht gegenseitig beeinträchtigen sollen.

1. Stellen Sie sicher, dass der Greengrass-Daemon läuft, wie unter beschrieben. [Bereitstellen von Cloud-Konfigurationen für ein Core-Gerät](configs-core.md)

1. <a name="console-actions-deploy"></a>**Wählen Sie auf der Gruppenkonfigurationsseite Deploy aus.**

1. <a name="console-test-after-deploy"></a>Kehren Sie nach Abschluss der Bereitstellung zur Startseite der AWS IoT Konsole zurück und wählen Sie **Test** aus.

1. Konfigurieren Sie die folgenden Felder:
   + Geben Sie für **Abonnementthema** **hello/world/counter** 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.

   Anders als in [Teil 1](module3-I.md) dieses Moduls sollten Sie nach dem Abonnement von `hello/world/counter` keine Nachrichten sehen. Dies liegt daran, dass der `greengrassHelloWorldCounter.py` Code, der im `hello/world/counter`-Thema veröffentlicht, sich innerhalb des Funktionshandlers befindet, der nur ausgeführt wird, wenn die Funktion aufgerufen wird.

   In diesem Modul haben Sie die `Greengrass_HelloWorld_Counter` Lambda-Funktion so konfiguriert, dass sie aufgerufen wird, wenn sie eine MQTT-Nachricht zu diesem Thema empfängt. `hello/world/counter/trigger`

   Das **Greengrass\$1 HelloWorld \$1Counter** to **IoT Cloud-Abonnement** ermöglicht es der Funktion, Nachrichten zum Thema AWS IoT an zu senden. `hello/world/counter` Das Abonnement **IoT Cloud** to **Greengrass\$1 HelloWorld \$1Counter** ermöglicht das Senden von Nachrichten AWS IoT an die Funktion zu diesem Thema. `hello/world/counter/trigger`

1. Um den langlebigen Lebenszyklus zu testen, rufen Sie die Lambda-Funktion auf, indem Sie eine Nachricht zum Thema veröffentlichen. `hello/world/counter/trigger` Sie können die Standardnachricht verwenden.  
![\[Standardmäßig wird die Nachricht „Hallo von der AWS IoT Konsole“ gesendet, an die die hello/world/counter/trigger Schaltfläche „Im Thema veröffentlichen“ markiert ist.\]](http://docs.aws.amazon.com/de_de/greengrass/v1/developerguide/images/gg-get-started-057.png)
**Anmerkung**  
 Die `Greengrass_HelloWorld_Counter`-Funktion ignoriert den Inhalt der empfangenen Nachrichten. Sie führt lediglich den Code im `function_handler` aus, wodurch eine Nachricht an das `hello/world/counter`-Thema gesendet wird. Sie können diesen Code im [AWS IoT Greengrass Core SDK für Python](https://github.com/aws/aws-greengrass-core-sdk-python/blob/master/examples/HelloWorldCounter/greengrassHelloWorldCounter.py) unter überprüfen GitHub.

Jedes Mal, wenn eine Nachricht im Thema `hello/world/counter/trigger` veröffentlicht wird, wird die `my_counter`-Variable um einen Schritt erhöht. Diese Anzahl von Aufrufen wird in den Nachrichten angezeigt, die von der Lambda-Funktion gesendet werden. Da der Funktionshandler einen 20-Sekunden-Schlafzyklus (`time.sleep(20)`) beinhaltet, werden beim wiederholten Auslösen des Handlers Antworten vom Kern in eine Warteschlange gestellt. AWS IoT Greengrass 

![\[Screenshot mit der Erhöhung von „Invocation Count“ von 1, 2 und 3.\]](http://docs.aws.amazon.com/de_de/greengrass/v1/developerguide/images/gg-get-started-058.png)


# Testen Sie Lambda-Funktionen auf Abruf
<a name="on-demand"></a>

Eine *[On-Demand-Lambda-Funktion](lambda-functions.md#lambda-lifecycle)* ähnelt in ihrer Funktionalität einer Cloud-basierten AWS Lambda Funktion. Mehrere Aufrufe einer On-Demand-Lambda-Funktion können parallel ausgeführt werden. Ein Aufruf der Lambda-Funktion erstellt einen separaten Container zur Verarbeitung von Aufrufen oder verwendet einen vorhandenen Container wieder, sofern die Ressourcen dies zulassen. Variablen oder Vorverarbeitungen, die außerhalb des Funktionshandlers definiert sind, werden nicht beibehalten, wenn Container erstellt werden.

1. Wählen Sie auf der Gruppenkonfigurationsseite die Registerkarte **Lambda-Funktionen** aus.

1. Wählen Sie unter **Meine Lambda-Funktionen** die **Greengrass\$1HelloWorld\$1Counter**Lambda-Funktion.

1. Auf der **Greengrass\$1HelloWorld\$1Counter**Wählen Sie auf der Detailseite **Bearbeiten** aus.

1. Wählen Sie **für Fixiert** die Option **Falsch** und dann **Speichern** aus.

1. <a name="console-actions-deploy"></a>Wählen Sie auf der Seite mit der Gruppenkonfiguration die Option **Bereitstellen** aus.

1. <a name="console-test-after-deploy"></a>Kehren Sie nach Abschluss der Bereitstellung zur Startseite der AWS IoT Konsole zurück und wählen Sie **Test** aus.

1. Konfigurieren Sie die folgenden Felder:
   + Geben Sie für **Abonnementthema** **hello/world/counter** 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.  
![\[Screenshot der Testseite „Subscriptions“ (Abonnements).\]](http://docs.aws.amazon.com/de_de/greengrass/v1/developerguide/images/gg-get-started-056.png)

1. Wählen Sie **Subscribe (Abonnieren)** aus.
**Anmerkung**  
Sie sollten nach dem Abonnement keine Nachrichten sehen.

1. Um den On-demand-Lebenszyklus zu überprüfen, rufen Sie die Funktion auf, indem Sie eine Nachricht im `hello/world/counter/trigger`-Thema veröffentlichen. Sie können die Standardnachricht verwenden.

   1. Wählen Sie dreimal schnell, innerhalb von fünf Sekunden nach jedem Drücken der Taste, **Veröffentlichen**.  
![\[Screenshot mit dreimaliger schneller Betätigung der Schaltfläche „Publish to topic“\]](http://docs.aws.amazon.com/de_de/greengrass/v1/developerguide/images/gg-get-started-063.png)

      Jede Veröffentlichung ruft den Funktionshandler auf und erstellt einen neuen Container für jeden Aufruf. Die Anzahl der Aufrufe wird nicht erhöht, wenn Sie die Funktion dreimal ausgelöst haben, da jede On-Demand-Lambda-Funktion über einen eigenen Container/eine eigene Sandbox verfügt.  
![\[Screenshot mit „Invocation Count“ fest bei 1.\]](http://docs.aws.amazon.com/de_de/greengrass/v1/developerguide/images/gg-get-started-064.png)

   1. Wählen Sie nach ungefähr 30 Sekunden die Option **Publish to topic (Veröffentlichung im Thema)** aus. Der Zahl der Aufrufe sollte sich auf 2 erhöhen. Dies zeigt, dass ein Container, der durch einen vorherigen Aufruf erstellt wurde, erneut verwendet wird, und Variablen, die außerhalb des Funktionshandlers vorab verarbeitet wurden, gespeichert wurden.  
![\[Screenshot mit „Invocation Count“ jetzt bei 2\]](http://docs.aws.amazon.com/de_de/greengrass/v1/developerguide/images/gg-get-started-065.png)

Sie sollten jetzt die beiden Arten von Lambda-Funktionen verstehen, die auf dem AWS IoT Greengrass Kern ausgeführt werden können. Das nächste Modul, [Modul 4](module4.md), zeigt Ihnen, wie lokale IoT-Geräte in einer AWS IoT Greengrass Gruppe interagieren können.