Schritt 4: Entwickeln und testen Sie eine 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 Sie eine Komponente auf Ihrem Gerät

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

  • Rezepte

    Jede Komponente enthält eine Rezeptdatei, die ihre Metadaten definiert. Das Rezept spezifiziert auch die Konfigurationsparameter, die Komponentenabhängigkeiten, den Lebenszyklus und die Plattformkompatibilität der Komponente. Der Komponentenlebenszyklus definiert die Befehle, mit denen die Komponente installiert, ausgeführt und heruntergefahren wird. 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 Skripts, kompilierten Code, statische Ressourcen und alle anderen Dateien umfassen, die eine Komponente verwendet. 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-Core-Gerät ohne Interaktion mit der AWS Cloud zu entwickeln und zu testen. Wenn Sie Ihre lokale Komponente fertiggestellt 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 all Ihren Greengrass-Kerngeräten bereitzustellen. Weitere Informationen zu Komponenten finden Sie unterAWS IoT Greengrass Komponenten entwickeln.

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

Um eine Hello World-Komponente auf Ihrem Gerät zu entwickeln
  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 zu dem 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 Plattformfähigkeit Ihrer Komponente definiert. Nehmen Sie die Komponentenversion in den Namen der Rezeptdatei auf, damit Sie erkennen können, welches Rezept welche Komponentenversion widerspiegelt. Sie können das YAML- oder das JSON-Format für Ihr Rezept wählen.

    Auf einem Linux-basierten System können Sie beispielsweise den folgenden Befehl ausführen, um die Datei mit GNU Nano zu erstellen.

    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 Hauptteil. geringfügig. Patch-Nummernsystem. Version 1.0.0 steht beispielsweise für die erste Hauptversion einer Komponente. 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 ist. world 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-Core-Gerä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 Artefaktordnerpfad verwenden. Geben Sie den Komponentennamen und die Version an, die Sie im Rezept angeben.

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

    Auf einem Linux-basierten System können Sie beispielsweise den folgenden Befehl ausführen, um die Datei mit GNU Nano zu erstellen.

    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-Core-Gerä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 Entwicklungsordner für Komponenten.

    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 verwendet, recipes und das Python-Skript inartifacts. Die --merge Option fügt die von Ihnen angegebene Komponente und Version hinzu oder aktualisiert sie.

  7. Die AWS IoT Greengrass Core-Software speichert Standarddaten 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 sehen, die dem folgenden Beispiel ähneln.

    Hello, world!
    Anmerkung

    Wenn die Datei nicht existiert, 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 nicht gültig ist. Führen Sie den folgenden Befehl aus, um die AWS IoT Greengrass Kernprotokolldatei anzuzeigen. Diese Datei enthält Protokolle vom Bereitstellungsdienst 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 auf 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 die Datei hello_world.py in einem Texteditor und fügen Sie in Zeile 4 den folgenden Code 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 Kerngerä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 sicherzustellen, dass die Hello World-Komponente die neue Nachricht 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 sehen, die dem folgenden Beispiel ähneln.

    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 ein Konfigurationsupdate angeben, das definiert, wie die Konfiguration der Komponente auf dem Kerngerät geändert werden soll. Sie können angeben, welche Konfigurationswerte auf die Standardwerte zurückgesetzt werden sollen und welche neuen Konfigurationswerte auf dem Kerngerä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 hello-world-config-update.json zu erstellen, die das Konfigurationsupdate enthält

      Auf einem Linux-basierten System können Sie beispielsweise den folgenden Befehl ausführen, um die Datei mit GNU Nano zu erstellen.

      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 ein Konfigurationsupdate, das den Wert friend mit dem Message Parameter zusammenführt, um seinen Wert zu aktualisieren. Dieses Konfigurationsupdate spezifiziert keine Werte, die zurückgesetzt werden sollen. Sie müssen den Message Parameter nicht zurücksetzen, da das Merge-Update 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 sicherzustellen, dass 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 sehen, die dem folgenden Beispiel ähneln.

      Hello, friend! Greetings from your first Greengrass component.
  13. Wenn Sie mit dem Testen Ihrer Komponente fertig sind, entfernen Sie sie von Ihrem Kerngerä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 wieder auf dem Kerngerät bereitstellen können AWS IoT Greengrass. Andernfalls schlägt die Bereitstellung mit einem Versionskompatibilitätsfehler fehl, da bei der lokalen Bereitstellung eine andere Version der Komponente angegeben ist.

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

    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 fertig und Sie können sie jetzt in den AWS IoT Greengrass Cloud-Dienst hochladen. Anschließend können Sie die Komponente auf Greengrass-Kerngeräten bereitstellen.