Schritt 4: Entwickeln und Testen einer Komponente auf Ihrem Gerät - AWS IoT Greengrass

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.

Schritt 4: Entwickeln und Testen einer Komponente auf Ihrem Gerät

Eine Komponente ist ein Softwaremodul, das auf - AWS IoT Greengrass Core-Geräten ausgeführt wird. Mit Komponenten können Sie komplexe Anwendungen als diskrete Bausteine erstellen und verwalten, die Sie von einem Greengrass-Kerngerät zu einem anderen wiederverwenden können. Jede Komponente besteht aus einem Rezept und Artefakten .

  • Rezepte

    Jede Komponente enthält eine Rezeptdatei, die ihre Metadaten definiert. Das Rezept gibt auch die Konfigurationsparameter, Komponentenabhängigkeiten, den Lebenszyklus und die Plattformkompatibilität der Komponente an. Der Komponentenlebenszyklus definiert die Befehle, die die Komponente installieren, ausführen und herunterfahren. Weitere Informationen finden Sie unter AWS IoT Greengrass Referenz zum Komponenten-Rezept.

    Sie können Rezepte im JSON- oder YAML-Format definieren.

  • Artefakte

    Komponenten können eine beliebige Anzahl von Artefakten haben, bei denen es sich um Komponenten-Binärdateien handelt. Artefakte können Skripte, kompilierten Code, statische Ressourcen und alle anderen Dateien enthalten, die eine Komponente verbraucht. Komponenten können auch Artefakte aus Komponentenabhängigkeiten verwenden.

Mit können Sie die Greengrass-CLI verwenden AWS IoT Greengrass, um Komponenten lokal auf einem Greengrass-Kerngerät zu entwickeln und zu testen, ohne mit der AWS Cloud zu interagieren. Wenn Sie Ihre lokale Komponente abgeschlossen haben, können Sie das Komponentenrezept und die Artefakte verwenden, um diese Komponente im AWS IoT Greengrass Service in der AWS Cloud zu erstellen und sie dann auf allen Ihren Greengrass-Core-Geräten bereitzustellen. Weitere Informationen zu -Komponenten finden Sie unter Entwickeln von AWS IoT Greengrass Komponenten.

In diesem Abschnitt erfahren Sie, wie Sie eine grundlegende Hello-World-Komponente lokal auf Ihrem Core-Gerät erstellen und ausführen.

