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 fórmula 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 fórmula, é possível definir dependências e ciclos de vida exclusivos para cada plataforma que um componente suporta. Use 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 fórmula 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.

Também é possível especificar um ciclo de vida global que não esteja em um manifesto. No ciclo de vida global, é possível usar chaves de seleção que identificam subseções do ciclo de vida. Em seguida, é possível 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 ele não definir um ciclo de vida. Use a seleção all 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 usará esse ciclo de vida. 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 usará as seções do ciclo de vida global que não contêm as chaves de seleção. Esse comportamento é equivalente a um manifesto que define a seleção all.

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 fórmulas no formato JSON ou YAML. A seção de exemplos de fórmulas inclui fórmulas em cada formato.

Validação da fórmula

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

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

Formato da fórmula

Ao definir uma fórmula para um componente, você especifica as seguintes informações no documento dela. A mesma estrutura se aplica às fórmulas nos formatos YAML e JSON.

RecipeFormatVersion

A versão modelo para a fórmula. Escolha a seguinte opção:

  • 2020-01-25

ComponentName

O nome do componente definido por essa fórmula. 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 empresa. Por exemplo, se sua empresa é dona do example.com e você trabalha em um projeto de energia solar, é possível nomear seu componente Hello World como com.example.solar.HelloWorld. Isso ajuda a evitar colisões de nomes de componentes na empresa.

  • Evite o prefixo aws.greengrass nos nomes dos componentes. O 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 atributo permite que você substitua o comportamento de componentes públicos, mas também pode interromper outros componentes se você não pretende substituir um 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 mais informações, consulte a especificação de versão semântica.

ComponentDescription

(Opcional) A descrição do componente.

ComponentPublisher

O publicador ou o 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 é compatível com parâmetros e estruturas aninhados. Esse objeto contém as informações a seguir:

DefaultConfiguration

Um objeto que define a configuração padrão para o 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 flutuantes no AWS IoT Greengrass. Para garantir que seu componente use o tipo de dados correto, recomendamos que você defina valores de configuração numéricos como strings. 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. É possível especificar uma versão ou um intervalo de versões. Para obter mais informações, consulte calculadora de 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.

O padrão é 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:

  • aws.greengrass.generic: o componente executa comandos ou fornece artefatos.

  • aws.greengrass.lambda: o componente executa uma função do Lambda usando o componente componente do iniciador Lambda. O parâmetro ComponentSource especifica o ARN da função do 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 obter mais informações, consulte Executar AWS Lambda funções.

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

    Esse plug-in usa o mesmo arquivo de log do núcleo do Greengrass. Para obter 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 mais informações sobre quais componentes públicos são plug-ins, consulte Componentes fornecidos pela AWS.

  • aws.greengrass.nucleus: o componente do núcleo. Para obter mais informações, consulte Núcleo do Greengrass.

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

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

Para obter mais informações, consulte Tipos de componente.

ComponentSource

(Opcional) O ARN da função do 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 obter 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 corresponder 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 fácil 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 de núcleo do Greengrass. Para obter mais informações, consulte o parâmetro de substituição da plataforma do componente de núcleo do Greengrass.

Para cada par de chave-valor, é possível especificar um dos seguintes valores:

  • Um valor exato, como linux ou windows. 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 informações a seguir:

runtime

O tempo de execução do núcleo Greengrass para a plataforma que esse manifesto suporta. Ao definir vários manifestos com a plataformaruntime, os valores de tempo de execução suportados em uma receita são aws_nucleus_lite e * somente. Para atingir um dispositivo clássico, o campo de tempo de execução NÃO DEVE ser especificado na receita. Os tempos de execução do Greengrass Nucleus suportados incluem os seguintes valores:

  • *

  • aws_nucleus_lite

os

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

  • linux

  • windows

  • darwin (macOS)

architecture

(Opcional) A arquitetura do processador para a plataforma compatível com esse manifesto. Arquiteturas comuns incluem os seguintes valores:

  • amd64

  • arm

  • aarch64

  • x86

architecture.detail

(Opcional) O detalhe da arquitetura do processador para a plataforma compatível com esse manifesto. Detalhes comuns de arquitetura incluem os seguintes valores:

  • arm61

  • arm71

  • arm81

key

(Opcional) Um atributo de plataforma que você define para esse manifesto. KeySubstitua 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 de núcleo do Greengrass.

dica

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

Por exemplo, é possível 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. Também é possível 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. Também é possível definir um ciclo de vida global que se aplique a todas as plataformas.

Este 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. É possível substituir essas variáveis de ambiente com 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 script install sair com um código de sucesso, o componente entrará no estado INSTALLED.

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

Script

O script a ser executado.

RequiresPrivilege

(Opcional) É possível executar o script com privilégios de raiz. 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. O padrão é false.

Skipif

(Opcional) A verificação para determinar se o script deve ou não ser executado. É possível 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 /tmp/my-configuration.db estiver presente.

Timeout

