Paso 5: Cree su componente en el AWS IoT Greengrass servicio - AWS IoT Greengrass

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Paso 5: Cree su componente en el AWS IoT Greengrass servicio

Cuando termine de desarrollar un componente en su dispositivo principal, podrá cargarlo en el AWS IoT Greengrass servicio del Nube de AWS. También puede crear el componente directamente en la AWS IoT Greengrass consola. AWS IoT Greengrass proporciona un servicio de administración de componentes que aloja sus componentes para que pueda desplegarlos en dispositivos individuales o en flotas de dispositivos. Para cargar un componente al AWS IoT Greengrass servicio, siga estos pasos:

  • Cargue los artefactos de los componentes a un depósito de S3.

  • Añada el Amazon Simple Storage Service (Amazon S3) de cada artefacto a la URI receta del componente.

  • Cree un componente a AWS IoT Greengrass partir de la receta del componente.

En esta sección, debe completar estos pasos en su dispositivo principal de Greengrass para cargar su componente Hello World en el AWS IoT Greengrass servicio.

  1. Utilice un depósito de S3 en su AWS cuenta para alojar los artefactos de los AWS IoT Greengrass componentes. Al implementar el componente en un dispositivo principal, el dispositivo descarga los artefactos del componente del depósito.

    Puede usar un depósito de S3 existente o puede crear uno nuevo.

    1. En la consola Amazon S3, en Buckets, selecciona Create bucket.

    2. En el nombre del bucket, introduzca un nombre de bucket único. Por ejemplo, puede utilizar greengrass-component-artifacts-region-123456789012. Reemplazar 123456789012 con tu ID AWS de cuenta y region con el Región de AWS que utilizas para este tutorial.

    3. Para AWS la región, seleccione la AWS región que utilice para este tutorial.

    4. Elija Crear bucket.

    5. En Buckets, elige el bucket que has creado y carga el hello_world.py script en la artifacts/com.example.HelloWorld/1.0.0 carpeta del bucket. Para obtener información sobre cómo cargar objetos en buckets de S3, consulte Carga de objetos en la Guía del usuario de Amazon Simple Storage Service.

    6. Copia el S3 URI del hello_world.py objeto en el bucket de S3. URIDebería tener un aspecto similar al del siguiente ejemplo. Sustituya amzn-s3-demo-bucket por el nombre del bucket S3.

      s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py
  2. Permita que el dispositivo principal acceda a los artefactos de los componentes del bucket de S3.

    Cada dispositivo principal tiene una IAMfunción de dispositivo principal que le permite interactuar con los registros AWS IoT y enviarlos a la AWS nube. Esta función de dispositivo no permite el acceso a los depósitos de S3 de forma predeterminada, por lo que debe crear y adjuntar una política que permita al dispositivo principal recuperar los artefactos de los componentes del depósito de S3.

    Si la función de tu dispositivo ya te permite acceder al bucket de S3, puedes saltarte este paso. De lo contrario, crea una IAM política que permita el acceso y asójala al rol, de la siguiente manera:

    1. En el menú de navegación de la IAMconsola, elija Políticas y, a continuación, elija Crear política.

    2. En la JSONpestaña, sustituye el contenido del marcador de posición por la siguiente política. Sustituya amzn-s3-demo-bucket por el nombre del depósito de S3 que contiene los artefactos componentes para su descarga en el dispositivo principal.

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

    4. En la sección de detalles de la política, escriba Nombre. MyGreengrassV2ComponentArtifactPolicy

    5. Elija Crear política.

    6. En el menú de navegación de la IAMconsola, elija Función y, a continuación, elija el nombre de la función para el dispositivo principal. Especificó este nombre de función al instalar el software AWS IoT Greengrass principal. Si no especificó ningún nombre, el nombre predeterminado esGreengrassV2TokenExchangeRole.

    7. En Permisos, selecciona Añadir permisos y, a continuación, selecciona Adjuntar políticas.

    8. En la página Añadir permisos, selecciona la casilla de verificación situada junto a la MyGreengrassV2ComponentArtifactPolicy política que has creado y, a continuación, selecciona Añadir permisos.

  3. Utilice la receta del componente para crear un componente en la AWS IoT Greengrass consola.

    1. En el menú de navegación de la AWS IoT Greengrass consola, elija Componentes y, a continuación, elija Crear componente.

    2. En Información del componente, elija Introducir receta como JSON. La receta del marcador de posición debería tener un aspecto similar al del siguiente ejemplo.

      { "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. Sustituya el marcador de posición URI de cada Artifacts sección por el S3 URI de su hello_world.py objeto.

    4. Seleccione Crear componente.

    5. En com.example. HelloWorlden la página del componente, compruebe que el estado del componente es desplegable.

Para cargar su componente Hello World
  1. Utilice un depósito de S3 en el suyo Cuenta de AWS para alojar los artefactos de los AWS IoT Greengrass componentes. Al implementar el componente en un dispositivo principal, el dispositivo descarga los artefactos del componente del depósito.

    Puede usar un bucket de S3 existente o ejecutar el siguiente comando para crear un bucket. Este comando crea un depósito con su Cuenta de AWS ID y Región de AWS forma un nombre de depósito único. Reemplazar 123456789012 con tu Cuenta de AWS ID y region con el Región de AWS que utilizas para este tutorial.

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

    El comando genera la siguiente información si la solicitud se realiza correctamente.

    make_bucket: greengrass-component-artifacts-123456789012-region
  2. Permita que el dispositivo principal acceda a los artefactos de los componentes del depósito S3.

    Cada dispositivo principal tiene una IAMfunción de dispositivo principal que le permite interactuar con los registros AWS IoT y enviarlos Nube de AWS. Esta función de dispositivo no permite el acceso a los depósitos de S3 de forma predeterminada, por lo que debe crear y adjuntar una política que permita al dispositivo principal recuperar los artefactos de los componentes del depósito de S3.

    Si la función principal del dispositivo ya permite el acceso al bucket de S3, puedes saltarte este paso. De lo contrario, cree una IAM política que permita el acceso y asójela al rol, de la siguiente manera:

    1. Cree un archivo llamado component-artifact-policy.json y copie lo siguiente JSON en el archivo. Esta política permite el acceso a todos los archivos de un bucket de S3. Sustituya amzn-s3-demo-bucket por el nombre del bucket de S3.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*" } ] }
    2. Ejecute el siguiente comando para crear la política a partir del documento de política incluido en. 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

      Copie la política Amazon Resource Name (ARN) de los metadatos de la política en la salida. ARNUtilízala para asociar esta política a la función principal del dispositivo en el siguiente paso.

    3. Ejecute el siguiente comando para adjuntar la política a la función de dispositivo principal. Reemplazar GreengrassV2TokenExchangeRole con el nombre de la función del dispositivo principal. Especificó este nombre de función al instalar el software AWS IoT Greengrass Core. Sustituya ARN la política ARN por la del paso anterior.

      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

      Si el comando no tiene salida, se ha realizado correctamente. El dispositivo principal ahora puede acceder a los artefactos que cargue en este depósito de S3.

  3. Cargue el artefacto del script de Python Hello World en el bucket de S3.

    Ejecute el siguiente comando para cargar el script en la misma ruta del depósito en el que se encuentra el script en su AWS IoT Greengrass núcleo. Sustituya amzn-s3-demo-bucket por el nombre 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

    El comando genera una línea que comienza con si la solicitud se realiza correctamente. upload:

  4. Añada el Amazon S3 del artefacto URI a la receta del componente.

    Amazon S3 URI está compuesto por el nombre del bucket y la ruta al objeto artefacto del bucket. El Amazon S3 de tu artefacto de script URI es en el URI que subiste el artefacto en el paso anterior. URIDebería tener un aspecto similar al del siguiente ejemplo. Sustituya amzn-s3-demo-bucket por el nombre del bucket S3.

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

    Para añadir el artefacto a la receta, añada una lista Artifacts que contenga una estructura con el Amazon S3URI.

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

    Abre el archivo de la receta en un editor de texto.

    Por ejemplo, en un sistema basado en Linux, puede ejecutar el siguiente comando para usar GNU nano para crear el archivo.

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

    Agrega el artefacto a la receta. El archivo de la receta debe tener un aspecto similar al del siguiente ejemplo.

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

    Abre el archivo de recetas en un editor de texto.

    Por ejemplo, en un sistema basado en Linux, puede ejecutar el siguiente comando para usar GNU nano para crear el archivo.

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

    Agrega el artefacto a la receta. El archivo de la receta debe tener un aspecto similar al del siguiente ejemplo.

    --- 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. Cree un recurso componente a AWS IoT Greengrass partir de la receta. Ejecute el siguiente comando para crear el componente a partir de la receta, que se proporciona como un archivo 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 respuesta es similar a la del siguiente ejemplo si la solicitud se realiza correctamente.

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

    arnCopie el elemento del resultado para comprobar el estado del componente en el siguiente paso.

    nota

    También puedes ver tu componente Hello World en la AWS IoT Greengrass consola, en la página de componentes.

  6. Compruebe que el componente se ha creado y está listo para su implementación. Al crear un componente, su estado esREQUESTED. A continuación, AWS IoT Greengrass valida que el componente sea desplegable. Puede ejecutar el siguiente comando para consultar el estado del componente y comprobar que el componente se puede implementar. Sustitúyalo ARN por el del paso anterior. arn

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

    Si el componente se valida, la respuesta indica que el estado del componente esDEPLOYABLE.

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

Su componente Hello World ya está disponible en AWS IoT Greengrass. Puede volver a implementarlo en este dispositivo principal de Greengrass o en otros dispositivos principales.