So entwickeln Sie eine Hello-World-Komponente auf Ihrem Gerät
  1. Erstellen Sie einen Ordner für Ihre Komponenten mit Unterordnern für Rezepte und Artefakte. Führen Sie die folgenden Befehle auf Ihrem Greengrass-Core-Gerät aus, um diese Ordner zu erstellen und zum Komponentenordner zu wechseln. Ersetzen Sie ~/greengrassv2 oder %USERPROFILE%\greengrassv2 durch den Pfad zum Ordner, der für die lokale Entwicklung verwendet werden soll.

    Linux or Unix
    mkdir -p ~/greengrassv2/{recipes,artifacts} cd ~/greengrassv2
    Windows Command Prompt (CMD)
    mkdir %USERPROFILE%\greengrassv2\\recipes, %USERPROFILE%\greengrassv2\\artifacts cd %USERPROFILE%\greengrassv2
    PowerShell
    mkdir ~/greengrassv2/recipes, ~/greengrassv2/artifacts cd ~/greengrassv2
  2. Verwenden Sie einen Texteditor, um eine Rezeptdatei zu erstellen, die die Metadaten, Parameter, Abhängigkeiten, den Lebenszyklus und die Plattformfunktionen Ihrer Komponente definiert. Fügen Sie die Komponentenversion in den Rezeptdateinamen ein, damit Sie identifizieren können, welches Rezept welche Komponentenversion widerspiegelt. Sie können das YAML- oder JSON-Format für Ihr Rezept auswählen.

    Auf einem Linux-basierten System können Sie beispielsweise den folgenden Befehl ausführen, um GNU Nano zum Erstellen der Datei zu verwenden.

    JSON
    nano recipes/com.example.HelloWorld-1.0.0.json
    YAML
    nano recipes/com.example.HelloWorld-1.0.0.yaml
    Anmerkung

    AWS IoT Greengrass verwendet semantische Versionen für -Komponenten. Semantische Versionen folgen einem größeren Patch-Nummernsystem. Die -Version 1.0.0 stellt beispielsweise die erste Hauptversion für eine Komponente dar. Weitere Informationen finden Sie in der semantischen Versionsspezifikation .

  3. Fügen Sie das folgende Rezept in die Datei ein.

    JSON
    { "RecipeFormatVersion": "2020-01-25", "ComponentName": "com.example.HelloWorld", "ComponentVersion": "1.0.0", "ComponentDescription": "My first AWS IoT Greengrass component.", "ComponentPublisher": "Amazon", "ComponentConfiguration": { "DefaultConfiguration": { "Message": "world" } }, "Manifests": [ { "Platform": { "os": "linux" }, "Lifecycle": { "run": "python3 -u {artifacts:path}/hello_world.py {configuration:/Message}" } }, { "Platform": { "os": "windows" }, "Lifecycle": { "run": "py -3 -u {artifacts:path}/hello_world.py {configuration:/Message}" } } ] }
    YAML
    --- RecipeFormatVersion: '2020-01-25' ComponentName: com.example.HelloWorld ComponentVersion: '1.0.0' ComponentDescription: My first AWS IoT Greengrass component. ComponentPublisher: Amazon ComponentConfiguration: DefaultConfiguration: Message: world Manifests: - Platform: os: linux Lifecycle: run: | python3 -u {artifacts:path}/hello_world.py "{configuration:/Message}" - Platform: os: windows Lifecycle: run: | py -3 -u {artifacts:path}/hello_world.py "{configuration:/Message}"

    Der ComponentConfiguration Abschnitt dieses Rezepts definiert einen Parameter, Message, der standardmäßig istworld. Der Manifests Abschnitt definiert ein Manifest , bei dem es sich um eine Reihe von Lebenszyklusanweisungen und Artefakten für eine Plattform handelt. Sie können mehrere Manifeste definieren, um beispielsweise unterschiedliche Installationsanweisungen für verschiedene Plattformen anzugeben. Im Manifest weist der Lifecycle Abschnitt das Greengrass-Kerngerät an, das Hello-World-Skript mit dem Message Parameterwert als Argument auszuführen.

  4. Führen Sie den folgenden Befehl aus, um einen Ordner für die Komponentenartefakte zu erstellen.

    Linux or Unix
    mkdir -p artifacts/com.example.HelloWorld/1.0.0
    Windows Command Prompt (CMD)
    mkdir artifacts\com.example.HelloWorld\1.0.0
    PowerShell
    mkdir artifacts\com.example.HelloWorld\1.0.0
    Wichtig

    Sie müssen das folgende Format für den Pfad des Artefaktordners verwenden. Fügen Sie den Komponentennamen und die Version ein, die Sie im Rezept angeben.

    artifacts/componentName/componentVersion/
  5. Verwenden Sie einen Texteditor, um eine Python-Skriptartefaktdatei für Ihre Hello-World-Komponente zu erstellen.

    Auf einem Linux-basierten System können Sie beispielsweise den folgenden Befehl ausführen, um GNU Nano zum Erstellen der Datei zu verwenden.

    nano artifacts/com.example.HelloWorld/1.0.0/hello_world.py

    Kopieren Sie das folgende Python-Skript und fügen Sie es in die Datei ein.

    import sys message = "Hello, %s!" % sys.argv[1] # Print the message to stdout, which Greengrass saves in a log file. print(message)
  6. Verwenden Sie die lokale AWS IoT Greengrass CLI, um Komponenten auf Ihrem Greengrass-Kerngerät zu verwalten.

    Führen Sie den folgenden Befehl aus, um die Komponente auf dem AWS IoT Greengrass Core bereitzustellen. Ersetzen Sie /greengrass/v2 oder C:\greengrass\v2 durch Ihren AWS IoT Greengrass V2 Stammordner und ersetzen Sie ~/greengrassv2 oder %USERPROFILE%\greengrassv2 durch Ihren Komponentenentwicklungsordner.

    Linux or Unix
    sudo /greengrass/v2/bin/greengrass-cli deployment create \ --recipeDir ~/greengrassv2/recipes \ --artifactDir ~/greengrassv2/artifacts \ --merge "com.example.HelloWorld=1.0.0"
    Windows Command Prompt (CMD)
    C:\greengrass\v2\bin\greengrass-cli deployment create ^ --recipeDir %USERPROFILE%\greengrassv2\recipes ^ --artifactDir %USERPROFILE%\greengrassv2\artifacts ^ --merge "com.example.HelloWorld=1.0.0"
    PowerShell
    C:\greengrass\v2\bin\greengrass-cli deployment create ` --recipeDir ~/greengrassv2/recipes ` --artifactDir ~/greengrassv2/artifacts ` --merge "com.example.HelloWorld=1.0.0"

    Dieser Befehl fügt die Komponente hinzu, die das -Rezept in recipes und das Python-Skript in verwendetartifacts. Die --merge Option fügt die von Ihnen angegebene Komponente und Version hinzu oder aktualisiert sie.

  7. Die AWS IoT Greengrass Core-Software speichert stdout aus dem Komponentenprozess in Protokolldateien im logs Ordner . Führen Sie den folgenden Befehl aus, um zu überprüfen, ob die Hello-World-Komponente ausgeführt wird und Nachrichten druckt.

    Linux or Unix
    sudo tail -f /greengrass/v2/logs/com.example.HelloWorld.log
    Windows Command Prompt (CMD)
    type C:\greengrass\v2\logs\com.example.HelloWorld.log

    Der type Befehl schreibt den Inhalt der Datei in das Terminal. Führen Sie diesen Befehl mehrmals aus, um Änderungen in der Datei zu beobachten.

    PowerShell
    gc C:\greengrass\v2\logs\com.example.HelloWorld.log -Tail 10 -Wait

    Sie sollten Meldungen ähnlich dem folgenden Beispiel sehen.

    Hello, world!
    Anmerkung

    Wenn die Datei nicht vorhanden ist, ist die lokale Bereitstellung möglicherweise noch nicht abgeschlossen. Wenn die Datei nicht innerhalb von 15 Sekunden existiert, ist die Bereitstellung wahrscheinlich fehlgeschlagen. Dies kann beispielsweise der Fall sein, wenn Ihr Rezept ungültig ist. Führen Sie den folgenden Befehl aus, um die AWS IoT Greengrass Core-Protokolldatei anzuzeigen. Diese Datei enthält Protokolle aus dem Bereitstellungsservice des Greengrass-Core-Geräts.

    Linux or Unix
    sudo tail -f /greengrass/v2/logs/greengrass.log
    Windows Command Prompt (CMD)
    type C:\greengrass\v2\logs\greengrass.log

    Der type Befehl schreibt den Inhalt der Datei in das Terminal. Führen Sie diesen Befehl mehrmals aus, um Änderungen in der Datei zu beobachten.

    PowerShell
    gc C:\greengrass\v2\logs\greengrass.log -Tail 10 -Wait
  8. Ändern Sie die lokale Komponente, um Ihren Code zu iterieren und zu testen. Öffnen Sie hello_world.py in einem Texteditor und fügen Sie den folgenden Code in Zeile 4 hinzu, um die Nachricht zu bearbeiten, die der AWS IoT Greengrass Kern protokolliert.

    message += " Greetings from your first Greengrass component."

    Das hello_world.py Skript sollte jetzt den folgenden Inhalt haben.

    import sys message = "Hello, %s!" % sys.argv[1] message += " Greetings from your first Greengrass component." # Print the message to stdout, which Greengrass saves in a log file. print(message)
  9. Führen Sie den folgenden Befehl aus, um die Komponente mit Ihren Änderungen zu aktualisieren.

    Linux or Unix
    sudo /greengrass/v2/bin/greengrass-cli deployment create \ --recipeDir ~/greengrassv2/recipes \ --artifactDir ~/greengrassv2/artifacts \ --merge "com.example.HelloWorld=1.0.0"
    Windows Command Prompt (CMD)
    C:\greengrass\v2\bin\greengrass-cli deployment create ^ --recipeDir %USERPROFILE%\greengrassv2\recipes ^ --artifactDir %USERPROFILE%\greengrassv2\artifacts ^ --merge "com.example.HelloWorld=1.0.0"
    PowerShell
    C:\greengrass\v2\bin\greengrass-cli deployment create ` --recipeDir ~/greengrassv2/recipes ` --artifactDir ~/greengrassv2/artifacts ` --merge "com.example.HelloWorld=1.0.0"

    Dieser Befehl aktualisiert die com.example.HelloWorld Komponente mit dem neuesten Hello World-Artefakt.

  10. Führen Sie den folgenden Befehl aus, um die Komponente neu zu starten. Wenn Sie eine Komponente neu starten, verwendet das Core-Gerät die neuesten Änderungen.

    Linux or Unix
    sudo /greengrass/v2/bin/greengrass-cli component restart \ --names "com.example.HelloWorld"
    Windows Command Prompt (CMD)
    C:\greengrass\v2\bin\greengrass-cli component restart ^ --names "com.example.HelloWorld"
    PowerShell
    C:\greengrass\v2\bin\greengrass-cli component restart ` --names "com.example.HelloWorld"
  11. Überprüfen Sie das Protokoll erneut, um zu überprüfen, ob die Hello-World-Komponente die neue Nachricht ausgibt.

    Linux or Unix
    sudo tail -f /greengrass/v2/logs/com.example.HelloWorld.log
    Windows Command Prompt (CMD)
    type C:\greengrass\v2\logs\com.example.HelloWorld.log

    Der type Befehl schreibt den Inhalt der Datei in das Terminal. Führen Sie diesen Befehl mehrmals aus, um Änderungen in der Datei zu beobachten.

    PowerShell
    gc C:\greengrass\v2\logs\com.example.HelloWorld.log -Tail 10 -Wait

    Sie sollten Meldungen ähnlich dem folgenden Beispiel sehen.

    Hello, world! Greetings from your first Greengrass component.
  12. Sie können die Konfigurationsparameter der Komponente aktualisieren, um verschiedene Konfigurationen zu testen. Wenn Sie eine Komponente bereitstellen, können Sie eine Konfigurationsaktualisierung angeben, die definiert, wie die Konfiguration der Komponente auf dem Core-Gerät geändert wird. Sie können angeben, welche Konfigurationswerte auf Standardwerte zurückgesetzt werden sollen, und die neuen Konfigurationswerte, die auf dem Core-Gerät zusammengeführt werden sollen. Weitere Informationen finden Sie unter Komponentenkonfigurationen aktualisieren.

    Gehen Sie wie folgt vor:

    1. Verwenden Sie einen Texteditor, um eine Datei mit dem Namen zu erstellenhello-world-config-update.json, die das Konfigurationsupdate enthält

      Auf einem Linux-basierten System können Sie beispielsweise den folgenden Befehl ausführen, um GNU Nano zum Erstellen der Datei zu verwenden.

      nano hello-world-config-update.json
    2. Kopieren Sie das folgende JSON-Objekt und fügen Sie es in die Datei ein. Dieses JSON-Objekt definiert eine Konfigurationsaktualisierung, die den Wert mit dem Message Parameter zusammenführtfriend, um seinen Wert zu aktualisieren. Dieses Konfigurationsupdate gibt keine Werte an, die zurückgesetzt werden sollen. Sie müssen den Message Parameter nicht zurücksetzen, da die Zusammenführungsaktualisierung den vorhandenen Wert ersetzt.

      { "com.example.HelloWorld": { "MERGE": { "Message": "friend" } } }
    3. Führen Sie den folgenden Befehl aus, um das Konfigurationsupdate für die Hello World-Komponente bereitzustellen.

      Linux or Unix
      sudo /greengrass/v2/bin/greengrass-cli deployment create \ --merge "com.example.HelloWorld=1.0.0" \ --update-config hello-world-config-update.json
      Windows Command Prompt (CMD)
      C:\greengrass\v2\bin\greengrass-cli deployment create ^ --merge "com.example.HelloWorld=1.0.0" ^ --update-config hello-world-config-update.json
      PowerShell
      C:\greengrass\v2\bin\greengrass-cli deployment create ` --merge "com.example.HelloWorld=1.0.0" ` --update-config hello-world-config-update.json
    4. Überprüfen Sie das Protokoll erneut, um zu überprüfen, ob die Hello World-Komponente die neue Nachricht ausgibt.

      Linux or Unix
      sudo tail -f /greengrass/v2/logs/com.example.HelloWorld.log
      Windows Command Prompt (CMD)
      type C:\greengrass\v2\logs\com.example.HelloWorld.log

      Der type Befehl schreibt den Inhalt der Datei in das Terminal. Führen Sie diesen Befehl mehrmals aus, um Änderungen in der Datei zu beobachten.

      PowerShell
      gc C:\greengrass\v2\logs\com.example.HelloWorld.log -Tail 10 -Wait

      Sie sollten Meldungen ähnlich dem folgenden Beispiel sehen.

      Hello, friend! Greetings from your first Greengrass component.
  13. Nachdem Sie Ihre Komponente getestet haben, entfernen Sie sie von Ihrem Core-Gerät. Führen Sie den folgenden Befehl aus.

    Linux or Unix
    sudo /greengrass/v2/bin/greengrass-cli deployment create --remove="com.example.HelloWorld"
    Windows Command Prompt (CMD)
    C:\greengrass\v2\bin\greengrass-cli deployment create --remove="com.example.HelloWorld"
    PowerShell
    C:\greengrass\v2\bin\greengrass-cli deployment create --remove="com.example.HelloWorld"
    Wichtig

    Dieser Schritt ist erforderlich, damit Sie die Komponente nach dem Hochladen auf wieder auf dem Core-Gerät bereitstellen können AWS IoT Greengrass. Andernfalls schlägt die Bereitstellung mit einem Versionskompatibilitätsfehler fehl, da die lokale Bereitstellung eine andere Version der Komponente angibt.

    Führen Sie den folgenden Befehl aus und stellen Sie sicher, dass die com.example.HelloWorld Komponente nicht in der Liste der Komponenten auf Ihrem Gerät angezeigt wird.

    Linux or Unix
    sudo /greengrass/v2/bin/greengrass-cli component list
    Windows Command Prompt (CMD)
    C:\greengrass\v2\bin\greengrass-cli component list
    PowerShell
    C:\greengrass\v2\bin\greengrass-cli component list

Ihre Hello-World-Komponente ist abgeschlossen und Sie können sie jetzt in den AWS IoT Greengrass Cloud-Service hochladen. Anschließend können Sie die Komponente auf Greengrass-Core-Geräten bereitstellen.