(Opcional) O tempo máximo, em segundos, em que o script pode ser executado antes que o software AWS IoT Greengrass Core termine 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 em Lifecycle.Setenv.

run

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

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

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 startup do ciclo de vida.

Quando você implanta componentes com um ciclo de vida run, 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 run do 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 startup do ciclo de vida em vez disso.

nota

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

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

Script

O script a ser executado.

RequiresPrivilege

(Opcional) É possível executar o script com privilégios de raiz. 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. O padrão é false.

Skipif

(Opcional) A verificação para determinar se o script deve ou não ser executado. É possível 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 /tmp/my-configuration.db estiver 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.

Por padrão, essa etapa do ciclo de vida não atinge o tempo limite. Se você omitir esse tempo limite, o script run 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 em 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, é possível definir uma etapa startup que inicie o processo do MySQL com /etc/init.d/mysqld start.

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

Quando você implanta componentes com um ciclo de vida startup, o dispositivo principal pode relatar a implantação como concluída assim que esse script de ciclo de vida sai ou relata o 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 ciclo de vida startup ou run.

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

Script

O script a ser executado.

RequiresPrivilege

(Opcional) É possível executar o script com privilégios de raiz. 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. O padrão é false.

Skipif

(Opcional) A verificação para determinar se o script deve ou não ser executado. É possível 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 /tmp/my-configuration.db estiver presente.

Timeout

(Opcional) O tempo máximo, em segundos, em que o script pode ser executado antes que o software AWS IoT Greengrass Core termine 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 em 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ê quer executar quando o componente estiver no estado STOPPING. O ciclo de vida de desligamento pode ser usado para interromper um processo iniciado pelos scripts startup ou run.

Se você iniciar um processo em segundo plano na startup, use a etapa shutdown para interromper esse processo quando o componente for encerrado. Por exemplo, é possível definir uma etapa shutdown que pare o processo do MySQL com /etc/init.d/mysqld stop.

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

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

Script

O script a ser executado.

RequiresPrivilege

(Opcional) É possível executar o script com privilégios de raiz. 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. O padrão é false.

Skipif

(Opcional) A verificação para determinar se o script deve ou não ser executado. É possível 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 /tmp/my-configuration.db estiver 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 em Lifecycle.Setenv.

recover

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

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

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

Script

O script a ser executado.

RequiresPrivilege

(Opcional) É possível executar o script com privilégios de raiz. 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. O padrão é false.

Skipif

(Opcional) A verificação para determinar se o script deve ou não ser executado. É possível 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 /tmp/my-configuration.db estiver 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 em Lifecycle.Setenv.

bootstrap

(Opcional) Um objeto ou string que define um script que exige que o software AWS IoT Greengrass Core 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 runtime, 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 altera.

  • 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 obter mais informações, consulte Configurar o núcleo do Greengrass como um serviço do sistema.

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

BootstrapOnRollback
nota

Quando esse recurso estiver ativado, o 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 atributo está disponível com o núcleo do Greengrass versão 2.12.0 e posteriores.

