componente - AWS IoT Greengrass

componente

Utilice el comando component en la interfaz de línea de comandos del kit de desarrollo (CLI del GDK) AWS IoT Greengrass para crear, compilar y publicar componentes personalizados de Greengrass.

init

Inicialice una carpeta de componentes de Greengrass desde una plantilla de componentes o un componente de la comunidad.

La CLI del GDK recupera los componentes de la comunidad del catálogo de software de Greengrass y las plantillas de componentes del repositorio de plantillas de componentes de AWS IoT Greengrass en GitHub.

nota

Si usa la versión 1.0.0 de la CLI de GDK, debe ejecutar este comando en una carpeta vacía. La CLI de GDK descarga la plantilla o el componente de comunidad en la carpeta actual.

Si usa la versión 1.1.0 de la CLI de GDK o una versión posterior, puede especificar el argumento --name para especificar la carpeta en la que la CLI de GDK descarga la plantilla o el componente de comunidad. Si usa este argumento, especifique una carpeta que no existe. La CLI de GDK crea la carpeta por usted. Si no se especifica este argumento, la CLI de GDK usa la carpeta actual, que debe estar vacía.

Si el componente usa el sistema de compilación zip, la CLI del GDK comprime ciertos archivos de la carpeta del componente en un archivo zip con el mismo nombre que la carpeta del componente. Por ejemplo, si el nombre de la carpeta del componente es HelloWorld, la CLI de GDK crea un archivo zip denominado HelloWorld.zip. En la receta del componente, el nombre del artefacto zip debe coincidir con el nombre de la carpeta del componente. Si usa la versión 1.0.0 de la CLI de GDK en un dispositivo Windows, los nombres de las carpetas y los archivos zip de los componentes deben contener solo letras minúsculas.

Si inicializa una plantilla o un componente de comunidad que utiliza el sistema de compilación zip en una carpeta con un nombre diferente al de la plantilla o el componente, debe cambiar el nombre del artefacto zip en la receta del componente. Actualice las definiciones Artifacts y Lifecycle de forma que el nombre del archivo zip coincida con el nombre de la carpeta del componente. Los siguientes ejemplos resaltan el nombre del archivo zip en las definiciones Artifacts y Lifecycle.

JSON
{ ... "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}" } } ] }
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}"
Sinopsis
$ gdk component init [--language] [--template] [--repository] [--name]
Argumentos (se inicializan desde la plantilla del componente)
  • -l, --language: el lenguaje de programación que se utilizará para la plantilla que especifique.

    Debe especificar --repository o --language y --template.

  • -t, --template: la plantilla de componentes que se utilizará en un proyecto de componentes locales. Utilice el comando list para ver las plantillas disponibles.

    Debe especificar --repository o --language y --template.

  • -n, --name: (opcional) el nombre de la carpeta local en la que la CLI del GDK inicializa el componente. Especifique una carpeta que no existe. La CLI de GDK crea la carpeta por usted.

    Esta característica está disponible para la versión 1.1.0 y posteriores de la CLI de GDK.

Argumentos (se inicializan desde el componente de la comunidad)
  • -r, --repository: el componente de la comunidad que se va a incluir en la carpeta local. Para ver los componentes de la comunidad disponibles, utilice el comando list.

    Debe especificar --repository o --language y --template.

  • -n, --name: (opcional) el nombre de la carpeta local en la que la CLI del GDK inicializa el componente. Especifique una carpeta que no existe. La CLI de GDK crea la carpeta por usted.

    Esta característica está disponible para la versión 1.1.0 y posteriores de la CLI de GDK.

Salida

El siguiente ejemplo muestra el resultado que se produce al ejecutar este comando para inicializar una carpeta de componentes desde la plantilla Hello World de Python.

$ gdk component init -l python -t HelloWorld [2021-11-29 12:51:40] INFO - Initializing the project directory with a python component template - 'HelloWorld'. [2021-11-29 12:51:40] INFO - Fetching the component template 'HelloWorld-python' from Greengrass Software Catalog.

El siguiente ejemplo muestra el resultado que se produce al ejecutar este comando para inicializar una carpeta de un componente de la comunidad.

$ gdk component init -r aws-greengrass-labs-database-influxdb [2022-01-24 15:44:33] INFO - Initializing the project directory with a component from repository catalog - 'aws-greengrass-labs-database-influxdb'. [2022-01-24 15:44:33] INFO - Fetching the component repository 'aws-greengrass-labs-database-influxdb' from Greengrass Software Catalog.

build

