AWS IoT Greengrass referência da receita do componente - AWS IoT Greengrass

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

AWS IoT Greengrass referência da receita do componente

A receita do componente é um arquivo que define os detalhes, dependências, artefatos e ciclos de vida de um componente. O ciclo de vida do componente especifica os comandos a serem executados para instalar, executar e desligar o componente, por exemplo. O AWS IoT Greengrass núcleo usa os ciclos de vida que você define na receita para instalar e executar componentes. O AWS IoT Greengrass serviço usa a receita para identificar as dependências e os artefatos a serem implantados em seus dispositivos principais quando você implanta o componente.

Na receita, você pode definir dependências e ciclos de vida exclusivos para cada plataforma que um componente suporta. Você pode usar esse recurso para implantar um componente em dispositivos com várias plataformas que tenham requisitos diferentes. Você também pode usar isso para evitar a instalação AWS IoT Greengrass de um componente em dispositivos que não o suportam.

Cada receita contém uma lista de manifestos. Cada manifesto especifica um conjunto de requisitos da plataforma, o ciclo de vida e os artefatos a serem usados nos dispositivos principais cuja plataforma atende a esses requisitos. O dispositivo principal usa o primeiro manifesto com os requisitos de plataforma que o dispositivo atende. Especifique um manifesto sem nenhum requisito de plataforma que corresponda a qualquer dispositivo principal.

Você também pode especificar um ciclo de vida global que não esteja em um manifesto. No ciclo de vida global, você pode usar chaves de seleção que identificam subseções do ciclo de vida. Em seguida, você pode especificar essas chaves de seleção em um manifesto para usar essas seções do ciclo de vida global, além do ciclo de vida do manifesto. O dispositivo principal usa as chaves de seleção do manifesto somente se o manifesto não definir um ciclo de vida. Você pode usar a all seleção em um manifesto para combinar seções do ciclo de vida global sem chaves de seleção.

Depois que o software AWS IoT Greengrass Core seleciona um manifesto que corresponda ao dispositivo principal, ele faz o seguinte para identificar as etapas do ciclo de vida a serem usadas:

  • Se o manifesto selecionado definir um ciclo de vida, o dispositivo principal usará esse ciclo de vida.

  • Se o manifesto selecionado não definir um ciclo de vida, o dispositivo principal usa o ciclo de vida global. O dispositivo principal faz o seguinte para identificar quais seções do ciclo de vida global usar:

    • Se o manifesto definir chaves de seleção, o dispositivo principal usará as seções do ciclo de vida global que contêm as chaves de seleção do manifesto.

    • Se o manifesto não definir chaves de seleção, o dispositivo principal usa as seções do ciclo de vida global que não têm chaves de seleção. Esse comportamento é equivalente a um manifesto que define a all seleção.

Importante

Um dispositivo principal deve atender aos requisitos de plataforma de pelo menos um manifesto para instalar o componente. Se nenhum manifesto corresponder ao dispositivo principal, o software AWS IoT Greengrass Core não instalará o componente e a implantação falhará.

Você pode definir receitas no formato JSON ou YAML. A seção de exemplos de receitas inclui receitas em cada formato.

Validação da receita

O Greengrass valida uma receita de componente JSON ou YAML ao criar uma versão do componente. Essa validação de receita verifica se há erros comuns na receita do componente JSON ou YAML para evitar possíveis problemas de implantação. A validação verifica a receita em busca de erros comuns (por exemplo, vírgulas, chaves e campos ausentes) e para garantir que a receita esteja bem formada.

Se você receber uma mensagem de erro de validação da receita, verifique se há vírgulas, chaves ou campos ausentes em sua receita. Verifique se não está faltando nenhum campo examinando o formato da receita.

Formato da receita

Ao definir uma receita para um componente, você especifica as seguintes informações no documento da receita. A mesma estrutura se aplica às receitas nos formatos YAML e JSON.

RecipeFormatVersion

A versão modelo da receita. Escolha a seguinte opção:

  • 2020-01-25

ComponentName

O nome do componente que essa receita define. O nome do componente deve ser exclusivo Conta da AWS em cada região.

Dicas
  • Use o formato de nome de domínio inverso para evitar colisões de nomes dentro da sua empresa. Por exemplo, se sua empresa possui example.com e você trabalha em um projeto de energia solar, você pode nomear seu componente Hello Worldcom.example.solar.HelloWorld. Isso ajuda a evitar colisões de nomes de componentes em sua empresa.

  • Evite o aws.greengrass prefixo nos nomes dos componentes. AWS IoT Greengrass usa esse prefixo para os componentes públicos que ele fornece. Se você escolher o mesmo nome de um componente público, seu componente substituirá esse componente. Em seguida, AWS IoT Greengrass fornece seu componente em vez do componente público ao implantar componentes com dependência desse componente público. Esse recurso permite que você substitua o comportamento de componentes públicos, mas também pode interromper outros componentes se você não pretende substituir um componente público.

ComponentVersion

A versão do componente. O valor máximo para os valores principais, secundários e de patch é 999999.

nota

AWS IoT Greengrass usa versões semânticas para componentes. As versões semânticas seguem um sistema de numeração principal.secundária.patch. Por exemplo, a versão 1.0.0 representa a primeira versão principal de um componente. Para obter mais informações, consulte a especificação da versão semântica.

ComponentDescription

(Opcional) A descrição do componente.

ComponentPublisher

O editor ou autor do componente.

ComponentConfiguration

(Opcional) Um objeto que define a configuração ou os parâmetros do componente. Você define a configuração padrão e, ao implantar o componente, pode especificar o objeto de configuração a ser fornecido ao componente. A configuração do componente oferece suporte a parâmetros e estruturas aninhados. Esse objeto contém as seguintes informações:

DefaultConfiguration

