Schritt 5: Erstellen Sie Ihre Komponente im AWS IoT Greengrass Service - 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 5: Erstellen Sie Ihre Komponente im AWS IoT Greengrass Service

Wenn Sie mit der Entwicklung einer Komponente auf Ihrem Kerngerät fertig sind, können Sie sie in den AWS IoT Greengrass Dienst hochladen AWS Cloud. Sie können die Komponente auch direkt in der AWS IoT Greengrass Konsole erstellen. AWS IoT Greengrass bietet einen Komponentenverwaltungsdienst, der Ihre Komponenten hostet, sodass Sie sie auf einzelnen Geräten oder Geräteflotten bereitstellen können. Um eine Komponente in den AWS IoT Greengrass Dienst hochzuladen, führen Sie die folgenden Schritte aus:

  • Laden Sie Komponentenartefakte in einen S3-Bucket hoch.

  • Fügen Sie den Amazon Simple Storage Service (Amazon S3) jedes Artefakts URI zum Komponentenrezept hinzu.

  • Erstellen Sie eine Komponente AWS IoT Greengrass aus dem Komponentenrezept.

In diesem Abschnitt führen Sie diese Schritte auf Ihrem Greengrass-Core-Gerät aus, um Ihre Hello World-Komponente in den AWS IoT Greengrass Dienst hochzuladen.

  1. Verwenden Sie einen S3-Bucket in Ihrem AWS Konto, um AWS IoT Greengrass Komponentenartefakte zu hosten. Wenn Sie die Komponente auf einem Kerngerät bereitstellen, lädt das Gerät die Artefakte der Komponente aus dem Bucket herunter.

    Sie können einen vorhandenen S3-Bucket verwenden oder einen neuen Bucket erstellen.

    1. Wählen Sie in der Amazon S3 S3-Konsole unter Buckets die Option Create Bucket aus.

    2. Geben Sie als Bucket-Namen einen eindeutigen Bucket-Namen ein. Sie können beispielsweise die Datei greengrass-component-artifacts-region-123456789012 verwenden. Ersetzen 123456789012 mit Ihrer AWS Konto-ID und region mit der AWS-Region , die Sie für dieses Tutorial verwenden.

    3. Wählen Sie als AWS Region die AWS Region aus, die Sie für dieses Tutorial verwenden.

    4. Wählen Sie Bucket erstellen aus.

    5. Wählen Sie unter Buckets den Bucket aus, den Sie erstellt haben, und laden Sie das hello_world.py Skript in den artifacts/com.example.HelloWorld/1.0.0 Ordner im Bucket hoch. Informationen zum Hochladen von Objekten in S3-Buckets finden Sie unter Hochladen von Objekten im Amazon Simple Storage Service-Benutzerhandbuch.

    6. Kopieren Sie das S3 URI des hello_world.py Objekts in den S3-Bucket. Dies URI sollte dem folgenden Beispiel ähneln. Ersetzen Sie amzn-s3-demo-bucket durch den Namen des S3-Buckets.

      s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py
  2. Erlauben Sie dem Core-Gerät den Zugriff auf Komponentenartefakte im S3-Bucket.

    Jedes Kerngerät hat eine zentrale IAM Geräterolle, die es ihm ermöglicht, mit der Cloud zu interagieren AWS IoT und Logs an die AWS Cloud zu senden. Diese Geräterolle erlaubt standardmäßig keinen Zugriff auf S3-Buckets. Sie müssen also eine Richtlinie erstellen und anhängen, die es dem Kerngerät ermöglicht, Komponentenartefakte aus dem S3-Bucket abzurufen.

    Wenn die Rolle Ihres Geräts bereits den Zugriff auf den S3-Bucket ermöglicht, können Sie diesen Schritt überspringen. Andernfalls erstellen Sie eine IAM Richtlinie, die den Zugriff ermöglicht, und hängen Sie sie wie folgt an die Rolle an:

    1. Wählen Sie im Navigationsmenü der IAMKonsole Richtlinien und dann Richtlinie erstellen aus.

    2. Ersetzen Sie auf der JSONRegisterkarte den Platzhalterinhalt durch die folgende Richtlinie. Ersetzen Sie amzn-s3-demo-bucket durch den Namen des S3-Buckets, der Komponentenartefakte für das Kerngerät zum Herunterladen enthält.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*" } ] }
    3. Wählen Sie Weiter.

    4. Geben Sie im Abschnitt Richtliniendetails für Name den Text ein. MyGreengrassV2ComponentArtifactPolicy

    5. Wählen Sie Create Policy (Richtlinie erstellen) aus.

    6. Wählen Sie im Navigationsmenü der IAMKonsole die Option Rolle und dann den Namen der Rolle für das Kerngerät aus. Sie haben diesen Rollennamen bei der Installation der AWS IoT Greengrass Core-Software angegeben. Wenn Sie keinen Namen angegeben haben, lautet die StandardeinstellungGreengrassV2TokenExchangeRole.

    7. Wählen Sie unter Berechtigungen die Option Berechtigungen hinzufügen und anschließend Richtlinien anhängen aus.

    8. Aktivieren Sie auf der Seite Berechtigungen hinzufügen das Kontrollkästchen neben der MyGreengrassV2ComponentArtifactPolicy Richtlinie, die Sie erstellt haben, und wählen Sie dann Berechtigungen hinzufügen aus.

  3. Verwenden Sie das Komponentenrezept, um eine Komponente in der AWS IoT Greengrass Konsole zu erstellen.

    1. Wählen Sie im Navigationsmenü der AWS IoT Greengrass Konsole Komponenten und anschließend Komponente erstellen aus.

    2. Wählen Sie unter Komponenteninformationen die Option Rezeptur eingeben als ausJSON. Das Platzhalterrezept sollte dem folgenden Beispiel ähneln.

      { "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}\"" }, "Artifacts": [ { "URI": "s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py" } ] }, { "Platform": { "os": "windows" }, "Lifecycle": { "run": "py -3 -u {artifacts:path}/hello_world.py \"{configuration:/Message}\"" }, "Artifacts": [ { "URI": "s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py" } ] } ] }
    3. Ersetzen Sie den Platzhalter URI in jedem Artifacts Abschnitt durch S3 URI Ihres hello_world.py Objekts.

    4. Wählen Sie Komponente erstellen.

    5. Auf dem com.example. HelloWorldVergewissern Sie sich auf der Komponentenseite, dass der Status der Komponente Deployable lautet.

