Erstellen von AWS IoT Greengrass Komponenten - 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.

Erstellen von AWS IoT Greengrass Komponenten

Sie können benutzerdefinierte AWS IoT Greengrass Komponenten auf einem lokalen Entwicklungscomputer oder einem Greengrass-Core-Gerät entwickeln. AWS IoT Greengrass stellt die AWS IoT Greengrass Development Kit Command-Line Interface (GDK CLI) bereit, um Sie beim Erstellen, Erstellen und Veröffentlichen von Komponenten aus vordefinierten Komponentenvorlagen und Community-Komponenten zu unterstützen. Sie können auch integrierte Shell-Befehle ausführen, um Komponenten zu erstellen, zu erstellen und zu veröffentlichen. Wählen Sie aus den folgenden Optionen, um benutzerdefinierte Greengrass-Komponenten zu erstellen:

  • Verwenden der Greengrass Development Kit CLI

    Verwenden Sie die GDK-CLI, um Komponenten auf einem lokalen Entwicklungscomputer zu entwickeln. Die GDK-CLI erstellt und verpackt Quellcode der Komponenten in ein Rezept und Artefakte, die Sie als private Komponente für den AWS IoT Greengrass Service veröffentlichen können. Sie können die GDK-CLI so konfigurieren, dass die Versions- und Artefakt-URIs der Komponente automatisch aktualisiert werden, wenn Sie die Komponente veröffentlichen, sodass Sie das Rezept nicht jedes Mal aktualisieren müssen. Um eine Komponente mit der GDK-CLI zu entwickeln, können Sie mit einer Vorlage oder einer Community-Komponente aus dem Greengrass Software Catalog beginnen. Weitere Informationen finden Sie unter AWS IoT Greengrass Befehlszeilenschnittstelle des Development Kit.

  • Ausführen von integrierten Shell-Befehlen

    Sie können integrierte Shell-Befehle ausführen, um Komponenten auf einem lokalen Entwicklungscomputer oder auf einem Greengrass-Core-Gerät zu entwickeln. Sie verwenden Shell-Befehle zum Kopieren oder Erstellen von Komponentenquellcode in Artefakte. Jedes Mal, wenn Sie eine neue Version einer Komponente erstellen, müssen Sie das Rezept mit der neuen Komponentenversion erstellen oder aktualisieren. Wenn Sie die Komponente im AWS IoT Greengrass Service veröffentlichen, müssen Sie den URI auf jedes Komponentenartefakt im Rezept aktualisieren.

Erstellen einer Komponente (GDK CLI)

Folgen Sie den Anweisungen in diesem Abschnitt, um eine Komponente mit der GDK-CLI zu erstellen und zu erstellen.