(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 como true, 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.

O padrão é 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 de 100 a 199 são reservados para comportamentos especiais. Outros códigos de saída representam erros de script.

RequiresPrivilege

(Opcional) É possível executar o script com privilégios de raiz. 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. O padrão é false.

Timeout

(Opcional) O tempo máximo, em segundos, em que o script pode ser executado antes que o software AWS IoT Greengrass Core termine 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 em 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, é possível 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 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 este manifesto não definir um ciclo de vida.

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

Artifacts

(Opcional) Uma lista de objetos, cada um definindo um artefato binário para o componente na plataforma definido por esse manifesto. Por exemplo, é possível 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 que o software extrai após baixá-los.

É possível usar variáveis de fórmula para obter os caminhos para as pastas em que os artefatos são instalados no dispositivo principal.

  • Arquivos normais: use a variável de fórmula artifacts:path para obter o caminho para a pasta que contém os artefatos. Por exemplo, especifique {artifacts:path}/my_script.py em uma fórmula para obter o caminho para um artefato que tenha o URI s3://amzn-s3-demo-bucket/path/to/my_script.py.

  • Arquivos extraídos: use a variável de fórmula 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 fórmula para obter o caminho para my_script.py no artefato de arquivo que tenha o URI s3://amzn-s3-demo-bucket/path/to/my_archive.zip.

nota

Ao desenvolver um componente com um artefato de arquivo em um dispositivo principal local, talvez você não tenha um URI para esse artefato. Para testar seu componente com uma opção Unarchive que extrai o artefato, especifique um URI em que o nome do arquivo corresponda ao nome do arquivo do artefato de arquivo. Você pode especificar o URI no qual você espera carregar o artefato de arquivo ou pode especificar um novo URI de espaço reservado. Por exemplo, para extrair o artefato my_archive.zip durante uma implantação local, é possível especificar s3://amzn-s3-demo-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:

  • NONE: o arquivo não é um arquivo para descompactar. O software AWS IoT Greengrass Core instala o artefato em uma pasta no dispositivo principal. Você pode usar a variável de fórmula artifacts:path para obter o caminho para essa pasta.

  • ZIP: o arquivo é um arquivo ZIP. O software AWS IoT Greengrass Core extrai o arquivo em uma pasta com o mesmo nome do arquivo. Você pode usar a variável de fórmula artifacts:decompressedPath para obter o caminho para a pasta que contém esta pasta.

O padrão é 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 arquivo, você pode definir as permissões no script do ciclo de vida da instalação.

Esse objeto contém as informações a seguir:

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 dele, especifique ALL. 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.

O padrão é OWNER.

Execute

(Opcional) A permissão de execução a ser definida para esse arquivo de artefato. A permissão Execute implica a permissão Read. Por exemplo, se você especificar ALL para Execute, 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.

O padrão é 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 especifica um ciclo de vida.

nota

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

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 seleção all é o padrão em qualquer seção sem uma chave de seleção. Isso significa que você pode especificar a chave de seleção all em um manifesto para executar as seções do ciclo de vida global sem chaves de seleção. Não é necessário especificar a chave de seleção all 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 all como padrão. 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 de ciclo de vida começam com uma 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 chaves de seleção de vários níveis
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 fórmula

As variáveis da fórmula expõem informações do componente e do núcleo atuais para você usar nas fórmulas. Por exemplo, você pode usar uma variável de fórmula para passar parâmetros de configuração do componente para uma aplicação executada em um script de ciclo de vida.

Você pode usar variáveis de fórmula nas seguintes seções das fórmulas de componentes:

As variáveis da fórmula usam a sintaxe {recipe_variable}. Os colchetes indicam uma variável de fórmula.

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 fórmula 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 fórmula tem as seguintes entradas:

  • component_dependency_name: (opcional) o nome da dependência do componente para consultar. Omita esse segmento para consultar o componente definido por essa fórmula. Você pode especificar apenas 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 como null em 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ódulo. AWS IoT Greengrass O núcleo não substitui a variável da receita.

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

component_dependency_name:artifacts:path

O caminho raiz dos artefatos para o componente que esta fórmula define ou para um componente do qual este 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 ($PWD ou .). Em seguida, modifique os arquivos ali.

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

Essa variável de fórmula tem as seguintes entradas:

  • component_dependency_name: (opcional) o nome da dependência do componente para consultar. Omita esse segmento para consultar o componente definido por essa fórmula. Você pode especificar apenas dependências diretas.

component_dependency_name:artifacts:decompressedPath

O caminho raiz dos artefatos de arquivo descompactado para o componente que essa fórmula define ou para um componente do qual ele 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, em que a pasta tem o mesmo nome do artefato menos a extensão dele. 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 ($PWD ou .). Em seguida, modifique os arquivos ali.

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

Essa variável de fórmula tem as seguintes entradas:

  • component_dependency_name: (opcional) o nome da dependência do componente para consultar. Omita esse segmento para consultar o componente definido por essa fórmula. Você pode especificar apenas dependências diretas.

component_dependency_name:work:path

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

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

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

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

Essa variável de fórmula tem as seguintes entradas:

  • component_dependency_name: (opcional) o nome da dependência do componente para consultar. Omita esse segmento para consultar o componente definido por essa fórmula. Você pode especificar apenas dependências diretas.

kernel:rootPath

O caminho raiz AWS IoT Greengrass principal.

iot:thingName

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

O nome da AWS IoT coisa do dispositivo principal.

Exemplos de fórmula

Você pode consultar os seguintes exemplos de fórmulas para ajudar a criar fórmulas 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 suas aplicações Greengrass. Para obter mais informações, consulte Componentes da comunidade.

Fórmula do componente do Hello World

A fórmula a seguir descreve um componente Hello World que executa um script do Python. Esse componente é compatível com todas as plataformas e aceita um parâmetro Message que o AWS IoT Greengrass passa como argumento para o script Python. Esta é a fórmula 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 do runtime do Python

A fórmula 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

Fórmula de componente que especifica vários campos

A fórmula do componente a seguir usa vários campos de fórmula.

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://amzn-s3-demo-bucket/hello_world.zip", "Unarchive": "ZIP" }, { "Uri": "s3://amzn-s3-demo-bucket/hello_world_linux.py" } ] }, { "Lifecycle": { "install": { "Skipif": "onpath git", "Script": "sudo apt-get install git", "RequiresPrivilege": "true" } }, "Artifacts": [ { "Uri": "s3://amzn-s3-demo-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://amzn-s3-demo-bucket/hello_world.zip' Unarchive: ZIP - Uri: 's3://amzn-s3-demo-bucket/hello_world_linux.py' - Lifecycle: install: SkipIf: onpath git Script: sudo apt-get install git RequiresPrivilege: 'true' Artifacts: - Uri: 's3://amzn-s3-demo-bucket/hello_world.py'