Um deine Hello World-Komponente hochzuladen
  1. Verwenden Sie einen S3-Bucket in Ihrem AWS-Konto , um AWS IoT Greengrass Komponentenartefakte zu hosten. Wenn Sie die Komponente auf einem Core-Gerät bereitstellen, lädt das Gerät die Artefakte der Komponente aus dem Bucket herunter.

    Sie können einen vorhandenen S3-Bucket verwenden oder den folgenden Befehl ausführen, um einen Bucket zu erstellen. Dieser Befehl erstellt einen Bucket mit Ihrer AWS-Konto ID und AWS-Region bildet einen eindeutigen Bucket-Namen. Ersetzen 123456789012 mit deiner AWS-Konto ID und region mit dem AWS-Region , das du für dieses Tutorial verwendest.

    aws s3 mb s3://greengrass-component-artifacts-123456789012-region

    Der Befehl gibt die folgenden Informationen aus, wenn die Anfrage erfolgreich ist.

    make_bucket: greengrass-component-artifacts-123456789012-region
  2. Erlauben Sie dem Core-Gerät den Zugriff auf Komponentenartefakte im S3-Bucket.

    Jedes Kerngerät hat eine zentrale IAM Geräterolle, die es ihm ermöglicht, mit dem zu interagieren AWS IoT und Protokolle an das zu senden AWS Cloud. Diese Geräterolle erlaubt standardmäßig keinen Zugriff auf S3-Buckets. Sie müssen also eine Richtlinie erstellen und anhängen, die es dem Kerngerät ermöglicht, Komponentenartefakte aus dem S3-Bucket abzurufen.

    Wenn die Rolle des Kerngeräts bereits den Zugriff auf den S3-Bucket ermöglicht, können Sie diesen Schritt überspringen. Andernfalls erstellen Sie eine IAM Richtlinie, die den Zugriff ermöglicht, und hängen Sie sie wie folgt an die Rolle an:

    1. Erstellen Sie eine Datei mit dem Namen component-artifact-policy.json und kopieren Sie Folgendes JSON in die Datei. Diese Richtlinie ermöglicht den Zugriff auf alle Dateien in einem S3-Bucket. Ersetzen Sie amzn-s3-demo-bucket durch den Namen des S3-Buckets.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*" } ] }
    2. Führen Sie den folgenden Befehl aus, um die Richtlinie aus dem Richtliniendokument in zu erstellen. component-artifact-policy.json

      Linux or Unix
      aws iam create-policy \\ --policy-name MyGreengrassV2ComponentArtifactPolicy \\ --policy-document file://component-artifact-policy.json
      Windows Command Prompt (CMD)
      aws iam create-policy ^ --policy-name MyGreengrassV2ComponentArtifactPolicy ^ --policy-document file://component-artifact-policy.json
      PowerShell
      aws iam create-policy ` --policy-name MyGreengrassV2ComponentArtifactPolicy ` --policy-document file://component-artifact-policy.json

      Kopieren Sie die Richtlinie Amazon Resource Name (ARN) aus den Richtlinienmetadaten in der Ausgabe. Sie verwenden diesARN, um diese Richtlinie im nächsten Schritt an die zentrale Geräterolle anzuhängen.

    3. Führen Sie den folgenden Befehl aus, um die Richtlinie an die zentrale Geräterolle anzuhängen. Ersetzen GreengrassV2TokenExchangeRole mit dem Namen der Rolle für das Kerngerät. Sie haben diesen Rollennamen bei der Installation der AWS IoT Greengrass Core-Software angegeben. Ersetzen Sie die Richtlinie ARN durch die Richtlinie ARN aus dem vorherigen Schritt.

      Linux or Unix
      aws iam attach-role-policy \\ --role-name GreengrassV2TokenExchangeRole \\ --policy-arn arn:aws:iam::123456789012:policy/MyGreengrassV2ComponentArtifactPolicy
      Windows Command Prompt (CMD)
      aws iam attach-role-policy ^ --role-name GreengrassV2TokenExchangeRole ^ --policy-arn arn:aws:iam::123456789012:policy/MyGreengrassV2ComponentArtifactPolicy
      PowerShell
      aws iam attach-role-policy ` --role-name GreengrassV2TokenExchangeRole ` --policy-arn arn:aws:iam::123456789012:policy/MyGreengrassV2ComponentArtifactPolicy

      Wenn der Befehl keine Ausgabe hat, war er erfolgreich. Das Core-Gerät kann jetzt auf Artefakte zugreifen, die Sie in diesen S3-Bucket hochladen.

  3. Laden Sie das Python-Skriptartefakt Hello World in den S3-Bucket hoch.

    Führen Sie den folgenden Befehl aus, um das Skript in denselben Pfad im Bucket hochzuladen, in dem sich das Skript auf Ihrem AWS IoT Greengrass Core befindet. Ersetzen Sie amzn-s3-demo-bucket durch den Namen des S3-Buckets.

    Linux or Unix
    aws s3 cp \ artifacts/com.example.HelloWorld/1.0.0/hello_world.py \ s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py
    Windows Command Prompt (CMD)
    aws s3 cp ^ artifacts/com.example.HelloWorld/1.0.0/hello_world.py ^ s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py
    PowerShell
    aws s3 cp ` artifacts/com.example.HelloWorld/1.0.0/hello_world.py ` s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py

    Der Befehl gibt eine Zeile aus, die mit „Wenn die Anfrage erfolgreich ist“ beginnt. upload:

  4. Fügen Sie Amazon S3 des Artefakts URI zum Komponentenrezept hinzu.

    Amazon S3 URI besteht aus dem Bucket-Namen und dem Pfad zum Artefaktobjekt im Bucket. Das Amazon S3 Ihres Skript-Artefakts URI ist dasURI, in das Sie das Artefakt im vorherigen Schritt hochgeladen haben. Dies URI sollte dem folgenden Beispiel ähneln. Ersetzen Sie amzn-s3-demo-bucket durch den Namen des S3-Buckets.

    s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py

    Um das Artefakt zum Rezept hinzuzufügen, fügen Sie eine Liste hinzu, Artifacts die eine Struktur mit dem Amazon S3 URI enthält.

    JSON
    "Artifacts": [ { "URI": "s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py" } ]

    Öffnen Sie die Rezeptdatei in einem Texteditor.

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

    nano recipes/com.example.HelloWorld-1.0.0.json

    Fügen Sie das Artefakt dem Rezept hinzu. Ihre Rezeptdatei sollte dem folgenden Beispiel ähneln.

    { "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}\"" }, "Artifacts": [ { "URI": "s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py" } ] }, { "Platform": { "os": "windows" }, "Lifecycle": { "run": "py -3 -u {artifacts:path}/hello_world.py \"{configuration:/Message}\"" }, "Artifacts": [ { "URI": "s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py" } ] } ] }
    YAML
    Artifacts: - URI: s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py

    Öffnen Sie die Rezeptdatei in einem Texteditor.

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

    nano recipes/com.example.HelloWorld-1.0.0.yaml

    Fügen Sie das Artefakt dem Rezept hinzu. Ihre Rezeptdatei sollte dem folgenden Beispiel ähneln.

    --- 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}" Artifacts: - URI: s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py - Platform: os: windows Lifecycle: run: | py -3 -u {artifacts:path}/hello_world.py "{configuration:/Message}" Artifacts: - URI: s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py
  5. Erstellen Sie eine Komponentenressource AWS IoT Greengrass aus dem Rezept. Führen Sie den folgenden Befehl aus, um die Komponente aus dem Rezept zu erstellen, das Sie als Binärdatei bereitstellen.

    JSON
    aws greengrassv2 create-component-version --inline-recipe fileb://recipes/com.example.HelloWorld-1.0.0.json
    YAML
    aws greengrassv2 create-component-version --inline-recipe fileb://recipes/com.example.HelloWorld-1.0.0.yaml

    Die Antwort ähnelt dem folgenden Beispiel, wenn die Anfrage erfolgreich ist.

    { "arn": "arn:aws:greengrass:region:123456789012:components:com.example.HelloWorld:versions:1.0.0", "componentName": "com.example.HelloWorld", "componentVersion": "1.0.0", "creationTimestamp": "Mon Nov 30 09:04:05 UTC 2020", "status": { "componentState": "REQUESTED", "message": "NONE", "errors": {} } }

    Kopieren Sie das arn aus der Ausgabe, um im nächsten Schritt den Status der Komponente zu überprüfen.

    Anmerkung

    Sie können Ihre Hello World-Komponente auch in der AWS IoT Greengrass Konsole auf der Komponentenseite sehen.

  6. Stellen Sie sicher, dass die Komponente erstellt wird und bereit ist, bereitgestellt zu werden. Wenn Sie eine Komponente erstellen, lautet ihr StatusREQUESTED. AWS IoT Greengrass Überprüft dann, ob die Komponente bereitgestellt werden kann. Sie können den folgenden Befehl ausführen, um den Status der Komponente abzufragen und zu überprüfen, ob Ihre Komponente bereitgestellt werden kann. Ersetzen Sie die arn durch die ARN aus dem vorherigen Schritt.

    aws greengrassv2 describe-component --arn "arn:aws:greengrass:region:123456789012:components:com.example.HelloWorld:versions:1.0.0"

    Wenn die Komponente validiert wird, gibt die Antwort an, dass der Status der Komponente lautetDEPLOYABLE.

    { "arn": "arn:aws:greengrass:region:123456789012:components:com.example.HelloWorld:versions:1.0.0", "componentName": "com.example.HelloWorld", "componentVersion": "1.0.0", "creationTimestamp": "2020-11-30T18:04:05.823Z", "publisher": "Amazon", "description": "My first Greengrass component.", "status": { "componentState": "DEPLOYABLE", "message": "NONE", "errors": {} }, "platforms": [ { "os": "linux", "architecture": "all" } ] }

Ihre Hello World-Komponente ist jetzt in AWS IoT Greengrass verfügbar. Sie können es wieder auf diesem Greengrass-Core-Gerät oder auf anderen Core-Geräten bereitstellen.