componente - AWS IoT Greengrass

componente

Use o comando component na interface de linha de comando do kit de desenvolvimento do AWS IoT Greengrass (GDK CLI) para criar e publicar componentes personalizados do Greengrass.

init

Inicialize uma pasta de componentes do Greengrass a partir de um modelo de componente ou componente da comunidade.

A CLI do GDK recupera componentes da comunidade do Catálogo de Software do Greengrass e modelos de componentes do repositório de modelos de componentes do AWS IoT Greengrass no GitHub.

nota

Se você usa a CLI do GDK v1.0.0, deve executar esse comando em uma pasta vazia. A CLI do GDK baixa o modelo ou componente da comunidade para a pasta atual.

Se você usa a CLI do GDK v1.1.0 ou posterior, pode especificar o argumento --name para especificar a pasta em que a CLI do GDK baixa o modelo ou o componente da comunidade. Se você usar esse argumento, especifique uma pasta que não existe. A CLI do GDK cria a pasta para você. Se você não especificar esse argumento, a CLI do GDK usa a pasta atual, que deve estar vazia.

Se o componente usa o sistema de compilação zip, a CLI do GDK compacta determinados arquivos na pasta do componente em um arquivo zip com o mesmo nome da pasta do componente. Por exemplo, se o nome da pasta do componente for HelloWorld, a CLI do GDK cria um arquivo zip chamado HelloWorld.zip. Na fórmula do componente, o nome do artefato zip deve corresponder ao nome da pasta do componente. Se você usa a CLI do GDK versão 1.0.0 em um dispositivo Windows, a pasta do componente e os nomes dos arquivos zip devem conter somente letras minúsculas.

Se você inicializar um modelo ou componente da comunidade que usa o sistema de compilação zip em uma pasta com um nome diferente do modelo ou componente, deverá alterar o nome do artefato zip na fórmula do componente. Atualize as definições Artifacts e Lifecycle de modo que o nome do arquivo zip corresponda ao nome da pasta do componente. O exemplo a seguir destaca o nome do arquivo zip nas definições Artifacts e 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}"
Resumo
$ gdk component init [--language] [--template] [--repository] [--name]
Argumentos (inicializar a partir do modelo do componente)
  • -l, --language: a linguagem de programação a ser usada para o modelo que você especificar.

    Especifique --repository ou --language e --template.

  • -t, --template: o modelo de componente a ser usado em um projeto de componente local. Para visualizar os modelos disponíveis, use o comando list.

    Especifique --repository ou --language e --template.

  • -n, --name: (opcional) o nome da pasta local em que a CLI do GDK inicializa o componente. Especifique uma pasta que não existe. A CLI do GDK cria a pasta para você.

    Este atributo está disponível para a CLI do GDK v1.1.0 e posteriores.

Argumentos (inicializar a partir do componente da comunidade)
  • -r, --repository: o componente da comunidade a ser verificado na pasta local. Para visualizar os componentes disponíveis da comunidade, use o comando list.

    Especifique --repository ou --language e --template.

  • -n, --name: (opcional) o nome da pasta local em que a CLI do GDK inicializa o componente. Especifique uma pasta que não existe. A CLI do GDK cria a pasta para você.

    Este atributo está disponível para a CLI do GDK v1.1.0 e posteriores.

Saída

O exemplo a seguir mostra a saída produzida quando você executa esse comando para inicializar uma pasta de componentes a partir do modelo Hello World do 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.

O exemplo a seguir mostra a saída produzida quando você executa este comando para inicializar uma pasta de componente de um componente da comunidade.

$ 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

Crie a fonte de um componente em uma fórmula e artefatos que você possa publicar no serviço do AWS IoT Greengrass. A CLI do GDK executa o sistema de compilação que você especifica no arquivo de configuração da CLI do GDK, gdk-config.json. Você deve executar esse comando na mesma pasta em que o arquivo gdk-config.json existe.

Quando você executa esse comando, a CLI do GDK cria uma fórmula e artefatos na pasta greengrass-build do componente. A CLI do GDK salva a fórmula na pasta greengrass-build/recipes e salva os artefatos na pasta greengrass-build/artifacts/componentName/componentVersion.

Se você usa a CLI do GDK v1.1.0 ou posterior, a fórmula do componente pode especificar artefatos que existem em um bucket do S3, mas não na pasta de criação do componente local. Você pode usar esse atributo para reduzir o uso de largura de banda ao desenvolver componentes com grandes artefatos, como modelos de machine learning.

