Publique componentes para desplegarlos en sus dispositivos principales - 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.

Publique componentes para desplegarlos en sus dispositivos principales

Después de crear o completar una versión de un componente, puede publicarla en el AWS IoT Greengrass servicio. Luego, puede implementarlo en los dispositivos principales de Greengrass.

Si usa el kit de desarrollo de Greengrass CLI (GDKCLI) para desarrollar y construir un componente, puede usarlo GDK CLI para publicar el componente en. Nube de AWS De lo contrario, utilice los comandos de shell integrados y los AWS CLI para publicar el componente.

También se puede utilizar AWS CloudFormation para crear componentes y otros AWS recursos a partir de plantillas. Para obtener más información, consulte ¿Qué es AWS CloudFormation? y AWS::GreengrassV2::ComponentVersionen la Guía AWS CloudFormation del usuario.

Publicar un componente (GDKCLI)

Siga las instrucciones de esta sección para publicar un componente mediante GDKCLI. GDKCLICarga los artefactos de construcción en un depósito de S3, actualiza el artefacto de URIs la receta y crea el componente a partir de la receta. Debe especificar el depósito y la región de S3 que se van a usar en el archivo de GDKCLIconfiguración.

Si utiliza la GDK CLI versión 1.1.0 o posterior, puede especificar el --bucket argumento para especificar el depósito de S3 en el que se GDK CLI cargan los artefactos del componente. Si no especificas este argumento, se GDK CLI carga en el bucket de S3 cuyo nombre es, dónde bucket-region-accountId bucket y region son los valores que especificas engdk-config.json, y accountId es tu Cuenta de AWS ID. GDKCLICrea el depósito si no existe.

importante

De forma predeterminada, las funciones principales de los dispositivos no permiten el acceso a los depósitos de S3. Si es la primera vez que utiliza este depósito de S3, debe añadir permisos al rol para que los dispositivos principales puedan recuperar los artefactos de los componentes de este depósito de S3. Para obtener más información, consulte Permita el acceso a los depósitos de S3 para los artefactos de los componentes.

Para publicar un componente de Greengrass () GDK CLI
  1. Abra la carpeta del componente en una línea de comandos o en una terminal.

  2. Si aún no lo ha hecho, cree el componente Greengrass. El comando de construcción del componente produce una receta y artefactos en la greengrass-build carpeta de la carpeta del componente. Ejecute el siguiente comando de la .

    gdk component build
  3. Publique el componente en Nube de AWS. El comando component publish carga los artefactos del componente en Amazon S3 y actualiza la receta del componente con la de cada artefacto. URI A continuación, crea el componente en el AWS IoT Greengrass servicio.

    nota

    AWS IoT Greengrass calcula el resumen de cada artefacto al crear el componente. Esto significa que no puede modificar los archivos de artefactos de su bucket de S3 después de crear un componente. Si lo hace, las implementaciones que incluyan este componente fallarán porque el resumen del archivo no coincide. Si modifica un archivo de artefactos, debe crear una nueva versión del componente.

    Si especifica NEXT_PATCH la versión del componente en el archivo de GDK CLI configuración, GDK CLI utilizará la siguiente versión del parche que aún no exista en el AWS IoT Greengrass servicio.

    Ejecute el siguiente comando de la .

    gdk component publish

    El resultado indica la versión del componente que se GDK CLI ha creado.

    Después de publicar el componente, puede implementarlo en los dispositivos principales. Para obtener más información, consulte Implemente AWS IoT Greengrass componentes en los dispositivos.

Publicar un componente (comandos de shell)

Utilice el siguiente procedimiento para publicar un componente mediante los comandos de shell y el AWS Command Line Interface (AWS CLI). Al publicar un componente, haga lo siguiente:

  1. Publique los artefactos de los componentes en un bucket de S3.

  2. Añada el Amazon S3 de cada artefacto URI a la receta del componente.

  3. Cree una versión del componente AWS IoT Greengrass a partir de la receta del componente.

nota

Cada versión de componente que cargue debe ser única. Asegúrese de cargar la versión del componente correcta, ya que no podrá editarla después de cargarla.

Puede seguir estos pasos para publicar un componente desde su ordenador de desarrollo o su dispositivo principal de Greengrass.