Um objeto que define a configuração padrão do componente. Você define a estrutura desse objeto.

nota

AWS IoT Greengrass usa JSON para valores de configuração. O JSON especifica um tipo de número, mas não diferencia entre números inteiros e flutuantes. Como resultado, os valores de configuração podem ser convertidos em floats in AWS IoT Greengrass. Para garantir que seu componente use o tipo de dados correto, recomendamos que você defina valores de configuração numérica como cadeias de caracteres. Em seguida, faça com que seu componente os analise como números inteiros ou flutuantes. Isso garante que seus valores de configuração tenham o mesmo tipo na configuração e no seu dispositivo principal.

ComponentDependencies

(Opcional) Um dicionário de objetos em que cada um define uma dependência de componente para o componente. A chave para cada objeto identifica o nome da dependência do componente. AWS IoT Greengrass instala dependências do componente quando o componente é instalado. AWS IoT Greengrass espera que as dependências comecem antes de iniciar o componente. Cada objeto contém as seguintes informações:

VersionRequirement

A restrição de versão semântica no estilo npm que define as versões de componentes compatíveis para essa dependência. Você pode especificar uma versão ou um intervalo de versões. Para obter mais informações, consulte a calculadora da versão semântica npm.

DependencyType

(Opcional) O tipo dessa dependência. Escolha entre as opções a seguir.

  • SOFT – O componente não é reiniciado se a dependência muda de estado.

  • HARD – O componente é reiniciado se a dependência muda de estado.

Padronizado como HARD.

ComponentType

(Opcional) O tipo de componente.

nota

Não recomendamos que você especifique o tipo de componente em uma receita. AWS IoT Greengrass define o tipo para você ao criar um componente.

O tipo pode ser um dos seguintes tipos:

  • aws.greengrass.generic— O componente executa comandos ou fornece artefatos.

  • aws.greengrass.lambda— O componente executa uma função Lambda usando o componente Lambda launcher. O ComponentSource parâmetro especifica o ARN da função Lambda que esse componente executa.

    Não recomendamos que você use essa opção, pois ela é definida AWS IoT Greengrass quando você cria um componente a partir de uma função Lambda. Para ter mais informações, consulte Executar AWS Lambda funções.

  • aws.greengrass.plugin— O componente é executado na mesma Java Virtual Machine (JVM) do núcleo Greengrass. Se você implantar ou reiniciar um componente de plug-in, o núcleo do Greengrass será reiniciado.

    Os componentes do plug-in usam o mesmo arquivo de log do Greengrass nucleus. Para ter mais informações, consulte Monitore AWS IoT Greengrass os registros.

    Não recomendamos que você use essa opção em receitas de componentes, porque ela se destina a componentes AWS fornecidos escritos em Java que interagem diretamente com o núcleo do Greengrass. Para obter mais informações sobre quais componentes públicos são plug-ins, consulteAWS-componentes fornecidos.

  • aws.greengrass.nucleus— O componente do núcleo. Para ter mais informações, consulte Núcleo Greengrass.

    Não recomendamos que você use essa opção em receitas de componentes. Ele é destinado ao componente do núcleo Greengrass, que fornece a funcionalidade mínima do software Core. AWS IoT Greengrass

O padrão é aws.greengrass.generic quando você cria um componente a partir de uma receita ou aws.greengrass.lambda quando você cria um componente a partir de uma função Lambda.

Para ter mais informações, consulte Tipos de componentes.

ComponentSource

(Opcional) O ARN da função Lambda que um componente executa.

Não recomendamos que você especifique a origem do componente em uma receita. AWS IoT Greengrass define esse parâmetro para você quando você cria um componente a partir de uma função Lambda. Para ter mais informações, consulte Executar AWS Lambda funções.

Manifests

Uma lista de objetos em que cada um define o ciclo de vida, os parâmetros e os requisitos do componente para uma plataforma. Se um dispositivo principal atender aos requisitos de plataforma de vários manifestos, AWS IoT Greengrass use o primeiro manifesto correspondente ao dispositivo principal. Para garantir que os dispositivos principais usem o manifesto correto, defina primeiro os manifestos com requisitos de plataforma mais rígidos. Um manifesto que se aplica a todas as plataformas deve ser o último manifesto na lista.

Importante

Um dispositivo principal deve atender aos requisitos de plataforma de pelo menos um manifesto para instalar o componente. Se nenhum manifesto corresponder ao dispositivo principal, o software AWS IoT Greengrass Core não instalará o componente e a implantação falhará.

Cada objeto contém as seguintes informações:

Name

(Opcional) Um nome amigável para a plataforma que esse manifesto define.

Se você omitir esse parâmetro, AWS IoT Greengrass cria um nome da plataforma os e. architecture

Platform

(Opcional) Um objeto que define a plataforma à qual esse manifesto se aplica. Omita esse parâmetro para definir um manifesto que se aplica a todas as plataformas.

Esse objeto especifica pares de valores-chave sobre a plataforma na qual um dispositivo principal é executado. Quando você implanta esse componente, o software AWS IoT Greengrass Core compara esses pares de valores-chave com os atributos da plataforma no dispositivo principal. O software AWS IoT Greengrass principal sempre define os earchitecture, e pode definir atributos adicionais. Você pode especificar atributos de plataforma personalizados para um dispositivo principal ao implantar o componente nucleus do Greengrass. Para obter mais informações, consulte o parâmetro de substituição da plataforma do componente do núcleo do Greengrass.

Para cada par de valores-chave, você pode especificar um dos seguintes valores:

  • Um valor exato, como linux ouwindows. Os valores exatos devem começar com uma letra ou um número.

  • *, que corresponde a qualquer valor. Isso também corresponde quando um valor não está presente.

  • Uma expressão regular no estilo Java, como. /windows|linux/ A expressão regular deve começar e terminar com um caractere de barra (/). Por exemplo, a expressão regular /.+/ corresponde a qualquer valor que não esteja em branco.