So entwickeln Sie eine Greengrass-Komponente (GDK CLI)
  1. Falls noch nicht geschehen, installieren Sie die GDK-CLI auf Ihrem Entwicklungscomputer. Weitere Informationen finden Sie unter Installieren oder Aktualisieren der AWS IoT Greengrass Development-Kit-Befehlszeilenschnittstelle.

  2. Wechseln Sie zu dem Ordner, in dem Sie Komponentenordner erstellen möchten.

    Linux or Unix
    mkdir ~/greengrassv2 cd ~/greengrassv2
    Windows Command Prompt (CMD)
    mkdir %USERPROFILE%\greengrassv2 cd %USERPROFILE%\greengrassv2
    PowerShell
    mkdir ~/greengrassv2 cd ~/greengrassv2
  3. Wählen Sie eine Komponentenvorlage oder Community-Komponente zum Herunterladen aus. Die GDK-CLI lädt die Vorlage oder die Community-Komponente herunter, sodass Sie von einem funktionierenden Beispiel ausgehen können. Verwenden Sie den Komponentenlistenbefehl, um die Liste der verfügbaren Vorlagen oder Community-Komponenten abzurufen.

    • Führen Sie den folgenden Befehl aus, um Komponentenvorlagen aufzulisten. Jede Zeile in der Antwort enthält den Namen und die Programmiersprache einer Vorlage.

      gdk component list --template
    • Führen Sie den folgenden Befehl aus, um Community-Komponenten aufzulisten.

      gdk component list --repository
  4. Erstellen Sie einen Komponentenordner, in dem die GDK-CLI die Vorlage oder die Community-Komponente herunterlädt, und ändern Sie ihn. Ersetzen Sie HelloWorld durch den Namen der Komponente oder einen anderen Namen, der Ihnen hilft, diesen Komponentenordner zu identifizieren.

    Linux or Unix
    mkdir HelloWorld cd HelloWorld
    Windows Command Prompt (CMD)
    mkdir HelloWorld cd HelloWorld
    PowerShell
    mkdir HelloWorld cd HelloWorld
  5. Laden Sie die Vorlage oder die Community-Komponente in den aktuellen Ordner herunter. Verwenden Sie den Befehl component init.

    • Führen Sie den folgenden Befehl aus, um einen Komponentenordner aus einer Vorlage zu erstellen. Ersetzen Sie HelloWorld durch den Namen der Vorlage und ersetzen Sie Python durch den Namen der Programmiersprache.

      gdk component init --template HelloWorld --language python
    • Führen Sie den folgenden Befehl aus, um einen Komponentenordner aus einer Community-Komponente zu erstellen. Ersetzen Sie ComponentName durch den Namen der Community-Komponente.

      gdk component init --repository ComponentName
    Anmerkung

    Wenn Sie GDK CLI v1.0.0 verwenden, müssen Sie diesen Befehl in einem leeren Ordner ausführen. Die GDK-CLI lädt die Vorlage oder die Community-Komponente in den aktuellen Ordner herunter.

    Wenn Sie GDK CLI v1.1.0 oder höher verwenden, können Sie das --name Argument angeben, um den Ordner anzugeben, in den die GDK CLI die Vorlage oder Community-Komponente herunterlädt. Wenn Sie dieses Argument verwenden, geben Sie einen Ordner an, der nicht vorhanden ist. Die GDK-CLI erstellt den Ordner für Sie. Wenn Sie dieses Argument nicht angeben, verwendet die GDK-CLI den aktuellen Ordner, der leer sein muss.

  6. Die GDK-CLI liest aus der GDK-CLI-Konfigurationsdatei mit dem Namen gdk-config.json, um Komponenten zu erstellen und zu veröffentlichen. Diese Konfigurationsdatei ist im Stammverzeichnis des Komponentenordners vorhanden. Im vorherigen Schritt wird diese Datei für Sie erstellt. In diesem Schritt aktualisieren Sie gdk-config.json mit Informationen zu Ihrer Komponente. Gehen Sie wie folgt vor:

    1. Öffnen Sie gdk-config.json in einem Texteditor.

    2. (Optional) Ändern Sie den Namen der Komponente. Der Komponentenname ist der Schlüssel im component Objekt.

    3. Ändern Sie den Autor der Komponente.

    4. (Optional) Ändern Sie die Version der Komponente. Geben Sie eines der folgenden Elemente an:

      • NEXT_PATCH – Wenn Sie diese Option wählen, legt die GDK-CLI die Version fest, wenn Sie die Komponente veröffentlichen. Die GDK-CLI fragt den AWS IoT Greengrass Service ab, um die neueste veröffentlichte Version der Komponente zu identifizieren. Anschließend wird die Version auf die nächste Patch-Version nach dieser Version festgelegt. Wenn Sie die Komponente noch nicht veröffentlicht haben, verwendet die GDK-CLI Version 1.0.0.

        Wenn Sie diese Option wählen, können Sie die Greengrass-CLI nicht verwenden, um die Komponente lokal auf Ihrem lokalen Entwicklungscomputer bereitzustellen und zu testen, auf dem die AWS IoT Greengrass Core-Software ausgeführt wird. Um lokale Bereitstellungen zu aktivieren, müssen Sie stattdessen eine semantische Version angeben.

      • Eine semantische Version, z. B. 1.0.0. Semantische Versionen verwenden ein Hauptversions-.Nebenversions-.Patch-Nummerierungssystem. Weitere Informationen finden Sie in der semantischen Versionsspezifikation .

        Wenn Sie Komponenten auf einem Greengrass-Core-Gerät entwickeln, auf dem Sie die Komponente bereitstellen und testen möchten, wählen Sie diese Option. Sie müssen die Komponente mit einer bestimmten Version erstellen, um lokale Bereitstellungen mit der Greengrass-CLI zu erstellen.

    5. (Optional) Ändern Sie die Build-Konfiguration für die Komponente. Die Build-Konfiguration definiert, wie die GDK-CLI die Quelle der Komponente in Artefakte umwandelt. Wählen Sie aus den folgenden Optionen für build_system:

      • zip – Verpackt den Ordner der Komponente in eine ZIP-Datei, um als einziges Artefakt der Komponente zu definieren. Wählen Sie diese Option für die folgenden Komponententypen aus:

        • Komponenten, die interpretierte Programmiersprachen verwenden, wie Python oder JavaScript.

        • Komponenten, die andere Dateien als Code verpacken, z. B. Machine-Learning-Modelle oder andere Ressourcen.

        Die GDK-CLI komprimiert den Ordner der Komponente in eine ZIP-Datei mit demselben Namen wie der Komponentenordner. Wenn der Name des Komponentenordners beispielsweise lautetHelloWorld, erstellt die GDK-CLI eine ZIP-Datei mit dem Namen HelloWorld.zip.

        Anmerkung

        Wenn Sie GDK CLI Version 1.0.0 auf einem Windows-Gerät verwenden, dürfen der Komponentenordner und die ZIP-Dateinamen nur Kleinbuchstaben enthalten.

        Wenn die GDK-CLI den Ordner der Komponente in eine ZIP-Datei komprimiert, überspringt sie die folgenden Dateien:

        • Die Datei gdk-config.json

        • Die Rezeptdatei (recipe.json oder recipe.yaml)

        • Erstellen von Ordnern, z. B. greengrass-build

      • maven – Führt den mvn clean package Befehl aus, um die Quelle der Komponente in Artefakte zu erstellen. Wählen Sie diese Option für Komponenten aus, die Maven verwenden, z. B. Java-Komponenten.

        Auf Windows-Geräten ist diese Funktion für GDK CLI v1.1.0 und höher verfügbar.

      • gradle – Führt den gradle build Befehl aus, um die Quelle der Komponente in Artefakte zu erstellen. Wählen Sie diese Option für Komponenten aus, die Gradle verwenden. Diese Funktion ist für GDK CLI v1.1.0 und höher verfügbar.

        Das gradle Build-System unterstützt Kotlin DSL als Build-Datei. Diese Funktion ist für GDK CLI v1.2.0 und höher verfügbar.

      • gradlew – Führt den gradlew Befehl aus, um die Quelle der Komponente in Artefakte zu erstellen. Wählen Sie diese Option für Komponenten aus, die den Gradle Wrapper verwenden.

        Diese Funktion ist für GDK CLI v1.2.0 und höher verfügbar.

      • custom – Führt einen benutzerdefinierten Befehl aus, um die Quelle der Komponente in ein Rezept und Artefakte zu integrieren. Geben Sie den benutzerdefinierten Befehl im custom_build_command Parameter an.

    6. Wenn Sie custom für angebenbuild_system, fügen Sie dem build Objekt custom_build_command hinzu. Geben Sie custom_build_commandin eine einzelne Zeichenfolge oder eine Liste von Zeichenfolgen an, wobei jede Zeichenfolge ein Wort im Befehl ist. Um beispielsweise einen benutzerdefinierten Build-Befehl für eine C++-Komponente auszuführen, können Sie angeben["cmake", "--build", "build", "--config", "Release"].

    7. Wenn Sie GDK CLI v1.1.0 oder höher verwenden, können Sie das --bucket Argument angeben, um den S3-Bucket anzugeben, in den die GDK CLI die Artefakte der Komponente hochlädt. Wenn Sie dieses Argument nicht angeben, lädt die GDK-CLI in den S3-Bucket hoch, dessen Name lautetbucket-region-accountId, wobei Bucket und Region die Werte sind, die Sie in angebengdk-config.json, und accountId Ihre AWS-Konto -ID ist. Die GDK-CLI erstellt den Bucket, wenn er nicht vorhanden ist.

      Ändern Sie die Veröffentlichungskonfiguration für die Komponente. Gehen Sie wie folgt vor:

      1. Geben Sie den Namen des S3-Buckets an, der zum Hosten von Komponentenartefakten verwendet werden soll.

      2. Geben Sie die an AWS-Region , in der die GDK-CLI die Komponente veröffentlicht.

    Wenn Sie mit diesem Schritt fertig sind, könnte die gdk-config.json Datei ähnlich wie im folgenden Beispiel aussehen.

    { "component": { "com.example.PythonHelloWorld": { "author": "Amazon", "version": "NEXT_PATCH", "build": { "build_system" : "zip" }, "publish": { "bucket": "greengrass-component-artifacts", "region": "us-west-2" } } }, "gdk_version": "1.0.0" }
  7. Aktualisieren Sie die Komponentenrezeptdatei mit dem Namen recipe.yaml oder recipe.json. Gehen Sie wie folgt vor:

    1. Wenn Sie eine Vorlage oder Community-Komponente heruntergeladen haben, die das zip Build-System verwendet, überprüfen Sie, ob der Name des ZIP-Artefakts mit dem Namen des Komponentenordners übereinstimmt. Die GDK-CLI komprimiert den Komponentenordner in eine ZIP-Datei mit demselben Namen wie der Komponentenordner. Das Rezept enthält den Namen des ZIP-Artefakts in der Liste der Komponentenartefakte und in Lebenszyklusskripten, die Dateien im ZIP-Artefakt verwenden. Aktualisieren Sie die Lifecycle Definitionen Artifacts und so, dass der ZIP-Dateiname mit dem Namen des Komponentenordners übereinstimmt. In den folgenden partiellen Rezeptbeispielen wird der ZIP-Dateiname in den Lifecycle Definitionen Artifacts und hervorgehoben.

      JSON
      { ... "Manifests": [ { "Platform": { "os": "all" }, "Artifacts": [ { "URI": "s3://{COMPONENT_NAME}/{COMPONENT_VERSION}/HelloWorld.zip", "Unarchive": "ZIP" } ], "Lifecycle": { "run": "python3 -u {artifacts:decompressedPath}/HelloWorld/main.py {configuration:/Message}" } } ] }
      YAML
      --- ... Manifests: - Platform: os: all Artifacts: - URI: "s3://BUCKET_NAME/COMPONENT_NAME/COMPONENT_VERSION/HelloWorld.zip" Unarchive: ZIP Lifecycle: run: "python3 -u {artifacts:decompressedPath}/HelloWorld/main.py {configuration:/Message}"
    2. (Optional) Aktualisieren Sie die Beschreibung der Komponente, die Standardkonfiguration, Artefakte, Lebenszyklusskripte und die Plattformunterstützung. Weitere Informationen finden Sie unter AWS IoT Greengrass Referenz zum Komponenten-Rezept.

    Wenn Sie mit diesem Schritt fertig sind, könnte die Rezeptdatei den folgenden Beispielen ähneln.

    JSON
    { "RecipeFormatVersion": "2020-01-25", "ComponentName": "{COMPONENT_NAME}", "ComponentVersion": "{COMPONENT_VERSION}", "ComponentDescription": "This is a simple Hello World component written in Python.", "ComponentPublisher": "{COMPONENT_AUTHOR}", "ComponentConfiguration": { "DefaultConfiguration": { "Message": "World" } }, "Manifests": [ { "Platform": { "os": "all" }, "Artifacts": [ { "URI": "s3://{COMPONENT_NAME}/{COMPONENT_VERSION}/HelloWorld.zip", "Unarchive": "ZIP" } ], "Lifecycle": { "run": "python3 -u {artifacts:decompressedPath}/HelloWorld/main.py {configuration:/Message}" } } ] }
    YAML
    --- RecipeFormatVersion: "2020-01-25" ComponentName: "{COMPONENT_NAME}" ComponentVersion: "{COMPONENT_VERSION}" ComponentDescription: "This is a simple Hello World component written in Python." ComponentPublisher: "{COMPONENT_AUTHOR}" ComponentConfiguration: DefaultConfiguration: Message: "World" Manifests: - Platform: os: all Artifacts: - URI: "s3://BUCKET_NAME/COMPONENT_NAME/COMPONENT_VERSION/HelloWorld.zip" Unarchive: ZIP Lifecycle: run: "python3 -u {artifacts:decompressedPath}/HelloWorld/main.py {configuration:/Message}"
  8. Entwickeln und erstellen Sie die Greengrass-Komponente. Der Befehl component build erzeugt ein Rezept und Artefakte im greengrass-build Ordner im Komponentenordner. Führen Sie den folgenden Befehl aus.

    gdk component build

