Arquivo de configuração da CLI do kit de desenvolvimento do Greengrass
A interface de linha de comando do kit de desenvolvimento do AWS IoT Greengrass(CLI do GDK) lê um arquivo de configuração chamado gdk-config.json
para criar e publicar componentes. Esse arquivo de configuração precisa estar na raiz do repositório de componentes. Você pode usar o comando init da CLI do GDK para inicializar repositórios de componentes com esse arquivo de configuração.
Tópicos
Formato do arquivo de configuração da CLI do GDK
Ao definir um arquivo de configuração da CLI do GDK para um componente, você especifica as seguintes informações no formato JSON.
gdk_version
-
A versão mínima da CLI do GDK compatível com esse componente. Esse valor deve ser uma das versões da CLI do GDK dos lançamentos
. component
-
A configuração desse componente.
componentName
-
author
-
O autor ou publicador do componente.
version
-
A versão do componente. Especifique um dos seguintes:
-
NEXT_PATCH
: quando você escolhe essa opção, a CLI do GDK define a versão quando você publica o componente. A CLI do GDK consulta o serviço do AWS IoT Greengrass para identificar a versão mais recente publicada do componente. Em seguida, ela define a versão para a próxima versão de patch após essa versão. Se você não publicou o componente antes, a CLI do GDK usa a versão1.0.0
.Se você escolher essa opção, não poderá usar a CLI do Greengrass para implantar e testar localmente o componente em seu computador de desenvolvimento local que executa o software AWS IoT Greengrass Core. Para habilitar implantações locais, você deve especificar uma versão semântica em vez disso.
-
Uma versão semântica, como
1.0.0
. 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. Se você desenvolver componentes em um dispositivo principal do Greengrass para implantar e testar o componente, escolha essa opção. Você deve criar o componente com uma versão específica para criar implantações locais com a CLI do Greengrass.
-
build
-
A configuração a ser usada para criar a fonte desse componente em artefatos. Esse objeto contém as seguintes informações:
-
build_system
-
O sistema de compilação a ser usado. Escolha uma das seguintes opções:
-
zip
: empacota a pasta do componente em um arquivo ZIP para definir como o único artefato do componente. Escolha essa opção para os seguintes tipos de componentes:-
Componentes que usam linguagens de programação interpretadas, como Python ou JavaScript.
-
Componentes que empacotam arquivos que não sejam código, como modelos de machine learning ou outros recursos.
A CLI do GDK compacta a 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 chamadoHelloWorld.zip
.nota
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.
Quando a CLI do GDK compacta a pasta do componente em um arquivo zip, ela ignora os seguintes arquivos:
-
O arquivo
gdk-config.json
-
O arquivo da fórmula (
recipe.json
ourecipe.yaml
) -
Crie pastas, como
greengrass-build
-
-
maven
: executa o comandomvn clean package
para transformar a fonte do componente em artefatos. Escolha essa opção para componentes que usam o Maven, como componentes Java. Em dispositivos Windows, esse atributo está disponível para a CLI do GDK v1.1.0 e versões posteriores.
-
gradle
: executa o comandogradle build
para transformar a fonte do componente em artefatos. Escolha essa opção para componentes que usam o Gradle.Este atributo está disponível para a CLI do GDK v1.1.0 e posteriores. O sistema de compilação do
gradle
é compatível com o Kotlin DSL como arquivo de compilação. Este atributo está disponível para a CLI do GDK v1.2.0 e posteriores. -
gradlew
: executa o comandogradlew
para transformar a fonte do componente em artefatos. Escolha essa opção para componentes que usam o Wrapper Gradle. Este atributo está disponível para a CLI do GDK v1.2.0 e posteriores.
-
custom
: executa um comando personalizado para transformar a fonte do componente em uma fórmula e artefatos. Especifique o comando personalizado no parâmetrocustom_build_command
.
-
custom_build_command
-
(Opcional) O comando de compilação personalizado a ser executado em um sistema de compilação personalizado. Você deve especificar este parâmetro se especificar
custom
parabuild_system
.Importante
Esse comando deve criar uma fórmula e artefatos nas seguintes pastas dentro da pasta do componente. A CLI do GDK cria essas pastas para você quando você executa o comando de compilação do componente.
-
Pasta de fórmula:
greengrass-build/recipes
-
Pasta de artefatos:
greengrass-build/artifacts/
componentName
/componentVersion
Substitua
componentName
pelo nome do componente e substituacomponentVersion
pela versão do componente ouNEXT_PATCH
.
Você pode especificar uma única string ou uma lista de strings, em que cada string é uma palavra no comando. Por exemplo, para executar um comando de compilação personalizado para um componente C++, especifique
cmake --build build --config Release
ou["cmake", "--build", "build", "--config", "Release"]
.Para ver um exemplo de um sistema de compilação personalizado, consulte aws.greengrass.labs.LocalWebServer community component no GitHub
. -
options
-
(Opcional) Opções de configuração adicionais usadas durante o processo de compilação do componente.
Este atributo está disponível para a CLI do GDK v1.2.0 e posteriores.
excludes
-
Uma lista de padrões globais que definem quais arquivos excluir do diretório de componentes ao criar o arquivo zip. Válido somente quando a
build_system
ézip
.nota
Nas versões 1.4.0 e anteriores da CLI do GDK, qualquer arquivo que corresponda a uma entrada na lista de exclusões é excluído de todos os subdiretórios do componente. Para ter o mesmo comportamento nas versões 1.5.0 e posteriores da CLI do GDK, acrescente as entradas
**/
existentes na lista de exclusões. Por exemplo,*.txt
excluirá arquivos de texto apenas do diretório e**/*.txt
excluirá arquivos de texto de todos os diretórios e subdiretórios.Nas versões 1.5.0 e posteriores da CLI do GDK, você pode ver um aviso durante a compilação do componente quando
excludes
é definido no arquivo de configuração do GDK. Para desativar esse aviso, defina a variável de ambienteGDK_EXCLUDES_WARN_IGNORE
comotrue
.A CLI do GDK sempre exclui os seguintes arquivos do arquivo zip:
-
O arquivo
gdk-config.json
-
O arquivo da fórmula (
recipe.json
ourecipe.yaml
) -
Crie pastas, como
greengrass-build
Os arquivos a seguir são excluídos por padrão. No entanto, você pode controlar quais desses arquivos são excluídos com a opção
excludes
.-
Qualquer pasta que comece com o prefixo “test” (
test*
) -
Todos os arquivos ocultos
-
A pasta
node_modules
.
Se você especificar a opção
excludes
, a CLI do GDK excluirá somente os arquivos definidos com a opçãoexcludes
. Se você não especificar a opçãoexcludes
, a CLI do GDK excluirá os arquivos e pastas padrão mencionados anteriormente. -
zip_name
-
O nome do arquivo zip a ser usado ao criar um artefato zip durante o processo de compilação. Válido somente quando a
build_system
ézip
. Sebuild_system
estiver vazio, o nome do componente será usado para o nome do arquivo zip.
-
publish
-
A configuração a ser usada para publicar esse componente no serviço do AWS IoT Greengrass.
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 é
, em quebucket
-region
-accountId
bucket
eregião
são os valores que você especifica emgdk-config.json
, eaccountId
é seu ID da Conta da AWS. A CLI do GDK criará o bucket, se ele não existir.Esse objeto contém as seguintes informações:
bucket
-
O nome do bucket do S3 a ser usado para hospedar artefatos de componentes.
region
-
A Região da AWS em que a CLI do GDK publica este componente.
Essa propriedade é opcional se você estiver usando a CLI do GDK v1.3.0 ou posterior.
options
-
(Opcional) Opções de configuração adicionais usadas durante o processo de compilação do componente.
Este atributo está disponível para a CLI do GDK v1.2.0 e posteriores.
file_upload_args
-
Uma estrutura JSON contendo argumentos enviados ao Amazon S3 durante o upload de arquivos para um bucket, como metadados e mecanismos de criptografia. Para ter uma lista dos argumentos permitidos, consulte a classe
S3Transfer
na documentação do Boto3.
test-e2e
-
(Opcional) A configuração a ser usada durante o teste ponta a ponta do componente. Este atributo está disponível para a CLI do GDK v1.3.0 e posteriores.
build
-
build_system
: o sistema de compilação a ser usado. A opção padrão émaven
. Escolha uma das seguintes opções: gtf_version
-
(Opcional) A versão da estrutura de testes do Greengrass (GTF) a ser usada como dependência do módulo de teste de ponta a ponta ao inicializar o projeto do GDK com GTF. Esse valor deve ser uma das versões do GTF dos lançamentos
. O padrão é GTF versão 1.1.0. gtf_options
-
(Opcional) Opções de configuração adicionais usadas durante o teste de ponta a ponta do componente.
A lista a seguir inclui as opções que você pode usar com o GTF para a versão 1.1.0.
-
additional-plugins
: (opcional) plug-ins adicionais do Cucumber -
aws-region
: tem como alvo endpoints regionais específicos para serviços da AWS. O padrão é o que o SDK da AWS descobre. -
credentials-path
: caminho opcional de credenciais do perfil da AWS. O padrão é credenciais descobertas no ambiente do host. -
credentials-path-rotation
: duração de rotação opcional para credenciais da AWS. O valor padrão é 15 minutos ouPT15M
. -
csr-path
: o caminho para o CSR usando qual certificado do dispositivo será gerado. -
device-mode
: o dispositivo alvo em teste. O padrão é o dispositivo local. -
env-stage
: tem como alvo o ambiente de implantação do Greengrass. O padrão é produção. -
existing-device-cert-arn
: o arn de um certificado existente que você deseja usar como certificado de dispositivo para o Greengrass. -
feature-path
: arquivo ou diretório contendo arquivos de atributos adicionais. O padrão é não usar nenhum arquivo de atributo adicional. -
gg-cli-version
: substitui a versão da CLI do Greengrass. O padrão é o valor encontrado emggc.version
. -
gg-component-bucket
: o nome de um bucket existente do Amazon S3 que abriga os componentes do Greengrass. -
gg-component-overrides
: uma lista de substituições de componentes do Greengrass. -
gg-persist
: uma lista de elementos de teste a serem persistidos após a execução do teste. O comportamento padrão é não persistir em nada. Os valores aceitos sãoaws.resources
,installed.software
egenerated.files
. -
gg-runtime
: uma lista de valores para influenciar a forma como o teste interage com os recursos do teste. Esses valores substituem o parâmetrogg.persist
. Se o padrão for vazio, ele presume que todos os recursos de teste são gerenciados pelo caso de teste, incluindo o runtime do Greengrass instalado. Os valores aceitos sãoaws.resources
,installed.software
egenerated.files
. -
ggc-archive
: o caminho para o componente do núcleo arquivado do Greengrass. -
ggc-install-root
: diretório para instalar o componente do núcleo do Greengrass. O padrão é test.temp.path e pasta de execução de teste. -
ggc-log-level
: defina o nível de log do núcleo do Greengrass para a execução do teste. O padrão é INFO. -
ggc-tes-rolename
: o perfil do IAM que o AWS IoT Greengrass Core assumirá para acessar os serviços da AWS. Se um perfil com o nome fornecido não existir, será criada uma política de acesso padrão. -
ggc-trusted-plugins
: a lista separada por vírgula dos caminhos (no host) dos plug-ins confiáveis que precisam ser adicionados ao Greengrass. Para fornecer o caminho no próprio DUT, prefixe o caminho com 'dut:'. -
ggc-user-name
: o valor de user:group PosixUser para o núcleo do Greengrass. O padrão é o nome de usuário atual que está conectado. -
ggc-version
: substitui a versão do componente do núcleo do Greengrass em execução. O padrão é o valor encontrado em ggc.archive. -
log-level
: nível de log da execução do teste. O padrão é “INFO”. -
parallel-config
: conjunto de índice de lote e número de lotes como uma string JSON. O valor padrão do índice do lote é 0 e o número de lotes é 1. -
proxy-url
: configura todos os testes para rotear o tráfego por meio desse URL. -
tags
: executa apenas tags de atributos. Pode ser cruzado com '&' -
test-id-prefix
: um prefixo comum aplicado a todos os recursos específicos do teste, incluindo nomes e tags de recursos da AWS. O padrão é um prefixo “gg”. -
test-log-path
: diretório que conterá os resultados de toda a execução do teste. O padrão é "testResults". -
test-results-json
: sinalize para determinar se um relatório JSON do Cucumber resultante foi gerado e gravado no disco. O valor padrão é verdadeiro. -
test-results-log
: sinalize para determinar se a saída do console foi gerada e gravada no disco. O padrão é falso. -
test-results-xml
: sinalize para determinar se um relatório XML JUnit resultante é gerado e gravado em disco. O padrão é verdadeiro. -
test-temp-path
: diretório para gerar artefatos de teste locais. O padrão é um diretório temporário aleatório prefixado com gg-testing. -
timeout-multiplier
: multiplicador fornecido para todos os tempos limite de teste. O padrão é 1.0.
-
Exemplos de arquivos de configuração da CLI do GDK
Você pode consultar os seguintes exemplos de arquivos de configuração da CLI do GDK para configurar ambientes de componentes do Greengrass.
Hello World (Python)
O arquivo de configuração da CLI do GDK a seguir é compatível com um componente Hello World que executa um script Python. Esse arquivo de configuração usa o sistema de compilação zip
para empacotar o script Python do componente em um arquivo ZIP que a CLI do GDK carrega como um artefato.
{ "component": { "com.example.PythonHelloWorld": { "author": "Amazon", "version": "NEXT_PATCH", "build": { "build_system" : "zip", "options": { "excludes": [".*"] } }, "publish": { "bucket": "greengrass-component-artifacts", "region": "us-west-2", "options": { "file_upload_args": { "Metadata": { "
some-key
": "some-value
" } } } } }, "test-e2e":{ "build":{ "build_system": "maven" }, "gtf_version": "1.1.0", "gtf_options": { "tags": "Sample" } }, "gdk_version": "1.6.1" } }
Hello World (Java)
O arquivo de configuração da CLI do GDK a seguir é compatível com um componente Hello World que executa uma aplicação Java. Este arquivo de configuração usa o sistema de compilação maven
para empacotar o código-fonte Java do componente em um arquivo JAR que a CLI do GDK carrega como um artefato.
{ "component": { "com.example.JavaHelloWorld": { "author": "Amazon", "version": "NEXT_PATCH", "build": { "build_system" : "maven" }, "publish": { "bucket": "greengrass-component-artifacts", "region": "us-west-2", "options": { "file_upload_args": { "Metadata": { "
some-key
": "some-value
" } } } } }, "test-e2e":{ "build":{ "build_system": "maven" }, "gtf_version": "1.1.0", "gtf_options": { "tags": "Sample" } }, "gdk_version": "1.6.1" } }
Componentes da comunidade
Vários componentes da comunidade no Catálogo do Software do Greengrass usam a CLI do GDK. Você pode explorar os arquivos de configuração da CLI do GDK nos repositórios desses componentes.
Para visualizar os arquivos de configuração da CLI do GDK dos componentes da comunidade
-
Execute o seguinte comando para listar os componentes da comunidade que usam a CLI do GDK.
gdk component list --repository
A resposta lista o nome do repositório do GitHub para cada componente da comunidade que usa a CLI do GDK. Cada repositório existe na organização
awslabs
.[2022-02-22 17:27:31] INFO - Listing all the available component repositories from Greengrass Software Catalog. [2022-02-22 17:27:31] INFO - Found '6' component repositories to display. 1. aws-greengrass-labs-database-influxdb 2. aws-greengrass-labs-telemetry-influxdbpublisher 3. aws-greengrass-labs-dashboard-grafana 4. aws-greengrass-labs-dashboard-influxdb-grafana 5. aws-greengrass-labs-local-web-server 6. aws-greengrass-labs-lookoutvision-gstreamer
-
Abra o repositório GitHub de um componente da comunidade na seguinte URL. Substitua
community-component-name
pelo nome de um componente da comunidade da etapa anterior.https://github.com/awslabs/
community-component-name