Esse objeto contém as seguintes informações:

os

(Opcional) O nome do sistema operacional da plataforma compatível com esse manifesto. As plataformas comuns incluem os seguintes valores:

  • linux

  • windows

  • darwin (macOS)

architecture

(Opcional) A arquitetura do processador para a plataforma que esse manifesto suporta. As arquiteturas comuns incluem os seguintes valores:

  • amd64

  • arm

  • aarch64

  • x86

architecture.detail

(Opcional) Os detalhes da arquitetura do processador para a plataforma que esse manifesto suporta. Os detalhes comuns da arquitetura incluem os seguintes valores:

  • arm61

  • arm71

  • arm81

key

(Opcional) Um atributo de plataforma que você define para esse manifesto. Substitua a chave pelo nome do atributo da plataforma. O software AWS IoT Greengrass Core combina esse atributo da plataforma com os pares de valores-chave que você especifica na configuração do componente nuclear do Greengrass. Para obter mais informações, consulte o parâmetro de substituição da plataforma do componente do núcleo do Greengrass.

dica

Use o formato de nome de domínio inverso para evitar colisões de nomes dentro da sua empresa. Por exemplo, se sua empresa possui example.com e você trabalha em um projeto de rádio, você pode nomear um atributo de plataforma personalizadocom.example.radio.RadioModule. Isso ajuda a evitar colisões de nomes de atributos de plataforma em sua empresa.

Por exemplo, você pode definir um atributo de plataforma,com.example.radio.RadioModule, para especificar um manifesto diferente com base em qual módulo de rádio está disponível em um dispositivo principal. Cada manifesto pode incluir artefatos diferentes que se aplicam a diferentes configurações de hardware, para que você implante o conjunto mínimo de software no dispositivo principal.

Lifecycle

Um objeto ou string que define como instalar e executar o componente na plataforma definida por esse manifesto. Você também pode definir um ciclo de vida global que se aplique a todas as plataformas. O dispositivo principal usa o ciclo de vida global somente se o manifesto a ser usado não especificar um ciclo de vida.

nota

Você define esse ciclo de vida em um manifesto. As etapas do ciclo de vida que você especifica aqui se aplicam somente à plataforma definida por esse manifesto. Você também pode definir um ciclo de vida global que se aplique a todas as plataformas.

Esse objeto ou string contém as seguintes informações:

Setenv

(Opcional) Um dicionário de variáveis de ambiente para fornecer a todos os scripts de ciclo de vida. Você pode substituir essas variáveis de ambiente Setenv em cada script de ciclo de vida.

install

(Opcional) Um objeto ou string que define o script a ser executado quando o componente é instalado. O software AWS IoT Greengrass principal também executa essa etapa do ciclo de vida toda vez que o software é lançado.

Se o install script sair com um código de sucesso, o componente entrará no INSTALLED estado.

Esse objeto ou string contém as seguintes informações:

Script

O script a ser executado.

RequiresPrivilege

(Opcional) Você pode executar o script com privilégios de root. Se você definir essa opção comotrue, o software AWS IoT Greengrass Core executará esse script de ciclo de vida como root em vez de como usuário do sistema que você configura para executar esse componente. Padronizado como false.

Skipif

(Opcional) A verificação para determinar se o script deve ou não ser executado. Você pode definir para verificar se um executável está no caminho ou se existe um arquivo. Se a saída for verdadeira, o software AWS IoT Greengrass Core pulará a etapa. Escolha uma das seguintes verificações:

  • onpath runnable— Verifique se um executável está no caminho do sistema. Por exemplo, use onpath python3 para pular essa etapa do ciclo de vida se o Python 3 estiver disponível.

  • exists file— Verifique se existe um arquivo. Por exemplo, use exists /tmp/my-configuration.db para pular essa etapa do ciclo de vida, se estiver /tmp/my-configuration.db presente.

Timeout

(Opcional) O tempo máximo em segundos que o script pode ser executado antes que o software AWS IoT Greengrass principal encerre o processo.

Padrão: 120 segundos

Setenv

(Opcional) O dicionário de variáveis de ambiente a serem fornecidas ao script. Essas variáveis de ambiente substituem as variáveis que você fornece. Lifecycle.Setenv

run

(Opcional) Um objeto ou string que define o script a ser executado quando o componente é iniciado.

O componente entra no RUNNING estado em que essa etapa do ciclo de vida é executada. Se o run script sair com um código de sucesso, o componente entrará no STOPPING estado. Se um shutdown script for especificado, ele será executado; caso contrário, o componente entrará no FINISHED estado.

Os componentes que dependem desse componente são iniciados quando essa etapa do ciclo de vida é executada. Para executar um processo em segundo plano, como um serviço usado por componentes dependentes, use a etapa do startup ciclo de vida.

Quando você implanta componentes com um run ciclo de vida, o dispositivo principal pode relatar a implantação como concluída assim que esse script de ciclo de vida é executado. Como resultado, a implantação pode ser concluída e bem-sucedida mesmo se o script do run ciclo de vida falhar logo após a execução. Se você quiser que o status de implantação dependa do resultado do script de inicialização do componente, use a etapa do startup ciclo de vida em vez disso.

nota

Você pode definir somente um run ciclo startup de vida.

Esse objeto ou string contém as seguintes informações:

Script

O script a ser executado.

RequiresPrivilege

(Opcional) Você pode executar o script com privilégios de root. Se você definir essa opção comotrue, o software AWS IoT Greengrass Core executará esse script de ciclo de vida como root em vez de como usuário do sistema que você configura para executar esse componente. Padronizado como false.

Skipif

