

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 name="component-recipe-reference"></a>

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**  <a name="recipe-core-device-manifest-requirement"></a>
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á.

É possível definir fórmulas no formato [JSON](https://en.wikipedia.org/wiki/JSON) ou [YAML](https://en.wikipedia.org/wiki/YAML). A seção de exemplos de fórmulas inclui fórmulas em cada formato.

**Topics**
+ [Validação da fórmula](#recipe-validation)
+ [Formato da fórmula](#recipe-format)
+ [Variáveis da fórmula](#recipe-variables)
+ [Exemplos de fórmula](#recipe-examples)

## Validação da fórmula
<a name="recipe-validation"></a>

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](#recipe-format).

## Formato da fórmula
<a name="recipe-format"></a>

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](public-components.md) 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.  
<a name="semver-para"></a>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](https://semver.org/).

`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.  
<a name="configuration-value-type-note"></a>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`  <a name="recipe-reference-component-dependencies"></a>
(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](https://semver.npmjs.com/).  
`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.  
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](lambda-launcher-component.md). 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 funções AWS Lambda.](run-lambda-functions.md).
+ `aws.greengrass.plugin`: o componente é executado na mesma Java Virtual Machine (JVM) do Greengrass nucleus. Se você implantar ou reiniciar um componente de plug-in, o Greengrass nucleus será reiniciado.

  Esse plug-in usa o mesmo arquivo de log do Greengrass nucleus. Para obter mais informações, consulte [Monitore AWS IoT Greengrass logs](monitor-logs.md).

  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](public-components.md).
+ `aws.greengrass.nucleus`: o componente do núcleo. Para obter mais informações, consulte [Greengrass nucleus](greengrass-nucleus-component.md).

  Não recomendamos que você use essa opção em fórmulas de componentes. Ela é destinada ao componente do Greengrass nucleus, 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 componentes](develop-greengrass-components.md#component-types).

`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ê ao criar um componente a partir de uma função Lambda. Para obter mais informações, consulte [Executar funções AWS Lambda.](run-lambda-functions.md).

  `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.  
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` e`architecture`, e pode definir atributos adicionais. É possível especificar atributos de plataforma personalizados para um dispositivo principal ao implantar o componente de Greengrass nucleus. Para obter mais informações, consulte o [parâmetro de substituição da plataforma](greengrass-nucleus-component.md#greengrass-nucleus-component-configuration-platform-overrides) do [componente de Greengrass nucleus](greengrass-nucleus-component.md).  
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 [runtime do Greengrass nucleus](https://docs.aws.amazon.com/greengrass/v2/developerguide/how-it-works.html#concept-overview) para a plataforma que esse manifesto oferece suporte. Ao definir vários manifestos com `runtime` de plataforma, os valores de runtime com suporte em uma receita são `aws_nucleus_lite` e `*` somente. Para atingir um dispositivo classic, o campo de runtime NÃO DEVE ser especificado na receita. Os runtimes do Greengrass Nucleus com suporte 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. *Key*Substitua 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](greengrass-nucleus-component.md#greengrass-nucleus-component-configuration-platform-overrides) do [componente de Greengrass nucleus](greengrass-nucleus-component.md).  
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](#global-lifecycle-definition) 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.  
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](#global-lifecycle-definition) 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`  <a name="recipe-lifecycle-script"></a>
O script a ser executado.  
`RequiresPrivilege`  <a name="recipe-lifecycle-requiresprivilege"></a>
(Opcional) É possível executar o script com privilégios de raiz. Se você definir essa opção como`true`, 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`  <a name="recipe-lifecycle-skipif"></a>
(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`  <a name="recipe-lifecycle-timeout"></a>
(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`  <a name="recipe-lifecycle-environment"></a>
(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.  
É possível definir somente um ciclo de vida `startup` ou `run`.
Este objeto ou string contém as seguintes informações:    
`Script`  <a name="recipe-lifecycle-script"></a>
O script a ser executado.  
`RequiresPrivilege`  <a name="recipe-lifecycle-requiresprivilege"></a>
(Opcional) É possível executar o script com privilégios de raiz. Se você definir essa opção como`true`, 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`  <a name="recipe-lifecycle-skipif"></a>
(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`  <a name="recipe-lifecycle-timeout"></a>
(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`  <a name="recipe-lifecycle-environment"></a>
(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 [UpdateState](ipc-component-lifecycle.md#ipc-operation-updatestate)IPC 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.  
É possível definir somente um ciclo de vida `startup` ou `run`.
Este objeto ou string contém as seguintes informações:    
`Script`  <a name="recipe-lifecycle-script"></a>
O script a ser executado.  
`RequiresPrivilege`  <a name="recipe-lifecycle-requiresprivilege"></a>
(Opcional) É possível executar o script com privilégios de raiz. Se você definir essa opção como`true`, 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`  <a name="recipe-lifecycle-skipif"></a>
(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`  <a name="recipe-lifecycle-timeout"></a>
(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`  <a name="recipe-lifecycle-environment"></a>
(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`  <a name="recipe-lifecycle-script"></a>
O script a ser executado.  
`RequiresPrivilege`  <a name="recipe-lifecycle-requiresprivilege"></a>
(Opcional) É possível executar o script com privilégios de raiz. Se você definir essa opção como`true`, 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`  <a name="recipe-lifecycle-skipif"></a>
(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`  <a name="recipe-lifecycle-environment"></a>
(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`  <a name="recipe-lifecycle-script"></a>
O script a ser executado.  
`RequiresPrivilege`  <a name="recipe-lifecycle-requiresprivilege"></a>
(Opcional) É possível executar o script com privilégios de raiz. Se você definir essa opção como`true`, 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`  <a name="recipe-lifecycle-skipif"></a>
(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`  <a name="recipe-lifecycle-environment"></a>
(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.  
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](#install-lifecycle-definition).
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.  
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 Greengrass nucleus como um serviço do sistema](configure-greengrass-core-v2.md#configure-system-service).
Este objeto ou string contém as seguintes informações:    
`BootstrapOnRollback`  
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 Greengrass nucleus versão 2.12.0 e posteriores.
(Opcional) É possível 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`  <a name="recipe-lifecycle-requiresprivilege"></a>
(Opcional) É possível executar o script com privilégios de raiz. Se você definir essa opção como`true`, 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`  <a name="recipe-lifecycle-timeout"></a>
(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`  <a name="recipe-lifecycle-environment"></a>
(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](#global-lifecycle-definition) 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](#global-lifecycle-definition).  
O dispositivo principal usa as seleções do ciclo de vida global somente se este manifesto não definir um ciclo de vida.
É possível 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](#recipe-variables) 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](#component-recipe-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](#component-recipe-artifacts-decompressed-path) 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`.
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. É possível 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. É possível usar a [variável de fórmula artifacts:path](#component-recipe-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. É possível usar a [variável de fórmula artifacts:decompressedPath](#component-recipe-artifacts-decompressed-path) 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. É possível definir a permissão de leitura e a permissão de execução.  
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](#install-lifecycle-definition).  
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 Greengrass nucleus 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](#manifest-definition) a ser usado não especifica um ciclo de vida.  
Você define esse ciclo de vida dentro de um manifesto. Você também pode definir um [ciclo de vida do manifesto](#manifest-lifecycle-definition) 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](#manifest-selections-definition) 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](#manifest-lifecycle-definition), mas você pode especificar chaves de seleção em qualquer nível para selecionar subseções do ciclo de vida.  
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.

**Example 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
```

**Example Exemplo de ciclo de vida global com chaves de seleção de nível inferior**  

```
Lifecycle:
  install:
    Script:
      key1: command1
      key2: command2
      all: command3
```

**Example 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
<a name="recipe-variables"></a>

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.

É possível usar variáveis de fórmula nas seguintes seções das fórmulas de componentes:
+ Definições do ciclo de vida.
+ Definições de configuração de componentes, se você usar o [Greengrass nucleus](greengrass-nucleus-component.md) v2.6.0 ou posterior e definir a opção de configuração como. [interpolateComponentConfiguration](greengrass-nucleus-component.md#greengrass-nucleus-component-configuration-interpolate-component-configuration)`true` Você também pode usar variáveis de fórmulas ao [implantar atualizações de configuração de componentes](update-component-configurations.md#merge-configuration-update-recipe-variables).

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.  
É possível usar essa variável para fornecer um parâmetro para um script executado no ciclo de vida do componente.  
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:  
+ <a name="recipe-variable-component-dependency-name"></a>`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. É possível 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. É possível 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](https://tools.ietf.org/html/rfc6901).

  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ó. 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. É possível usar essa variável para identificar a localização de um script a ser executado no ciclo de vida do componente, por exemplo.  
<a name="recipe-variable-artifact-folder-permissions"></a>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.  
<a name="recipe-variable-component-dependency-artifact-file-permissions"></a>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](#component-artifact-permission) que você define na fórmula do componente.  
Essa variável de fórmula tem as seguintes entradas:  
+ <a name="recipe-variable-component-dependency-name"></a>`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. É possível 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. É possível 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 name="recipe-variable-artifact-folder-permissions"></a>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.  
<a name="recipe-variable-component-dependency-artifact-file-permissions"></a>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](#component-artifact-permission) que você define na fórmula do componente.  
Essa variável de fórmula tem as seguintes entradas:  
+ <a name="recipe-variable-component-dependency-name"></a>`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. É possível 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 Greengrass nucleus](greengrass-nucleus-component.md).  
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](https://en.wikipedia.org/wiki/Pwd) quando executado a partir do contexto do componente.  
É possível 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:  
+ <a name="recipe-variable-component-dependency-name"></a>`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. É possível especificar apenas 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 posteriores do [componente de Greengrass nucleus](greengrass-nucleus-component.md).  
O nome do dispositivo AWS IoT principal.

## Exemplos de fórmula
<a name="recipe-examples"></a>

É possível 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](greengrass-software-catalog.md).

**Topics**
+ [Fórmula do componente do Hello World](#recipe-example-hello-world)
+ [Exemplo de componente do runtime do Python](#recipe-example-python-runtime)
+ [Fórmula de componente que especifica vários campos](#recipe-example-all-fields)

### Fórmula do componente do Hello World
<a name="recipe-example-hello-world"></a>

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](getting-started.md).

------
#### [ 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 name="recipe-example-python-runtime"></a>

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 name="recipe-example-all-fields"></a>

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'
```

------