Depois de criar um componente, você pode fazer o seguinte para testá-lo em um dispositivo principal do Greengrass:

  • Se você desenvolve em um dispositivo diferente daquele em que executa o software AWS IoT Greengrass Core, você deve publicar o componente para implantá-lo em um dispositivo principal do Greengrass. Publique o componente no serviço do AWS IoT Greengrass e implante-o no dispositivo principal do Greengrass. Para obter mais informações, veja o comando publish e Criar implantações.

  • Se você desenvolve no mesmo dispositivo em que executa o software AWS IoT Greengrass Core, pode publicar o componente no serviço do AWS IoT Greengrass para implantação ou criar uma implantação local para instalar e executar o componente. Para criar uma implantação local, use a CLI do Greengrass. Para ter mais informações, consulte Interface de linha de comando do Greengrass e Testar os componentes do AWS IoT Greengrass com implantações locais. Ao criar a implantação local, especifique greengrass-build/recipes como pasta de fórmulas e greengrass-build/artifacts como pasta de artefatos.

Resumo
$ gdk component build
Arguments (Argumentos)

Nenhum

Saída

O exemplo a seguir mostra a saída produzida ao executar esse 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 esse componente no serviço do AWS IoT Greengrass. Esse comando carrega artefatos de construção em um bucket do S3, atualiza o URI do artefato na fórmula e cria uma nova versão do componente a partir dela. A CLI do GDK usa o bucket do S3 e a região da AWS que você especifica no arquivo de configuração da CLI do GDK, gdk-config.json. Você deve executar esse comando na mesma pasta em que o arquivo gdk-config.json existe.

Se você usar a CLI do GDK v1.1.0 ou posterior, poderá especificar o argumento --bucket para especificar o bucket do S3 em que a CLI do GDK carrega os artefatos do componente. Se você não especificar esse argumento, a CLI do GDK será carregada no bucket do S3 cujo nome é bucket-region-accountId, em que bucket e região são os valores que você especifica em gdk-config.json, e accountId é seu ID da Conta da AWS. A CLI do GDK criará o bucket, se ele não existir.

Se você usa a CLI do GDK v1.2.0 ou posterior, você pode substituir a Região da AWS especificada no arquivo de configuração da CLI do GDK usando o parâmetro --region. É possível especificar opções adicionais usando o parâmetro --options. Para uma lista de opções disponíveis, consulte Arquivo de configuração da CLI do kit de desenvolvimento do Greengrass.

Quando você executa esse comando, a CLI do GDK publica o componente com a versão especificada na fórmula. Se você especificar NEXT_PATCH, a CLI do GDK usará a próxima versão do patch que ainda não existe. As versões semânticas usam um sistema de numeração principal.secundário.patch. Para mais informações, consulte a especificação de versão semântica.

nota

Se você usa a CLI do GDK v1.1.0 ou posterior, ao executar esse comando, ela verifica se o componente foi criado. Se o componente não for criado, a CLI do GDK cria o componente antes de publicá-lo.

Resumo
$ gdk component publish [--bucket] [--region] [--options]
Arguments (Argumentos)
  • -b, --bucket: (opcional) especifique o nome do bucket do S3 em que a CLI do GDK publica artefatos do componente.

    Se você não especificar esse argumento, a CLI do GDK será carregada no bucket do S3 cujo nome é bucket-region-accountId, em que bucket e região são os valores que você especifica em gdk-config.json, e accountId é seu ID da Conta da AWS. A CLI do GDK criará o bucket, se ele não existir.

    A CLI do GDK criará o bucket, se ele não existir.

    Este atributo está disponível para a CLI do GDK v1.1.0 e posteriores.

  • -r, --region: (opcional) especifique o nome da Região da AWS para quando o componente for criado. Esse argumento substitui o nome da região na configuração da CLI do GDK.

    Este atributo está disponível para a CLI do GDK v1.2.0 e posteriores.

  • -o, --options: (opcional) especifique uma lista de opções para publicar um componente. O argumento deve ser uma string JSON válida ou um caminho de arquivo para um arquivo JSON contendo as opções de publicação. Este argumento substitui as opções na configuração da CLI do GDK.

    Este atributo está disponível para a CLI do GDK v1.2.0 e posteriores.

Saída

O exemplo a seguir mostra a saída produzida ao executar esse 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 a lista de modelos de componentes e componentes da comunidade disponíveis.

A CLI do GDK recupera componentes da comunidade do Catálogo de Software do Greengrass e modelos de componentes do repositório de modelos de componentes do AWS IoT Greengrass no GitHub.

Você pode passar a saída desse comando para o comando init para inicializar repositórios de componentes a partir de modelos e componentes da comunidade.

Resumo
$ gdk component list [--template] [--repository]
Arguments (Argumentos)
  • -t, --template: (opcional) especifique esse argumento para listar os modelos de componentes disponíveis. Esse comando gera o nome e a linguagem de cada modelo no formato name-language. Por exemplo, em HelloWorld-python, o nome do modelo é HelloWorld e a linguagem é python.

  • -r, --repository: (opcional) especifique esse argumento para listar os repositórios de componentes da comunidade disponíveis.

Saída

O exemplo a seguir mostra a saída produzida ao executar esse 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