(Opcional) A verificação para determinar se o script deve ou não ser executado. Você pode definir para verificar se um executável está no caminho ou se existe um arquivo. Se a saída for verdadeira, o software AWS IoT Greengrass Core pulará a etapa. Escolha uma das seguintes verificações:

  • onpath runnable— Verifique se um executável está no caminho do sistema. Por exemplo, use onpath python3 para pular essa etapa do ciclo de vida se o Python 3 estiver disponível.

  • exists file— Verifique se existe um arquivo. Por exemplo, use exists /tmp/my-configuration.db para pular essa etapa do ciclo de vida, se estiver /tmp/my-configuration.db presente.

Timeout

(Opcional) O tempo máximo em segundos que o script pode ser executado antes que o software AWS IoT Greengrass principal encerre o processo.

Essa etapa do ciclo de vida não atinge o tempo limite por padrão. Se você omitir esse tempo limite, o run script será executado até ser encerrado.

Setenv

(Opcional) O dicionário de variáveis de ambiente a serem fornecidas ao script. Essas variáveis de ambiente substituem as variáveis que você fornece. Lifecycle.Setenv

startup

(Opcional) Um objeto ou string que define o processo em segundo plano a ser executado quando o componente é iniciado.

Use startup para executar um comando que deve sair com êxito ou atualizar o status do componente para RUNNING antes que os componentes dependentes possam ser iniciados. Use a operação UpdateStateIPC para definir o status do componente como RUNNING ou ERRORED quando o componente inicia um script que não sai. Por exemplo, você pode definir uma startup etapa que inicie o processo do MySQL com. /etc/init.d/mysqld start

O componente entra no STARTING estado em que essa etapa do ciclo de vida é executada. Se o startup script sair com um código de sucesso, o componente entrará no RUNNING estado. Em seguida, os componentes dependentes podem ser iniciados.

Quando você implanta componentes com um startup ciclo de vida, o dispositivo principal pode relatar a implantação como concluída após a saída desse script de ciclo de vida ou relatar seu estado. Em outras palavras, o status da implantação é IN_PROGRESS até que os scripts de inicialização de todos os componentes saiam ou relatem um estado.

nota

Você pode definir somente um run ciclo startup de vida.

Esse objeto ou string contém as seguintes informações:

Script

O script a ser executado.

RequiresPrivilege

(Opcional) Você pode executar o script com privilégios de root. Se você definir essa opção comotrue, o software AWS IoT Greengrass Core executará esse script de ciclo de vida como root em vez de como usuário do sistema que você configura para executar esse componente. Padronizado como false.

Skipif

(Opcional) A verificação para determinar se o script deve ou não ser executado. Você pode definir para verificar se um executável está no caminho ou se existe um arquivo. Se a saída for verdadeira, o software AWS IoT Greengrass Core pulará a etapa. Escolha uma das seguintes verificações:

  • onpath runnable— Verifique se um executável está no caminho do sistema. Por exemplo, use onpath python3 para pular essa etapa do ciclo de vida se o Python 3 estiver disponível.

  • exists file— Verifique se existe um arquivo. Por exemplo, use exists /tmp/my-configuration.db para pular essa etapa do ciclo de vida, se estiver /tmp/my-configuration.db presente.

Timeout

(Opcional) O tempo máximo em segundos que o script pode ser executado antes que o software AWS IoT Greengrass principal encerre o processo.

Padrão: 120 segundos

Setenv

(Opcional) O dicionário de variáveis de ambiente a serem fornecidas ao script. Essas variáveis de ambiente substituem as variáveis que você fornece. Lifecycle.Setenv

shutdown

(Opcional) Um objeto ou string que define o script a ser executado quando o componente é encerrado. Use o ciclo de vida de desligamento para executar o código que você deseja executar quando o componente estiver no estado. STOPPING O ciclo de vida de desligamento pode ser usado para interromper um processo iniciado pelos startup scripts ou. run

Se você iniciar um processo em segundo plano nostartup, use a shutdown etapa para interromper esse processo quando o componente for encerrado. Por exemplo, você pode definir uma shutdown etapa que interrompa o processo do MySQL com. /etc/init.d/mysqld stop

O shutdown script é executado depois que o componente entra no STOPPING estado. Se o script for concluído com êxito, o componente entrará no FINISHED estado.

Esse objeto ou string contém as seguintes informações:

Script

O script a ser executado.

RequiresPrivilege

(Opcional) Você pode executar o script com privilégios de root. Se você definir essa opção comotrue, o software AWS IoT Greengrass Core executará esse script de ciclo de vida como root em vez de como usuário do sistema que você configura para executar esse componente. Padronizado como false.

Skipif

(Opcional) A verificação para determinar se o script deve ou não ser executado. Você pode definir para verificar se um executável está no caminho ou se existe um arquivo. Se a saída for verdadeira, o software AWS IoT Greengrass Core pulará a etapa. Escolha uma das seguintes verificações:

  • onpath runnable— Verifique se um executável está no caminho do sistema. Por exemplo, use onpath python3 para pular essa etapa do ciclo de vida se o Python 3 estiver disponível.

  • exists file— Verifique se existe um arquivo. Por exemplo, use exists /tmp/my-configuration.db para pular essa etapa do ciclo de vida, se estiver /tmp/my-configuration.db presente.

Timeout

(Opcional) O tempo máximo em segundos que o script pode ser executado antes que o software AWS IoT Greengrass principal encerre o processo.

Padrão: 15 segundos.

Setenv

(Opcional) O dicionário de variáveis de ambiente a serem fornecidas ao script. Essas variáveis de ambiente substituem as variáveis que você fornece. Lifecycle.Setenv

recover

(Opcional) Um objeto ou string que define o script a ser executado quando o componente encontra um erro.