Convierta el código de origen de un componente en una receta y artefactos que pueda publicar en el servicio de AWS IoT Greengrass. La CLI del GDK ejecuta el sistema de compilación que especifique en el archivo de configuración de la CLI del GDK, gdk-config.json. Debe ejecutar este comando en la misma carpeta en la que se encuentra el archivo gdk-config.json.

Al ejecutar este comando, la CLI del GDK crea una receta y artefactos en la carpeta greengrass-build de la carpeta del componente. La CLI del GDK guarda la receta en la carpeta greengrass-build/recipes y guarda los artefactos en la carpeta greengrass-build/artifacts/componentName/componentVersion.

Si usa la CLI del GDK versión 1.1.0 o una versión posterior, la receta del componente puede especificar los artefactos que existen en un bucket de S3, pero no en la carpeta de compilación del componente local. Puede utilizar esta característica para reducir el uso del ancho de banda cuando desarrolle componentes con artefactos de gran tamaño, como los modelos de machine learning.

Después de crear un componente, puede realizar una de las siguientes acciones para probarlo en un dispositivo principal de Greengrass:

  • Si desarrolla en un dispositivo diferente al que ejecuta el software AWS IoT Greengrass Core, debe publicar el componente para implementarlo en un dispositivo principal de Greengrass. Publique el componente en el servicio de AWS IoT Greengrass e impleméntelo en el dispositivo principal de Greengrass. Para obtener más información, consulte los comandos publish y Crear implementaciones.

  • Si desarrolla el servicio en el mismo dispositivo en el que ejecuta el software AWS IoT Greengrass Core, puede publicar el componente en el servicio de AWS IoT Greengrass que desea implementar o puede crear una implementación local para instalar y ejecutar el componente. Para crear una implementación local, utilice la CLI de Greengrass. Para obtener más información, consulte Interfaz de la línea de comandos de Greengrass y Prueba de los componentes de AWS IoT Greengrass con implementaciones locales. Al crear la implementación local, especifique greengrass-build/recipes como carpeta de recetas y greengrass-build/artifacts como carpeta de artefactos.

Sinopsis
$ gdk component build
Arguments

Ninguna

Salida

El siguiente ejemplo muestra los resultados del comando.

$ gdk component build [2021-11-29 13:18:49] INFO - Getting project configuration from gdk-config.json [2021-11-29 13:18:49] INFO - Found component recipe file 'recipe.yaml' in the project directory. [2021-11-29 13:18:49] INFO - Building the component 'com.example.PythonHelloWorld' with the given project configuration. [2021-11-29 13:18:49] INFO - Using 'zip' build system to build the component. [2021-11-29 13:18:49] WARNING - This component is identified as using 'zip' build system. If this is incorrect, please exit and specify custom build command in the 'gdk-config.json'. [2021-11-29 13:18:49] INFO - Zipping source code files of the component. [2021-11-29 13:18:49] INFO - Copying over the build artifacts to the greengrass component artifacts build folder. [2021-11-29 13:18:49] INFO - Updating artifact URIs in the recipe. [2021-11-29 13:18:49] INFO - Creating component recipe in 'C:\Users\MyUser\Documents\greengrass-components\python\HelloWorld\greengrass-build\recipes'.

publish

Publique el componente en el servicio de AWS IoT Greengrass. Este comando carga los artefactos de compilación en un bucket de S3, actualiza el URI del artefacto en la receta y crea una nueva versión del componente a partir de la receta. La CLI del GDK utiliza el bucket de S3 y la región de AWS que se especifican en el archivo de configuración de la CLI del GDK, gdk-config.json. Debe ejecutar este comando en la misma carpeta en la que se encuentra el archivo gdk-config.json.

Si usa la versión 1.1.0 o posteriores de la CLI de GDK, puede especificar el argumento --bucket para especificar el bucket de S3 en el que la CLI de GDK carga los artefactos del componente. Si no especifica este argumento, la CLI de GDK se carga en el bucket de S3 cuyo nombre es bucket-region-accountId, donde bucket y region son los valores que especifica en gdk-config.json y acountId es el ID de su Cuenta de AWS. La CLI de GDK crea el bucket si no existe.

Si utiliza la versión 1.2.0 de la CLI del GDK o una versión posterior, puede anular la Región de AWS especificada en el archivo de configuración de la CLI del GDK mediante el parámetro --region. También puede especificar opciones adicionales mediante el parámetro --options. Para ver la lista de opciones disponibles, consulte Archivo de configuración la CLI del kit de desarrollo de Greengrass.

