

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
<a name="create-first-component"></a>

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*.
+ <a name="component-recipe-definition"></a>**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](component-recipe-reference.md).

  Sie können Rezepte im [JSON](https://en.wikipedia.org/wiki/JSON) - oder [YAML-Format](https://en.wikipedia.org/wiki/YAML) definieren.
+ <a name="component-artifacts-definition"></a>**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 unter[AWS IoT Greengrass Komponenten entwickeln](develop-greengrass-components.md).

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. <a name="create-component-recipes-artifacts-folder-step"></a>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 *\$1/greengrassv2* oder *%USERPROFILE%\$1greengrassv2* 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
   ```

------

1. <a name="create-component-recipe-file-step"></a>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.

   <a name="nano-command-intro"></a>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**  
<a name="semver-para"></a>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](https://semver.org/).

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

1. 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**  <a name="local-artifact-folder-name-requirements"></a>
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/
   ```

1. Verwenden Sie einen Texteditor, um eine Python-Skript-Artefaktdatei für Ihre Hello World-Komponente zu erstellen.

   <a name="nano-command-intro"></a>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)
   ```

1. 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:\$1greengrass\$1v2* durch Ihren AWS IoT Greengrass V2 Stammordner und ersetzen Sie *\$1/greengrassv2* oder *%USERPROFILE%\$1greengrassv2* 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 in`artifacts`. Die `--merge` Option fügt die von Ihnen angegebene Komponente und Version hinzu oder aktualisiert sie.

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

   <a name="windows-cmd-type-observe-logs"></a>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.  

   ```
   sudo tail -f /greengrass/v2/logs/greengrass.log
   ```

   ```
   type C:\greengrass\v2\logs\greengrass.log
   ```
<a name="windows-cmd-type-observe-logs"></a>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.

   ```
   gc C:\greengrass\v2\logs\greengrass.log -Tail 10 -Wait
   ```

1. Ä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)
   ```

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

1. 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"
   ```

------

1. Ü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
   ```

   <a name="windows-cmd-type-observe-logs"></a>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.
   ```

1. 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](update-component-configurations.md).

   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

      <a name="nano-command-intro"></a>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
      ```

   1. 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"
          }
        }
      }
      ```

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

------

   1. Ü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
      ```

      <a name="windows-cmd-type-observe-logs"></a>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.
      ```

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