Essa etapa é executada quando um componente entra no ERRORED estado. Se o componente se tornar ERRORED três vezes sem se recuperar com sucesso, o componente mudará para o BROKEN estado. Para corrigir um BROKEN componente, você deve implantá-lo novamente.

Esse objeto ou string contém as seguintes informações:

Script

O script a ser executado.

RequiresPrivilege

(Opcional) Você pode executar o script com privilégios de root. Se você definir essa opção comotrue, o software AWS IoT Greengrass Core executará esse script de ciclo de vida como root em vez de como usuário do sistema que você configura para executar esse componente. Padronizado como false.

Skipif

(Opcional) A verificação para determinar se o script deve ou não ser executado. Você pode definir para verificar se um executável está no caminho ou se existe um arquivo. Se a saída for verdadeira, o software AWS IoT Greengrass Core pulará a etapa. Escolha uma das seguintes verificações:

  • onpath runnable— Verifique se um executável está no caminho do sistema. Por exemplo, use onpath python3 para pular essa etapa do ciclo de vida se o Python 3 estiver disponível.

  • exists file— Verifique se existe um arquivo. Por exemplo, use exists /tmp/my-configuration.db para pular essa etapa do ciclo de vida, se estiver /tmp/my-configuration.db presente.

Timeout

(Opcional) O tempo máximo em segundos que o script pode ser executado antes que o software AWS IoT Greengrass principal encerre o processo.

Padrão: 60 segundos.

Setenv

(Opcional) O dicionário de variáveis de ambiente a serem fornecidas ao script. Essas variáveis de ambiente substituem as variáveis que você fornece. Lifecycle.Setenv

bootstrap

(Opcional) Um objeto ou string que define um script que exige que o software AWS IoT Greengrass principal ou o dispositivo principal seja reiniciado. Isso permite desenvolver um componente que executa uma reinicialização após instalar atualizações do sistema operacional ou atualizações de tempo de execução, por exemplo.

nota

Para instalar atualizações ou dependências que não exijam a reinicialização do software ou dispositivo AWS IoT Greengrass Core, use o ciclo de vida da instalação.

Essa etapa do ciclo de vida é executada antes da etapa do ciclo de vida da instalação nos seguintes casos, quando o software AWS IoT Greengrass principal implanta o componente:

  • O componente é implantado no dispositivo principal pela primeira vez.

  • A versão do componente muda.

  • O script de bootstrap muda como resultado de uma atualização da configuração do componente.

Depois que o software AWS IoT Greengrass principal concluir a etapa de inicialização de todos os componentes que têm uma etapa de inicialização em uma implantação, o software é reiniciado.

Importante

Você deve configurar o software AWS IoT Greengrass Core como um serviço do sistema para reiniciar o software AWS IoT Greengrass Core ou o dispositivo principal. Se você não configurar o software AWS IoT Greengrass Core como um serviço do sistema, o software não será reiniciado. Para ter mais informações, consulte Configurar o núcleo do Greengrass como um serviço do sistema.

Esse objeto ou string contém as seguintes informações:

BootstrapOnRollback
nota

Quando esse recurso estiver ativado, BootstrapOnRollback será executado somente para componentes que concluíram ou tentaram executar as etapas do ciclo de vida do bootstrap como parte de uma implantação de destino com falha. Esse recurso está disponível para as versões 2.12.0 e posteriores do Greengrass nucleus.

(Opcional) Você pode executar as etapas do ciclo de vida do bootstrap como parte de uma implantação de reversão. Se você definir essa opção comotrue, as etapas do ciclo de vida do bootstrap definidas em uma implantação de reversão serão executadas. Quando uma implantação falha, a versão anterior do ciclo de vida de bootstrap do componente será executada novamente durante uma implantação de reversão.

Padronizado como false.

Script

O script a ser executado. O código de saída desse script define a instrução de reinicialização. Use os seguintes códigos de saída:

  • 0— Não reinicie o software AWS IoT Greengrass principal nem o dispositivo principal. O software AWS IoT Greengrass Core ainda reinicia após a inicialização de todos os componentes.

  • 100— Solicitação para reiniciar o software AWS IoT Greengrass principal.

  • 101— Solicitação para reiniciar o dispositivo principal.

Os códigos de saída 100 a 199 são reservados para comportamentos especiais. Outros códigos de saída representam erros de script.

RequiresPrivilege

(Opcional) Você pode executar o script com privilégios de root. Se você definir essa opção comotrue, o software AWS IoT Greengrass Core executará esse script de ciclo de vida como root em vez de como usuário do sistema que você configura para executar esse componente. Padronizado como false.

Timeout

(Opcional) O tempo máximo em segundos que o script pode ser executado antes que o software AWS IoT Greengrass principal encerre o processo.

Padrão: 120 segundos

Setenv

(Opcional) O dicionário de variáveis de ambiente a serem fornecidas ao script. Essas variáveis de ambiente substituem as variáveis que você fornece. Lifecycle.Setenv

Selections

(Opcional) Uma lista de chaves de seleção que especificam seções do ciclo de vida global a serem executadas para esse manifesto. No ciclo de vida global, você pode definir etapas do ciclo de vida com chaves de seleção em qualquer nível para selecionar subseções do ciclo de vida. Em seguida, o dispositivo principal usa as seções que correspondem às teclas de seleção nesse manifesto. Para obter mais informações, consulte os exemplos de ciclo de vida global.

Importante

O dispositivo principal usa as seleções do ciclo de vida global somente se esse manifesto não definir um ciclo de vida.

Você pode especificar a chave all de seleção para executar seções do ciclo de vida global que não têm chaves de seleção.

Artifacts

(Opcional) Uma lista de objetos em que cada um define um artefato binário para o componente na plataforma que esse manifesto define. Por exemplo, você pode definir código ou imagens como artefatos.