Al ejecutar este comando, la CLI del GDK publica el componente con la versión que especifique en la receta. Si especifica NEXT_PATCH, la CLI del GDK utilizará la siguiente versión de parche que aún no exista. Las versiones semánticas siguen un sistema de números de major.minor.patch. Para obtener más información, consulte la especificación semántica de la versión.

nota

Si utiliza la versión 1.1.0 de la CLI del GDK o una versión posterior, al ejecutar este comando, la CLI del GDK comprueba si el componente está creado. Si el componente no está compilado, la CLI del GDK lo compila antes de publicarlo.

Sinopsis
$ gdk component publish [--bucket] [--region] [--options]
Arguments
  • -b, --bucket: (opcional) especifique el nombre del bucket de S3 en el que la CLI del GDK publica los artefactos de los componentes.

    Si no especifica este argumento, la CLI de GDK se carga en el bucket de S3 cuyo nombre es bucket-region-accountId, donde bucket y region son los valores que especifica en gdk-config.json y acountId es el ID de su Cuenta de AWS. La CLI de GDK crea el bucket si no existe.

    La CLI de GDK crea el bucket si no existe.

    Esta característica está disponible para la versión 1.1.0 y posteriores de la CLI de GDK.

  • -r, --region: (opcional) especifique el nombre de la Región de AWS para cuando el componente se crea. Este argumento anula el nombre de la región en la configuración de la CLI del GDK.

    Esta característica está disponible para la versión 1.2.0 y versiones posteriores de la CLI de GDK.

  • -o, --options (opcional) Especifique una lista de opciones para publicar un componente. El argumento debe ser una cadena JSON válida o una ruta de archivo a un archivo JSON que contenga las opciones de publicación. Este argumento anula las opciones en la configuración de la CLI del GDK.

    Esta característica está disponible para la versión 1.2.0 y versiones posteriores de la CLI de GDK.

Salida

El siguiente ejemplo muestra los resultados del comando.

$ gdk component publish [2021-11-29 13:45:29] INFO - Getting project configuration from gdk-config.json [2021-11-29 13:45:29] INFO - Found component recipe file 'recipe.yaml' in the project directory. [2021-11-29 13:45:29] INFO - Found credentials in shared credentials file: ~/.aws/credentials [2021-11-29 13:45:30] INFO - Publishing the component 'com.example.PythonHelloWorld' with the given project configuration. [2021-11-29 13:45:30] INFO - No private version of the component 'com.example.PythonHelloWorld' exist in the account. Using '1.0.0' as the next version to create. [2021-11-29 13:45:30] INFO - Uploading the component built artifacts to s3 bucket. [2021-11-29 13:45:30] INFO - Uploading component artifacts to S3 bucket: {bucket}. If this is your first time using this bucket, add the 's3:GetObject' permission to each core device's token exchange role to allow it to download the component artifacts. For more information, see https://docs.aws.amazon.com/greengrass/v2/developerguide/device-service-role.html. [2021-11-29 13:45:30] INFO - Not creating an artifacts bucket as it already exists. [2021-11-29 13:45:30] INFO - Updating the component recipe com.example.PythonHelloWorld-1.0.0. [2021-11-29 13:45:30] INFO - Creating a new greengrass component com.example.PythonHelloWorld-1.0.0 [2021-11-29 13:45:30] INFO - Created private version '1.0.0' of the component in the account.'com.example.PythonHelloWorld'.

list

Recupere la lista de plantillas de componentes y componentes de comunidad disponibles.

La CLI del GDK recupera los componentes de la comunidad del catálogo de software de Greengrass y las plantillas de componentes del repositorio de plantillas de componentes de AWS IoT Greengrass en GitHub.

Puede pasar el resultado de este comando al comando init para inicializar los repositorios de componentes a partir de plantillas y componentes de la comunidad.

Sinopsis
$ gdk component list [--template] [--repository]
Arguments
  • -t, --template: (opcional) especifique este argumento para enumerar las plantillas de componentes disponibles. Este comando muestra el nombre y el lenguaje de cada plantilla en el formato name-language. Por ejemplo, en HelloWorld-python, el nombre de la plantilla es HelloWorld y el lenguaje es python.

  • -r, --repository: (opcional) especifique este argumento para enumerar los repositorios de componentes de la comunidad disponibles.

Salida

El siguiente ejemplo muestra los resultados del comando.

$ gdk component list --template [2021-11-29 12:29:04] INFO - Listing all the available component templates from Greengrass Software Catalog. [2021-11-29 12:29:04] INFO - Found '2' component templates to display. 1. HelloWorld-python 2. HelloWorld-java