Para publicar un componente (comandos de shell)
  1. Si el componente usa una versión que existe en el AWS IoT Greengrass servicio, debe cambiarla. Abra la receta en un editor de texto, incremente la versión y guarde el archivo. Elija una nueva versión que refleje los cambios que ha realizado en el componente.

    nota

    AWS IoT Greengrass utiliza versiones semánticas para los componentes. Las versiones semánticas siguen un sistema de números de principal.secundario.parche. Por ejemplo, la versión 1.0.0 representa la primera versión principal de un componente. Para obtener más información, consulte la especificación de la versión semántica.

  2. Si el componente tiene artefactos, haga lo siguiente:

    1. Publique los artefactos del componente en un depósito de S3 de su Cuenta de AWS.

      sugerencia

      Le recomendamos que incluya el nombre y la versión del componente en la ruta al artefacto del bucket de S3. Este esquema de nomenclatura puede ayudarte a conservar los artefactos que utilizan las versiones anteriores del componente, de forma que puedas seguir admitiendo las versiones anteriores del componente.

      Ejecute el siguiente comando para publicar un archivo de artefactos en un bucket de S3. Sustituya amzn-s3-demo-bucket por el nombre del bucket y sustituya artifacts/com.example.HelloWorld/1.0.0/artifact.py por la ruta al archivo del artefacto.

      aws s3 cp artifacts/com.example.HelloWorld/1.0.0/artifact.py s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/artifact.py
      importante

      De forma predeterminada, las funciones principales de los dispositivos no permiten el acceso a los depósitos de S3. Si es la primera vez que utiliza este depósito de S3, debe añadir permisos al rol para que los dispositivos principales puedan recuperar los artefactos de los componentes de este depósito de S3. Para obtener más información, consulte Permita el acceso a los depósitos de S3 para los artefactos de los componentes.

    2. Agrega una lista Artifacts con el nombre de la receta del componente si no está presente. La Artifacts lista aparece en cada manifiesto, donde se definen los requisitos del componente en cada plataforma compatible (o los requisitos predeterminados del componente para todas las plataformas).

    3. Añada cada artefacto a la lista de artefactos o actualice URI los artefactos existentes. Amazon S3 URI está compuesto por el nombre del bucket y la ruta al objeto artefacto del bucket. El Amazon S3 de tus artefactos URIs debería tener un aspecto similar al del siguiente ejemplo.

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

    Después de completar estos pasos, tu receta debería tener una Artifacts lista similar a la siguiente.

    JSON
    { ... "Manifests": [ { "Lifecycle": { ... }, "Artifacts": [ { "URI": "s3://amzn-s3-demo-bucket/artifacts/MyGreengrassComponent/1.0.0/artifact.py", "Unarchive": "NONE" } ] } ] }
    nota

    Puede añadir la "Unarchive": "ZIP" opción de utilizar un ZIP artefacto para configurar el software AWS IoT Greengrass principal de forma que descomprima el artefacto cuando se despliegue el componente.

    YAML
    ... Manifests: - Lifecycle: ... Artifacts: - URI: s3://amzn-s3-demo-bucket/artifacts/MyGreengrassComponent/1.0.0/artifact.py Unarchive: NONE
    nota

    Puede utilizar la Unarchive: ZIP opción de configurar el software AWS IoT Greengrass Core para descomprimir un ZIP artefacto cuando se despliegue el componente. Para obtener más información sobre cómo utilizar los ZIP artefactos en un componente, consulte la variable artifacts: decompressedPath recipe.

    Para obtener más información acerca de las recetas, consulte AWS IoT Greengrass referencia de recetas de componentes.

  3. Utilice la AWS IoT Greengrass consola para crear un componente a partir del archivo de recetas.

    Ejecute el siguiente comando para crear el componente a partir de un archivo de recetas. Este comando crea el componente y lo publica como un AWS IoT Greengrass componente privado en su Cuenta de AWS. Reemplazar path/to/recipeFile con la ruta al archivo de recetas.

    aws greengrassv2 create-component-version --inline-recipe fileb://path/to/recipeFile

    arnCopie el fragmento de la respuesta para comprobar el estado del componente en el siguiente paso.

    nota

    AWS IoT Greengrass calcula el resumen de cada artefacto al crear el componente. Esto significa que no puede modificar los archivos de artefactos de su bucket de S3 después de crear un componente. Si lo hace, las implementaciones que incluyan este componente fallarán porque el resumen del archivo no coincide. Si modifica un archivo de artefactos, debe crear una nueva versión del componente.

  4. Cada componente del AWS IoT Greengrass servicio tiene un estado. Ejecute el siguiente comando para confirmar el estado de la versión del componente que publique en este procedimiento. Reemplazar com.example.HelloWorld y 1.0.0 con la versión del componente que desee consultar. Sustitúyala ARN por la del paso anterior. arn

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

    La operación devuelve una respuesta que contiene los metadatos del componente. Los metadatos contienen un status objeto que contiene el estado del componente y cualquier error, si corresponde.

    Cuando el estado del componente esDEPLOYABLE, puede implementarlo en los dispositivos. Para obtener más información, consulte Implemente AWS IoT Greengrass componentes en los dispositivos.