Wenn Sie bereit sind, Ihre Komponente zu testen, verwenden Sie die GDK-CLI, um sie im AWS IoT Greengrass Service zu veröffentlichen. Anschließend können Sie die Komponente auf Greengrass-Core-Geräten bereitstellen. Weitere Informationen finden Sie unter Veröffentlichen Sie Komponenten zur Bereitstellung auf Ihren Kerngeräten.

Erstellen einer Komponente (Shell-Befehle)

Folgen Sie den Anweisungen in diesem Abschnitt, um Rezept- und Artefaktordner zu erstellen, die Quellcode und Artefakte für mehrere Komponenten enthalten.

So entwickeln Sie eine Greengrass-Komponente (Shell-Befehle)
  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. Definieren Sie das Rezept für Ihre Komponente. Weitere Informationen finden Sie unter AWS IoT Greengrass Referenz zum Komponenten-Rezept.

    Ihr Rezept könnte dem folgenden Hello World-Beispielrezept ähneln.

    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}"

    Dieses Rezept führt ein Hello World Python-Skript aus, das dem folgenden Beispielskript ähneln könnte.

    import sys message = "Hello, %s!" % sys.argv[1] # Print the message to stdout, which Greengrass saves in a log file. print(message)
  4. Erstellen Sie einen Ordner für die zu entwickelnde Komponentenversion. Wir empfehlen Ihnen, für die Artefakte jeder Komponentenversion einen separaten Ordner zu verwenden, damit Sie ermitteln können, welche Artefakte für jede Komponentenversion gelten. Führen Sie den folgenden Befehl aus.

    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. Erstellen Sie die Artefakte für Ihre Komponente in dem Ordner, den Sie im vorherigen Schritt erstellt haben. Artefakte können Software, Bilder und andere Binärdateien enthalten, die Ihre Komponente verwendet.

    Wenn Ihre Komponente bereit ist, testen Sie Ihre Komponente .