Quando o componente é implantado, o software AWS IoT Greengrass Core baixa o artefato em uma pasta no dispositivo principal. Você também pode definir artefatos como arquivos de arquivamento que o software extrai depois de baixá-los.

Você pode usar variáveis de receita para obter os caminhos para as pastas em que os artefatos são instalados no dispositivo principal.

  • Arquivos normais — Use a variável de receita artifacts:path para obter o caminho para a pasta que contém os artefatos. Por exemplo, especifique {artifacts:path}/my_script.py em uma receita para obter o caminho para um artefato que tenha o URIs3://DOC-EXAMPLE-BUCKET/path/to/my_script.py.

  • Arquivos extraídos — Use a variável de receita artifacts:DecompressedPath para obter o caminho para a pasta que contém os artefatos do arquivo extraído. O software AWS IoT Greengrass Core extrai cada arquivo em uma pasta com o mesmo nome do arquivo. Por exemplo, especifique {artifacts:decompressedPath}/my_archive/my_script.py em uma receita para obter o caminho my_script.py no artefato de arquivamento que tem o URIs3://DOC-EXAMPLE-BUCKET/path/to/my_archive.zip.

nota

Ao desenvolver um componente com um artefato de arquivamento em um dispositivo central local, talvez você não tenha um URI para esse artefato. Para testar seu componente com uma Unarchive opção que extrai o artefato, especifique um URI em que o nome do arquivo corresponda ao nome do arquivo do artefato arquivado. Você pode especificar o URI no qual você espera carregar o artefato de arquivamento ou pode especificar um novo URI de espaço reservado. Por exemplo, para extrair o my_archive.zip artefato durante uma implantação local, você pode especificars3://DOC-EXAMPLE-BUCKET/my_archive.zip.

Cada objeto contém as seguintes informações:

URI

O URI de um artefato em um bucket do S3. O software AWS IoT Greengrass Core busca o artefato desse URI quando o componente é instalado, a menos que o artefato já exista no dispositivo. Cada artefato deve ter um nome de arquivo exclusivo em cada manifesto.

Unarchive

(Opcional) O tipo de arquivo a ser descompactado. Escolha uma das seguintes opções:

Padronizado como NONE.

Permission

(Opcional) Um objeto que define as permissões de acesso a serem definidas para esse arquivo de artefato. Você pode definir a permissão de leitura e a permissão de execução.

nota

Você não pode definir a permissão de gravação, porque o software AWS IoT Greengrass Core não permite que os componentes editem arquivos de artefatos na pasta de artefatos. Para editar um arquivo de artefato em um componente, copie-o para outro local ou publique e implante um novo arquivo de artefato.

Se você definir um artefato como um arquivo a ser descompactado, o software AWS IoT Greengrass Core definirá essas permissões de acesso nos arquivos que ele descompacta do arquivamento. O software AWS IoT Greengrass Core define as permissões de acesso da pasta ALL para Read Execute e. Isso permite que os componentes visualizem os arquivos descompactados na pasta. Para definir permissões em arquivos individuais do arquivamento, você pode definir as permissões no script do ciclo de vida da instalação.

Esse objeto contém as seguintes informações:

Read

(Opcional) A permissão de leitura a ser definida para esse arquivo de artefato. Para permitir que outros componentes acessem esse artefato, como componentes que dependem desse componente, especifiqueALL. Escolha uma das seguintes opções:

  • NONE— O arquivo não está legível.

  • OWNER— O arquivo pode ser lido pelo usuário do sistema que você configura para executar esse componente.

  • ALL— O arquivo pode ser lido por todos os usuários.

Padronizado como OWNER.

Execute

(Opcional) A permissão de execução a ser definida para esse arquivo de artefato. A Execute permissão implica a Read permissão. Por exemplo, se você especificar ALL paraExecute, todos os usuários poderão ler e executar esse arquivo de artefato.

Escolha uma das seguintes opções:

  • NONE— O arquivo não pode ser executado.

  • OWNER— O arquivo pode ser executado pelo usuário do sistema que você configura para executar o componente.

  • ALL— O arquivo pode ser executado por todos os usuários.

Padronizado como NONE.

Digest

(Somente leitura) O hash criptográfico do resumo do artefato. Quando você cria um componente, AWS IoT Greengrass usa um algoritmo de hash para calcular um hash do arquivo de artefato. Então, quando você implanta o componente, o núcleo do Greengrass calcula o hash do artefato baixado e compara o hash com esse resumo para verificar o artefato antes da instalação. Se o hash não corresponder ao resumo, a implantação falhará.

Se você definir esse parâmetro, AWS IoT Greengrass substituirá o valor definido ao criar o componente.

Algorithm

(Somente leitura) O algoritmo de hash AWS IoT Greengrass usado para calcular o hash de resumo do artefato.

Se você definir esse parâmetro, AWS IoT Greengrass substituirá o valor definido ao criar o componente.

Lifecycle

Um objeto que define como instalar e executar o componente. O dispositivo principal usa o ciclo de vida global somente se o manifesto a ser usado não especificar um ciclo de vida.

nota

Você define esse ciclo de vida fora de um manifesto. Você também pode definir um ciclo de vida do manifesto que se aplica às plataformas que correspondem a esse manifesto.

No ciclo de vida global, você pode especificar ciclos de vida que são executados para determinadas chaves de seleção que você especifica em cada manifesto. As chaves de seleção são cadeias de caracteres que identificam seções do ciclo de vida global a serem executadas para cada manifesto.

A tecla de all seleção é o padrão em qualquer seção sem uma chave de seleção. Isso significa que você pode especificar a chave all de seleção em um manifesto para executar as seções do ciclo de vida global sem chaves de seleção. Você não precisa especificar a chave de all seleção no ciclo de vida global.

