Testen von langdauernden -Funktionen - AWS IoT Greengrass

AWS IoT Greengrass Version 1 trat am 30. Juni 2023 in die erweiterte Lebensphase ein. Weitere Informationen finden Sie in der AWS IoT Greengrass V1 Wartungsrichtlinie. Nach diesem Datum AWS IoT Greengrass V1 werden keine Updates mehr veröffentlicht, die Funktionen, Verbesserungen, Bugfixes oder Sicherheitspatches bieten. Geräte, die auf laufen, werden AWS IoT Greengrass V1 nicht gestört und funktionieren weiterhin und stellen eine Verbindung zur Cloud her. Wir empfehlen Ihnen dringend, zu migrieren AWS IoT Greengrass Version 2, da dies wichtige neue Funktionen und Unterstützung für zusätzliche Plattformen bietet.

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.

Testen von langdauernden -Funktionen

EINlangdauerndenDie Lambda-Funktion startet automatisch, wenn dieAWS IoT Greengrasscore wird in einem einzelnen Container (oder einer Sandbox))) ausgeführt. 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 anzeigenAWS Lambda-Konsole oder in derAWS IoT GreengrassCores SDK für Pythonauf GitHubaus.

In diesem Schritt erstellen Sie Abonnements, die Lambda-Funktion undAWS IoTum MQTT-Nachrichten auszutauschen. Im Anschluss daran stellen Sie die Gruppe bereit und testen die Funktion.

  1. Wählen Sie auf der Gruppenkonfigurationsseite die OptionAbonnementsund wählen Sie dann ausAddaus.

  2. UnderRessourcentyp, wählenLambda-Funktionund wählen Sie dann ausGreengrass_HelloWorld_Thekeaus.

  3. UnderZieltyp, wählen-Service, wählenIoT Cloudaus.

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

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

    Dieses einzelne Abonnement betrifft nur eine Richtung: vomGreengrass_HelloWorld_CounterLambda-Funktion zumAWS IoTaus. Um diese Lambda-Funktion über die Cloud aufrufen (oder auslösen) zu können, müssen Sie ein Abonnement in der entgegengesetzten Richtung erstellen.

  6. Befolgen Sie die Schritte 1—5, um ein weiteres Abonnement hinzuzufügen, das die folgenden Werte verwendet. Dadurch können Sie die Lambda-Funktion für den Empfang von Nachrichten vom einrichtenAWS IoTaus. Sie verwenden dieses Abonnement, wenn Sie eine Nachricht vomAWS IoT-Konsole, von der die Funktion aufgerufen wird.

    • Wählen Sie für die Quelle-Serviceund wählen Sie dann ausIoT Cloudaus.

    • Wählen Sie für das ZielLambda-Funktionund wählen Sie dann ausGreengrass_HelloWorld_Thekeaus.

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

  7. Stellen Sie sicher, dass der Greengrass-Daemon, wie in beschrieben, ausgeführt wirdBereitstellen von Cloud-Konfigurationen für ein Core-Gerätaus.

  8. Wählen Sie auf der Gruppenkonfigurationsseite die OptionBereitstellenaus.

  9. Nachdem Ihre Bereitstellung abgeschlossen wurde, kehren Sie zumAWS IoT-Konsolen-Startseite und wählen SieTestaus.

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

  11. Wählen Sie Subscribe aus.

    Anders als in Teil 1 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 dieGreengrass_HelloWorld_CounterLambda-Funktion, die aufgerufen wird, wenn sie eine MQTT-Nachricht auf demhello/world/counter/trigger-Thema.

    DieGreengrass_HelloWorld_ThekezuIoT Cloud-Funktionen ermöglichen die -Funktion, Nachrichten an zu sendenAWS IoTauf derhello/world/counter-Thema. DieIoT CloudzuGreengrass_HelloWorld_ThekeAbonnement erlaubtAWS IoTum Meldungen an die -Funktion auf demhello/world/counter/trigger-Thema.

  12. Um den langdauernden Lebenszyklus zu überprüfen, rufen Sie die Lambda-Funktion auf, indem Sie eine Nachricht imhello/world/counter/trigger-Thema. Sie können die Standardnachricht verwenden.

    Default Hello fromAWS IoT-Konsolennachricht an „hello/world/counter/trigger“ gesendet wird, mit Hervorhebung der Schaltfläche „Publish to topic“
    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 in derAWS IoT GreengrassCores SDK für Pythonauf GitHubaus.

Jedes Mal, wenn eine Nachricht im Thema hello/world/counter/trigger veröffentlicht wird, wird die my_counter-Variable um einen Schritt erhöht. Die Anzahl der Aufrufe wird in den von der Lambda-Funktion gesendeten Nachrichten angegeben. Weil der Funktionshandler einen 20-sekündigen Ruhezyklus beinhaltet (time.sleep(20)), wobei der Handler wiederholt die Antworten vom in eine Warteschlange gestellt werdenAWS IoT GreengrassKern.

Screenshot mit der Erhöhung von „Invocation Count“ von 1, 2 und 3.