

Aviso de fim do suporte: em 7 de outubro de 2026, AWS o suporte para o. AWS IoT Greengrass Version 1 Depois de 7 de outubro de 2026, você não poderá mais acessar os AWS IoT Greengrass V1 recursos. Para obter mais informações, visite [Migrar de AWS IoT Greengrass Version 1](https://docs.aws.amazon.com/greengrass/v2/developerguide/migrate-from-v1.html).

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á.

# Módulo 3 (parte 1): funções Lambda em AWS IoT Greengrass
<a name="module3-I"></a>

Este módulo mostra como criar e implantar uma função Lambda que envia mensagens MQTT do seu AWS IoT Greengrass dispositivo principal. O módulo descreve configurações de funções do Lambda, assinaturas usadas para permitir mensagens MQTT e implantações em um dispositivo de núcleo.

O [módulo 3 (Parte 2)](module3-II.md) aborda as diferenças entre funções Lambda sob demanda e de longa duração executadas no núcleo. AWS IoT Greengrass 

Antes de começar, verifique se você concluiu o [Módulo 1](module1.md) e o [Módulo 2](module2.md) e tem um dispositivo AWS IoT Greengrass principal em execução.

**dica**  
Ou, para usar um script que configure o dispositivo de núcleo para você, consulte [Início rápido: Configuração do dispositivo do Greengrass](quick-start.md). O script também pode criar e implantar a função do Lambda usada neste módulo.

Este modulo levará aproximadamente 30 minutos para ser concluído.

**Topics**
+ [Crie e empacote uma função do Lambda](create-lambda.md)
+ [Configure a função Lambda para AWS IoT Greengrass](config-lambda.md)
+ [Implantar configurações de nuvem em um dispositivo de núcleo do Greengrass](configs-core.md)
+ [Verificar se a função do Lambda está em execução no dispositivo de núcleo](lambda-check.md)

# Crie e empacote uma função do Lambda
<a name="create-lambda"></a>

O exemplo de função do Lambda em Python deste módulo usa o [SDK do AWS IoT Greengrass Core](lambda-functions.md#lambda-sdks-core) para que o Python publique mensagens MQTT.

Nesta etapa:
+ Baixe o SDK AWS IoT Greengrass principal para Python no seu computador (não AWS IoT Greengrass no dispositivo principal).
+ Crie um pacote de implantação de funções do Lambda que contém o código da função e as dependências.
+ Use o console do Lambda para criar uma função do Lambda e fazer upload do pacote de implantação.
+ Publique uma versão da função do Lambda e crie um alias que aponte para a versão.

Para concluir este módulo, o Python 3.7 deve ser instalado no dispositivo principal.

 <a name="create-lambda-procedure"></a>

1. <a name="download-ggc-sdk"></a> Na página de downloads do [AWS IoT Greengrass Core SDK](what-is-gg.md#gg-core-sdk-download), baixe o AWS IoT Greengrass Core SDK para Python em seu computador.

1. Descompacte o pacote baixado para obter o código da função do Lambda e o SDK.

   A função do Lambda neste módulo usa:
   + O arquivo `greengrassHelloWorld.py` em `examples\HelloWorld`. Este é o código da função do Lambda. A cada cinco segundos, a função publica uma das duas possíveis mensagens no tópico `hello/world`.
   + A pasta `greengrasssdk`. Esse é o SDK.

1. Copie a pasta `greengrasssdk` para a pasta `HelloWorld` que contém `greengrassHelloWorld.py`.

1. Para criar o pacote de implantação de funções do Lambda, salve `greengrassHelloWorld.py` o `greengrasssdk` e a pasta `zip` em um arquivo compactado denominado `hello_world_python_lambda.zip`. O arquivo `py` e a pasta `greengrasssdk` devem estar na raiz do diretório.  
![\[Captura de tela mostrando o conteúdo compactado de hello_word_python_lambda.zip.\]](http://docs.aws.amazon.com/pt_br/greengrass/v1/developerguide/images/gg-get-started-017.png)

   Para sistemas semelhantes ao UNIX (incluindo o terminal Mac), é possível usar o comando a seguir para empacotar o arquivo e a pasta:

   ```
   zip -r hello_world_python_lambda.zip greengrasssdk greengrassHelloWorld.py
   ```
**nota**  
Dependendo da sua distribuição, pode ser necessário instalar `zip` primeiro (por exemplo, ao executar `sudo apt-get install zip`). O comando de instalação pode ser diferente para sua distribuição.

   Agora, você está pronto para criar sua função do Lambda e fazer upload do pacote de implantação.

1. Abra o console do Lambda e selecione **Criar função**.

1. Selecione **Author from scratch**.

1. Dê à função o nome **Greengrass\$1HelloWorld** e defina os campos restantes da seguinte forma:
   + Em **Runtime (Tempo de execução)**, selecione **Python 3.7**.
   + Em **Permissões**, mantenha a configuração padrão. Isso cria uma função de execução que concede permissões básicas do Lambda. Essa função não é usada por AWS IoT Greengrass.

   Escolha a opção **Criar função**.

1. Faça upload do pacote de implantação da função Lambda:

   1. <a name="lambda-console-upload"></a>Na guia **Código**, em **Fonte do código**, selecione **Fazer upload a partir de**. No menu suspenso, selecione o **arquivo .zip**.  
![\[O menu suspenso Fazer upload a partir de com o arquivo .zip destacado.\]](http://docs.aws.amazon.com/pt_br/greengrass/v1/developerguide/images/lra-console/upload-deployment-package.png)

   1. Selecione **Upload** e, em seguida, selecione seu pacote de implantação `hello_world_python_lambda.zip`. Selecione **Salvar**.

   1. <a name="lambda-console-runtime-settings-para"></a>Na guia **Código** da função, em **Configurações de runtime**, selecione **Editar** e insira os valores a seguir.
      + Em **Runtime (Tempo de execução)**, selecione **Python 3.7**.
      + Em **Handler (Manipulador)**, insira **greengrassHelloWorld.function\$1handler**.  
![\[A seção “Configurações de tempo de execução” com o campo “Tempo de execução” definido como “Python 3.7" e o campo “Handler” definido como ".function_handler”. greengrassHelloWorld\]](http://docs.aws.amazon.com/pt_br/greengrass/v1/developerguide/images/gg-get-started-023-2.png)

   1. <a name="lambda-console-save-config"></a>Escolha **Salvar**.
**nota**  
O botão **Testar** no AWS Lambda console não funciona com essa função. O SDK AWS IoT Greengrass principal não contém módulos necessários para executar suas funções do Greengrass Lambda de forma independente no console. AWS Lambda Esses módulos (por exemplo, `greengrass_common`) são fornecidos às funções depois de serem implantados no núcleo do Greengrass.

1. <a name="publish-function-version"></a>Publique a função do Lambda:

   1. No menu **Ações** na parte superior da página, selecione **Publicar versão nova**.  
![\[Captura de tela do menu Actions (Ações) com Publish new version (Publicar nova versão) em destaque.\]](http://docs.aws.amazon.com/pt_br/greengrass/v1/developerguide/images/gg-get-started-026.png)

   1. Em **Version description (Descrição da versão)**, insira **First version** e, em seguida, selecione **Publish (Publicar)**.  
![\[Captura de tela do campo Version description (Descrição da versão) definido como First version (Primeira versão) e o botão Publish (Publicar) em destaque.\]](http://docs.aws.amazon.com/pt_br/greengrass/v1/developerguide/images/gg-get-started-027.png)

1. <a name="create-version-alias"></a>Crie um [alias](https://docs.aws.amazon.com/lambda/latest/dg/configuration-aliases.html) para a [versão](https://docs.aws.amazon.com/lambda/latest/dg/versioning-aliases.html) da função do Lambda:
**nota**  
Os grupos do Greengrass podem fazer referência a uma função do Lambda por alias (recomendado) ou por versão. Usar um alias facilita o gerenciamento de atualizações de código porque você não precisa alterar a tabela de assinaturas nem a definição do grupo ao atualizar a função do código. Em vez disso, você pode simplesmente apontar o alias para a nova versão da função.

   1. No menu **Ações** na parte superior da página, selecione **Criar alias**.  
![\[Captura de tela do menu Actions (Ações) definido como Create alias (Criar alias).\]](http://docs.aws.amazon.com/pt_br/greengrass/v1/developerguide/images/gg-get-started-028.png)

   1. Nomeie o alias como **GG\$1HelloWorld**, defina a versão como **1** (que corresponde à versão que você acabou de publicar) e selecione **Salvar**.
**nota**  
AWS IoT Greengrass **não oferece suporte a aliases Lambda para as versões \$1LATEST.**

         
![\[Captura de tela de Criar um novo alias com o campo Nome definido como GG_ HelloWorld e o campo Versão definido como 1.\]](http://docs.aws.amazon.com/pt_br/greengrass/v1/developerguide/images/gg-get-started-029.png)

# Configure a função Lambda para AWS IoT Greengrass
<a name="config-lambda"></a>

Agora você está pronto para configurar sua função do Lambda para o AWS IoT Greengrass.

Nesta etapa:
+ Use o AWS IoT console para adicionar a função Lambda ao seu grupo do Greengrass.
+ Defina configurações específicas do grupo para a função do Lambda.
+ Adicione uma assinatura ao grupo que permita que a função do Lambda publique mensagens MQTT no AWS IoT.
+ Defina as configurações de log local para o grupo.

 

1. <a name="console-gg-groups"></a>No painel de navegação do AWS IoT console, em **Gerenciar**, expanda dispositivos **Greengrass** e **escolha Grupos (**V1).

1. Em **Grupos do Greengrass**, selecione o grupo criado por você no [Módulo 2](module2.md).

1. Na página de configuração do grupo, selecione a guia **Funções do Lambda** e, em seguida, role para baixo até a seção **Minhas funções do Lambda** e selecione **Adicionar função do Lambda**.

1. Selecione o nome da função Lambda que você criou na etapa anterior (**Greengrass\$1 HelloWorld**, não o nome do alias).

1. Para a versão, escolha **Alias: HelloWorld GG\$1**.

1. Na seção **Configuração da função do Lambda**, faça as seguintes alterações:
   + Defina o **Usuário e grupo do sistema** como **Usar padrão do grupo**.
   + Defina **Conteinerização da função do Lambda** para **Usar padrão do grupo**.
   + Defina **Timeout (Tempo limite)** como 25 segundos. Essa função do Lambda permanece em espera por 5 segundos antes de cada invocação.
   + Para **Fixado**, selecione **Verdadeiro**.

    
**nota**  
<a name="long-lived-lambda"></a>Uma função Lambda de *longa duração* (ou *fixada*) é iniciada automaticamente após o AWS IoT Greengrass início e continua sendo executada em seu próprio contêiner. Isso contrasta com uma função do Lambda *sob demanda*, que é iniciada quando invocada e interrompida quando não há tarefas a serem executadas. Para obter mais informações, consulte [Configuração do ciclo de vida das funções do Lambda do Greengrass](lambda-functions.md#lambda-lifecycle).

1. Selecione **Adicionar função do Lambda** para salvar as alterações. Para obter informações sobre as propriedades de funções do Lambda, consulte [Controlar a execução de funções do Lambda do Greengrass usando a configuração específica do grupo](lambda-group-config.md).

   Em seguida, crie uma assinatura que permita que a função do Lambda envie mensagens [MQTT](http://mqtt.org/) para o AWS IoT Core.

   A função do Lambda do Greengrass pode trocar mensagens MQTT com:
   + [Dispositivos](what-is-gg.md#greengrass-devices) no grupo do Greengrass.
   + [Conectores](connectors.md) no grupo.
   + Outras funções do Lambda no grupo.
   + AWS IoT Core.
   + O serviço de sombra local. Para obter mais informações, consulte [Módulo 5: Interagir com sombras de dispositivos](module5.md).

   O grupo usa assinaturas para controlar a maneira como essas entidades podem se comunicar umas com as outras. As assinaturas fornecem interações previsíveis e uma layer de segurança.

   Uma assinatura consiste em uma origem, um destino e um tópico. A origem é o originador da mensagem. O destino é o destino da mensagem. O tópico permite que você filtre os dados enviados da origem para o destino. A origem ou o destino podem ser um dispositivo do Greengrass, uma função do Lambda, um conector, uma sombra do dispositivo ou o AWS IoT Core.
**nota**  
Uma assinatura é direcionada de tal forma que as mensagens fluem em uma direção específica: da origem para o destino. Para permitir uma comunicação bidirecional, você deve configurar duas assinaturas.
**nota**  
 Atualmente, o filtro de tópicos da assinatura não permite mais do que um único caractere `+` em um tópico. O filtro de tópicos permite apenas um único caractere `#` no final de um tópico. 

   A função `Greengrass_HelloWorld` Lambda envia mensagens somente para o `hello/world` tópico em AWS IoT Core, então você só precisa criar uma assinatura da função Lambda para. AWS IoT Core Isso será feito na próxima etapa.

1. Na página de configuração do grupo, selecione a guia **Assinaturas** e, em seguida, **Adicionar assinatura**.

   Para obter um exemplo que mostra como criar uma assinatura usando o AWS CLI, consulte [create-subscription-definition](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/greengrass/create-subscription-definition.html)na *Referência de AWS CLI Comandos*.

1. **No **Tipo de fonte**, escolha a **função Lambda** e, para a **Fonte**, escolha Greengrass\$1. HelloWorld**

1. Para **Tipo de destino**, selecione **Serviço** e, para **Destino**, selecione **IoT Cloud**.

1. Em **Filtro de tópicos**, insira **hello/world** e, em seguida selecione **Criar assinatura**.

1. Defina as configurações de registro do grupo. Neste tutorial, configure os componentes do sistema do AWS IoT Greengrass e funções do Lambda definidas pelo usuário para gravar logs no sistema de arquivos do dispositivo do núcleo.

   1. Na página de configuração do grupo, selecione a guia **Logs**.

   1. Na seção **Configuração de logs local**, selecione **Editar**.

   1. Na caixa de diálogo **Editar configuração de logs locais**, mantenha os valores padrão para níveis de log e tamanhos de armazenamento e, em seguida, selecione **Salvar**.

   Você pode usar logs para solucionar quaisquer problemas que encontrar ao executar este tutorial. Ao solucionar problemas, é possível alterar temporariamente o nível de log para **Depurar**. Para obter mais informações, consulte [Acessar os logs do sistema de arquivos](greengrass-logs-overview.md#gg-logs-local).

1. <a name="disable-stream-manager-no-java"></a>Se o módulo de tempo de execução do Java 8 não estiver instalado no dispositivo de núcleo, você deverá instalá-lo ou desabilitar o gerenciador de fluxo.
**nota**  
Este tutorial não usa o gerenciador de fluxo, mas usa o fluxo de trabalho de **Criação de grupo padrão** que habilita o gerenciador de fluxo por padrão. Se o gerenciador de fluxo estiver habilitado, mas o Java 8 não estiver instalado, haverá falha na implantação do grupo. Para obter mais informações, consulte os [requisitos do gerenciador de fluxo](stream-manager.md#stream-manager-requirements).

   Para desabilitar o gerenciador de fluxo:

   1. Na página de configurações do grupo, selecione a guia **Funções do Lambda**.

   1. Na seção **Funções do Lambda do sistema**, selecione **Gerenciador de fluxo** e selecione **Editar**.

   1. Selecione **Desabilitar** e **Salvar**.

# Implantar configurações de nuvem em um dispositivo de núcleo do Greengrass
<a name="configs-core"></a>

1. Verifique se o dispositivo de núcleo está conectado à Internet. Por exemplo, tente navegar até uma página da Web.

1. Verifique se o daemon do Greengrass está em execução no dispositivo de núcleo. No terminal do dispositivo de núcleo, execute os comandos a seguir para verificar se o daemon está em execução e o inicie, caso necessário.

   1. Para verificar se o daemon está em execução:

      ```
      ps aux | grep -E 'greengrass.*daemon'
      ```

      Se a saída contém uma entrada `root` para `/greengrass/ggc/packages/1.11.6/bin/daemon`, o daemon está em execução.

   1. Para iniciar o daemon:

      ```
      cd /greengrass/ggc/core/
      sudo ./greengrassd start
      ```

   Agora você está pronto para implantar a função do Lambda e as configurações de assinatura no dispositivo de núcleo do Greengrass.

1. <a name="console-gg-groups"></a>No painel de navegação do AWS IoT console, em **Gerenciar**, expanda dispositivos **Greengrass** e **escolha Grupos (**V1).

1. Em **Grupos do Greengrass**, selecione o grupo criado por você no [Módulo 2](module2.md).

1. Na página de configuração do grupo, selecione **Implantar**.

1. Na guia **Funções do Lambda**, na seção **Funções do Lambda do sistema**, selecione **Detector de IP**.

1. Selecione **Editar** e, em seguida selecione **Automatically detect and override MQTT broker endpoints (Detectar e substituir automaticamente os endpoints de atendente MQTT)**. Isso permite que os dispositivos adquiram automaticamente as informações de conectividade para o núcleo, como endereço IP, DNS e o número da porta. A detecção automática é recomendada, mas o AWS IoT Greengrass também oferece suporte a endpoints especificados manualmente. Você só é solicitado pelo método de descoberta na primeira vez em que o grupo for implantado.

A primeira implantação pode demorar alguns minutos. Quando a implantação estiver concluída, você deverá ver **Successfully completed** (Concluído com êxito) na coluna **Status** da página **Deployments** (Implantações):

**nota**  
O status de implantação também é exibido abaixo do nome do grupo no cabeçalho da página.

Para obter ajuda sobre a solução de problemas, consulte [Solução de problemas AWS IoT Greengrass](gg-troubleshooting.md).

# Verificar se a função do Lambda está em execução no dispositivo de núcleo
<a name="lambda-check"></a>

1. No painel de navegação do [console do AWS IoT](https://console.aws.amazon.com/iot/), em **Teste**, selecione **Cliente de teste MQTT**.

1. Selecione a guia **Subscribe to topic (Inscrever-se no tópico)**.

1. Insira **hello/world** em **Filtro de tópicos** e expanda **Configuração adicional**.

1. Insira as informações listadas em cada um dos seguintes campos:
   + Para **Quality of Service (Qualidade de Serviço)**, selecione **0**.
   + Em **MQTT payload display (Exibição de carga MQTT)**, selecione **Display payloads as strings (Exibir cargas como strings)**.

    

1. Selecione **Subscribe**.

Supondo que a função do Lambda esteja sendo executada em seu dispositivo, ela publicará no tópico `hello/world` mensagens semelhantes à seguinte:

![\[Captura de tela da mensagem enviada para o hello/world tópico com a mensagem destacada.\]](http://docs.aws.amazon.com/pt_br/greengrass/v1/developerguide/images/gg-get-started-045.png)


Embora a função Lambda continue enviando mensagens MQTT para o `hello/world` tópico, não interrompa o daemon. AWS IoT Greengrass Os módulos restantes são gravados com a suposição de que ele esteja em execução.

Você pode excluir a função e a assinatura do grupo:
+ Na página de configuração de grupos, na guia **Funções do Lambda**, selecione a função do Lambda que você deseja remover e selecione **Remover**.
+ Na página de configuração de grupos, na guia **Assinaturas**, selecione a assinatura e, em seguida, selecione **Excluir**.

A função e a assinatura serão removidas do núcleo durante a próxima implantação de grupo.