Se um manifesto não definir um ciclo de vida ou chaves de seleção, o dispositivo principal usará a seleção como padrão. all Isso significa que, nesse caso, o dispositivo principal usa as seções do ciclo de vida global que não usam teclas de seleção.

Esse objeto contém as mesmas informações do ciclo de vida do manifesto, mas você pode especificar chaves de seleção em qualquer nível para selecionar subseções do ciclo de vida.

dica

Recomendamos que você use somente letras minúsculas para cada chave de seleção para evitar conflitos entre as chaves de seleção e as chaves do ciclo de vida. As chaves do ciclo de vida começam com letra maiúscula.

exemplo Exemplo de ciclo de vida global com chaves de seleção de alto nível
Lifecycle: key1: install: Skipif: either onpath executable or exists file Script: command1 key2: install: Script: command2 all: install: Script: command3
exemplo Exemplo de ciclo de vida global com chaves de seleção de nível inferior
Lifecycle: install: Script: key1: command1 key2: command2 all: command3
exemplo Exemplo de ciclo de vida global com vários níveis de chaves de seleção
Lifecycle: key1: install: Skipif: either onpath executable or exists file Script: command1 key2: install: Script: command2 all: install: Script: key3: command3 key4: command4 all: command5

Variáveis da receita

As variáveis da receita expõem informações do componente e do núcleo atuais para você usar em suas receitas. Por exemplo, você pode usar uma variável de receita para passar parâmetros de configuração do componente para um aplicativo executado em um script de ciclo de vida.

Você pode usar variáveis de receita nas seguintes seções das receitas de componentes:

As variáveis da receita usam {recipe_variable} sintaxe. Os colchetes indicam uma variável de receita.

AWS IoT Greengrass suporta as seguintes variáveis de receita:

component_dependency_name:configuration:json_pointer

O valor de um parâmetro de configuração para o componente que essa receita define ou para um componente do qual esse componente depende.

Você pode usar essa variável para fornecer um parâmetro para um script executado no ciclo de vida do componente.

nota

AWS IoT Greengrass suporta essa variável de receita somente nas definições do ciclo de vida do componente.

Essa variável de receita tem as seguintes entradas:

  • component_dependency_name— (Opcional) O nome da dependência do componente a ser consultada. Omita esse segmento para consultar o componente definido por essa receita. Você pode especificar somente dependências diretas.

  • json_pointer— O ponteiro JSON para o valor da configuração a ser avaliado. Os ponteiros JSON começam com uma barra. / Para identificar um valor em uma configuração de componente aninhado, use barras (/) para separar as chaves de cada nível na configuração. Você pode usar um número como chave para especificar um índice em uma lista. Para obter mais informações, consulte a especificação do ponteiro JSON.

    AWS IoT Greengrass O Core usa ponteiros JSON para receitas no formato YAML.

O ponteiro JSON pode fazer referência aos seguintes tipos de nós:

  • Um nó de valor. AWS IoT Greengrass O Core substitui a variável da receita pela representação em cadeia do valor. Valores nulos são convertidos em null uma string.

  • Um nó de objeto. AWS IoT Greengrass O Core substitui a variável de receita pela representação serializada da string JSON desse objeto.

  • Sem nó. AWS IoT Greengrass O núcleo não substitui a variável da receita.

Por exemplo, a variável de {configuration:/Message} receita recupera o valor da Message chave na configuração do componente. A variável de {com.example.MyComponentDependency:configuration:/server/port} receita recupera o valor de port no objeto de server configuração de uma dependência de componente.

component_dependency_name:artifacts:path

O caminho raiz dos artefatos para o componente que essa receita define ou para um componente do qual esse componente depende.

Quando um componente é instalado, AWS IoT Greengrass copia os artefatos do componente para a pasta que essa variável expõe. Você pode usar essa variável para identificar a localização de um script a ser executado no ciclo de vida do componente, por exemplo.

A pasta nesse caminho é somente para leitura. Para modificar arquivos de artefatos, copie os arquivos para outro local, como o diretório de trabalho atual ($PWDou.). Em seguida, modifique os arquivos lá.

Para ler ou executar um artefato a partir de uma dependência de componente, essa Execute permissão Read ou artefato deve ser. ALL Para obter mais informações, consulte as permissões de artefato que você define na receita do componente.

Essa variável de receita tem as seguintes entradas:

  • component_dependency_name— (Opcional) O nome da dependência do componente a ser consultada. Omita esse segmento para consultar o componente definido por essa receita. Você pode especificar somente dependências diretas.

component_dependency_name:artifacts:decompressedPath

O caminho raiz dos artefatos de arquivamento descompactado para o componente que essa receita define ou para um componente do qual esse componente depende.

Quando um componente é instalado, AWS IoT Greengrass descompacta os artefatos de arquivamento do componente na pasta que essa variável expõe. Você pode usar essa variável para identificar a localização de um script a ser executado no ciclo de vida do componente, por exemplo.

Cada artefato é descompactado em uma pasta dentro do caminho descompactado, onde a pasta tem o mesmo nome do artefato menos sua extensão. Por exemplo, um artefato ZIP chamado models.zip descompacta na pasta. {artifacts:decompressedPath}/models

A pasta nesse caminho é somente para leitura. Para modificar arquivos de artefatos, copie os arquivos para outro local, como o diretório de trabalho atual ($PWDou.). Em seguida, modifique os arquivos lá.

Para ler ou executar um artefato a partir de uma dependência de componente, essa Execute permissão Read ou artefato deve ser. ALL Para obter mais informações, consulte as permissões de artefato que você define na receita do componente.

Essa variável de receita tem as seguintes entradas:

  • component_dependency_name— (Opcional) O nome da dependência do componente a ser consultada. Omita esse segmento para consultar o componente definido por essa receita. Você pode especificar somente dependências diretas.

