Fase 5: Crea il tuo componente nel AWS IoT Greengrass servizio - AWS IoT Greengrass

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Fase 5: Crea il tuo componente nel AWS IoT Greengrass servizio

Quando finisci di sviluppare un componente sul tuo dispositivo principale, puoi caricarlo sul AWS IoT Greengrass servizio in Cloud AWS. Puoi anche creare direttamente il componente nella AWS IoT Greengrass console. AWS IoT Greengrass fornisce un servizio di gestione dei componenti che ospita i componenti in modo da poterli distribuire su singoli dispositivi o flotte di dispositivi. Per caricare un componente nel AWS IoT Greengrass servizio, è necessario completare i seguenti passaggi:

  • Carica gli artefatti dei componenti in un bucket S3.

  • Aggiungi Amazon Simple Storage Service (Amazon URI S3) di ogni elemento alla ricetta del componente.

  • Crea un componente AWS IoT Greengrass dalla ricetta del componente.

In questa sezione, completa questi passaggi sul tuo dispositivo principale Greengrass per caricare il componente Hello World sul AWS IoT Greengrass servizio.

  1. Usa un bucket S3 nel tuo AWS account per ospitare gli artefatti AWS IoT Greengrass dei componenti. Quando distribuisci il componente su un dispositivo principale, il dispositivo scarica gli artefatti del componente dal bucket.

    Puoi usare un bucket S3 esistente oppure puoi crearne uno nuovo.

    1. Nella console Amazon S3, in Bucket, scegli Crea bucket.

    2. Per Bucket name, inserisci un nome di bucket univoco. Per esempio, è possibile utilizzare greengrass-component-artifacts-region-123456789012. Replace (Sostituisci) 123456789012 con l'ID del tuo AWS account e region con quello Regione AWS che usi per questo tutorial.

    3. Per la AWS regione, seleziona la AWS regione che usi per questo tutorial.

    4. Seleziona Crea bucket.

    5. In Bucket, scegli il bucket che hai creato, carica hello_world.py lo script nella artifacts/com.example.HelloWorld/1.0.0 cartella all'interno del bucket. Per informazioni sul caricamento di oggetti nei bucket S3, consulta Caricamento di oggetti nella Amazon Simple Storage Service User Guide.

    6. Copia l'S3 URI dell'hello_world.pyoggetto nel bucket S3. URIDovrebbe essere simile all'esempio seguente. Sostituisci amzn-s3-demo-bucket con il nome del bucket S3.

      s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py
  2. Consenti al dispositivo principale di accedere agli artefatti dei componenti nel bucket S3.

    Ogni dispositivo principale ha un IAMruolo principale che gli consente di interagire AWS IoT e inviare i log al Cloud. AWS Per impostazione predefinita, questo ruolo del dispositivo non consente l'accesso ai bucket S3, quindi è necessario creare e allegare una policy che consenta al dispositivo principale di recuperare gli artefatti dei componenti dal bucket S3.

    Se il ruolo del tuo dispositivo consente già l'accesso al bucket S3, puoi saltare questo passaggio. Altrimenti, crea una IAM policy che consenta l'accesso e collegala al ruolo, come segue:

    1. Nel menu di navigazione della IAMconsole, scegli Politiche, quindi scegli Crea policy.

    2. Nella JSONscheda, sostituisci il contenuto segnaposto con la seguente politica. Sostituisci amzn-s3-demo-bucket con il nome del bucket S3 che contiene gli artefatti dei componenti per il dispositivo principale da scaricare.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*" } ] }
    3. Scegli Next (Successivo).

    4. Nella sezione Dettagli della politica, per Nome, inserisci. MyGreengrassV2ComponentArtifactPolicy

    5. Scegli Create Policy (Crea policy).

    6. Nel menu di navigazione della IAMconsole, scegli Ruolo, quindi scegli il nome del ruolo per il dispositivo principale. Hai specificato questo nome di ruolo quando hai installato il software AWS IoT Greengrass Core. Se non hai specificato un nome, l'impostazione predefinita èGreengrassV2TokenExchangeRole.

    7. In Autorizzazioni, scegli Aggiungi autorizzazioni, quindi scegli Allega politiche.

    8. Nella pagina Aggiungi autorizzazioni, seleziona la casella di controllo accanto alla MyGreengrassV2ComponentArtifactPolicy politica che hai creato, quindi scegli Aggiungi autorizzazioni.

  3. Usa la ricetta del componente per creare un componente nella AWS IoT Greengrass console.

    1. Nel menu di navigazione della AWS IoT Greengrass console, scegli Componenti, quindi scegli Crea componente.

    2. In Informazioni sui componenti, scegli Inserisci ricetta come JSON. La ricetta segnaposto dovrebbe essere simile all'esempio seguente.

      { "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. Sostituisci il segnaposto URI in ogni Artifacts sezione con URI S3 del tuo oggetto. hello_world.py

    4. Scegli Crea componente.

    5. Sul com.example. HelloWorldpagina del componente, verifica che lo stato del componente sia Implementabile.

Per caricare il tuo componente Hello World
  1. Usa un bucket S3 Account AWS per ospitare gli artefatti AWS IoT Greengrass dei componenti. Quando distribuisci il componente su un dispositivo principale, il dispositivo scarica gli artefatti del componente dal bucket.

    Puoi utilizzare un bucket S3 esistente o eseguire il seguente comando per creare un bucket. Questo comando crea un bucket con il tuo Account AWS ID e Regione AWS per formare un nome di bucket univoco. Replace (Sostituisci) 123456789012 con il tuo ID Account AWS e region con quello Regione AWS che usi per questo tutorial.

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

    Il comando restituisce le seguenti informazioni se la richiesta ha esito positivo.

    make_bucket: greengrass-component-artifacts-123456789012-region
  2. Consenti al dispositivo principale di accedere agli artefatti dei componenti nel bucket S3.

    Ogni dispositivo principale ha un IAMruolo principale che gli consente di interagire AWS IoT e inviare log a. Cloud AWS Per impostazione predefinita, questo ruolo del dispositivo non consente l'accesso ai bucket S3, quindi è necessario creare e allegare una policy che consenta al dispositivo principale di recuperare gli artefatti dei componenti dal bucket S3.

    Se il ruolo del dispositivo principale consente già l'accesso al bucket S3, puoi saltare questo passaggio. Altrimenti, crea una IAM policy che consenta l'accesso e collegala al ruolo, come segue:

    1. Create un file chiamato component-artifact-policy.json e copiate quanto segue JSON nel file. Questa politica consente l'accesso a tutti i file in un bucket S3. Sostituisci amzn-s3-demo-bucket con il nome del bucket S3.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*" } ] }
    2. Esegui il seguente comando per creare la politica dal documento di policy in. 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

      Copia la policy Amazon Resource Name (ARN) dai metadati della policy nell'output. Lo usi ARN per collegare questa policy al ruolo principale del dispositivo nella fase successiva.

    3. Esegui il comando seguente per allegare la policy al ruolo principale del dispositivo. Replace (Sostituisci) GreengrassV2TokenExchangeRole con il nome del ruolo per il dispositivo principale. Hai specificato questo nome di ruolo quando hai installato il software AWS IoT Greengrass Core. Sostituisci la politica ARN con ARN quella del passaggio precedente.

      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

      Se il comando non ha alcun risultato, è stato eseguito correttamente. Il dispositivo principale può ora accedere agli artefatti caricati in questo bucket S3.

  3. Carica l'elemento dello script Hello World Python nel bucket S3.

    Esegui il comando seguente per caricare lo script nello stesso percorso nel bucket in cui lo script si trova nel core. AWS IoT Greengrass Sostituisci amzn-s3-demo-bucket con il nome del bucket S3.

    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

    Il comando genera una riga che inizia con se la richiesta ha esito positivo. upload:

  4. Aggiungi Amazon URI S3 dell'artefatto alla ricetta del componente.

    Amazon S3 URI è composto dal nome del bucket e dal percorso dell'oggetto artefatto nel bucket. Amazon URI S3 del tuo elemento di script è quello in cui carichi URI l'artefatto nel passaggio precedente. URIDovrebbe essere simile all'esempio seguente. Sostituisci amzn-s3-demo-bucket con il nome del bucket S3.

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

    Per aggiungere l'artefatto alla ricetta, aggiungi un elenco Artifacts contenente una struttura con Amazon S3. URI

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

    Apri il file della ricetta in un editor di testo.

    Ad esempio, su un sistema basato su Linux, è possibile eseguire il comando seguente per utilizzare GNU nano per creare il file.

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

    Aggiungi l'artefatto alla ricetta. Il file della ricetta dovrebbe essere simile all'esempio seguente.

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

    Aprite il file delle ricette in un editor di testo.

    Ad esempio, su un sistema basato su Linux, è possibile eseguire il comando seguente per utilizzare GNU nano per creare il file.

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

    Aggiungi l'artefatto alla ricetta. Il file della ricetta dovrebbe essere simile all'esempio seguente.

    --- 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. Crea una risorsa componente AWS IoT Greengrass dalla ricetta. Eseguite il comando seguente per creare il componente dalla ricetta, che fornite come file binario.

    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

    La risposta è simile all'esempio seguente se la richiesta ha esito positivo.

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

    Copia il file arn dall'output per verificare lo stato del componente nel passaggio successivo.

    Nota

    Puoi anche vedere il tuo componente Hello World nella AWS IoT Greengrass console nella pagina Componenti.

  6. Verifica che il componente sia stato creato e sia pronto per essere distribuito. Quando create un componente, il suo stato èREQUESTED. Quindi, AWS IoT Greengrass verifica che il componente sia implementabile. È possibile eseguire il comando seguente per interrogare lo stato del componente e verificare che il componente sia distribuibile. Sostituisci il file arn con quello ARN del passaggio precedente.

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

    Se il componente viene convalidato, la risposta indica che lo stato del componente èDEPLOYABLE.

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

Il tuo componente Hello World è ora disponibile in AWS IoT Greengrass. Puoi reinstallarlo su questo dispositivo principale Greengrass o su altri dispositivi principali.