component_dependency_name:work:path

Esse recurso está disponível para a versão 2.0.4 e posterior do componente de núcleo do Greengrass.

O caminho de trabalho para o componente que essa receita define ou para um componente do qual esse componente depende. O valor dessa variável de receita é equivalente à saída da variável de $PWD ambiente e do comando pwd quando executado a partir do contexto do componente.

Você pode usar essa variável de receita para compartilhar arquivos entre um componente e uma dependência.

A pasta nesse caminho pode ser lida e gravada pelo componente definido por essa receita e por outros componentes que são executados pelo mesmo usuário e grupo.

Essa variável de receita tem as seguintes entradas:

  • component_dependency_name— (Opcional) O nome da dependência do componente a ser consultada. Omita esse segmento para consultar o componente definido por essa receita. Você pode especificar somente dependências diretas.

kernel:rootPath

O caminho raiz AWS IoT Greengrass principal.

iot:thingName

Esse recurso está disponível para a versão 2.3.0 e posterior do componente de núcleo do Greengrass.

O nome da AWS IoT coisa do dispositivo principal.

Exemplos de receitas

Você pode consultar os exemplos de receitas a seguir para ajudá-lo a criar receitas para seus componentes.

AWS IoT Greengrass organiza um índice dos componentes do Greengrass, chamado Catálogo de Software do Greengrass. Este catálogo rastreia os componentes do Greengrass que são desenvolvidos pela comunidade do Greengrass. A partir desse catálogo, você pode baixar, modificar e implantar componentes para criar seus aplicativos Greengrass. Para ter mais informações, consulte Componentes da comunidade.

Receita de componentes Hello World

A receita a seguir descreve um componente Hello World que executa um script Python. Esse componente suporta todas as plataformas e aceita um Message parâmetro que AWS IoT Greengrass passa como argumento para o script Python. Esta é a receita do componente Hello World no tutorial de introdução.

JSON
{ "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}" } }, { "Platform": { "os": "windows" }, "Lifecycle": { "run": "py -3 -u {artifacts:path}/hello_world.py {configuration:/Message}" } } ] }
YAML
--- 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}" - Platform: os: windows Lifecycle: run: | py -3 -u {artifacts:path}/hello_world.py "{configuration:/Message}"

Exemplo de componente de tempo de execução em Python

A receita a seguir descreve um componente que instala o Python. Esse componente é compatível com dispositivos Linux de 64 bits.

JSON
{ "RecipeFormatVersion": "2020-01-25", "ComponentName": "com.example.PythonRuntime", "ComponentDescription": "Installs Python 3.7", "ComponentPublisher": "Amazon", "ComponentVersion": "3.7.0", "Manifests": [ { "Platform": { "os": "linux", "architecture": "amd64" }, "Lifecycle": { "install": "apt-get update\napt-get install python3.7" } } ] }
YAML
--- RecipeFormatVersion: '2020-01-25' ComponentName: com.example.PythonRuntime ComponentDescription: Installs Python 3.7 ComponentPublisher: Amazon ComponentVersion: '3.7.0' Manifests: - Platform: os: linux architecture: amd64 Lifecycle: install: | apt-get update apt-get install python3.7

Receita de componente que especifica vários campos

A receita do componente a seguir usa vários campos de receita.

JSON
{ "RecipeFormatVersion": "2020-01-25", "ComponentName": "com.example.FooService", "ComponentDescription": "Complete recipe for AWS IoT Greengrass components", "ComponentPublisher": "Amazon", "ComponentVersion": "1.0.0", "ComponentConfiguration": { "DefaultConfiguration": { "TestParam": "TestValue" } }, "ComponentDependencies": { "BarService": { "VersionRequirement": "^1.1.0", "DependencyType": "SOFT" }, "BazService": { "VersionRequirement": "^2.0.0" } }, "Manifests": [ { "Platform": { "os": "linux", "architecture": "amd64" }, "Lifecycle": { "install": { "Skipif": "onpath git", "Script": "sudo apt-get install git" }, "Setenv": { "environment_variable1": "variable_value1", "environment_variable2": "variable_value2" } }, "Artifacts": [ { "URI": "s3://DOC-EXAMPLE-BUCKET/hello_world.zip", "Unarchive": "ZIP" }, { "URI": "s3://DOC-EXAMPLE-BUCKET/hello_world_linux.py" } ] }, { "Lifecycle": { "install": { "Skipif": "onpath git", "Script": "sudo apt-get install git", "RequiresPrivilege": "true" } }, "Artifacts": [ { "URI": "s3://DOC-EXAMPLE-BUCKET/hello_world.py" } ] } ] }
YAML
--- RecipeFormatVersion: '2020-01-25' ComponentName: com.example.FooService ComponentDescription: Complete recipe for AWS IoT Greengrass components ComponentPublisher: Amazon ComponentVersion: 1.0.0 ComponentConfiguration: DefaultConfiguration: TestParam: TestValue ComponentDependencies: BarService: VersionRequirement: ^1.1.0 DependencyType: SOFT BazService: VersionRequirement: ^2.0.0 Manifests: - Platform: os: linux architecture: amd64 Lifecycle: install: Skipif: onpath git Script: sudo apt-get install git Setenv: environment_variable1: variable_value1 environment_variable2: variable_value2 Artifacts: - URI: 's3://DOC-EXAMPLE-BUCKET/hello_world.zip' Unarchive: ZIP - URI: 's3://DOC-EXAMPLE-BUCKET/hello_world_linux.py' - Lifecycle: install: Skipif: onpath git Script: sudo apt-get install git RequiresPrivilege: 'true' Artifacts: - URI: 's3://DOC-EXAMPLE-BUCKET/hello_world.py'