

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 2): funções Lambda em AWS IoT Greengrass
<a name="module3-II"></a>

Este módulo explora 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, execute o script de [configuração do dispositivo do Greengrass](quick-start.md) ou verifique se você concluiu o [módulo 1](module1.md), o [módulo 2](module2.md) e o [módulo 3 (parte 1)](module3-I.md).

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

**Topics**
+ [Criar e empacotar a função do Lambda](package.md)
+ [Configure funções Lambda de longa duração para AWS IoT Greengrass](long-lived.md)
+ [Testar funções de longa duração do Lambda](long-testing.md)
+ [Teste as funções do Lambda sob demanda](on-demand.md)

# Criar e empacotar a função do Lambda
<a name="package"></a>

Nesta etapa:
+ 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.

 

1. No seu computador, acesse o SDK AWS IoT Greengrass principal para Python que você baixou e extraiu [Crie e empacote uma função do Lambda](create-lambda.md) no Módulo 3-1.

   A função do Lambda neste módulo usa:
   + O arquivo `greengrassHelloWorldCounter.py` em `examples\HelloWorldCounter`. Este é o código da função do Lambda.
   + A pasta `greengrasssdk`. Esse é o SDK.

1. Crie um pacote de implantação da função do Lambda;

   1. Copie a pasta `greengrasssdk` para a pasta `HelloWorldCounter` que contém `greengrassHelloWorldCounter.py`.

   1. Salve `greengrassHelloWorldCounter.py` e a pasta `greengrasssdk` em um arquivo `zip` chamado `hello_world_counter_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_counter_python_lambda.zip.\]](http://docs.aws.amazon.com/pt_br/greengrass/v1/developerguide/images/gg-get-started-046.png)

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

      ```
      zip -r hello_world_counter_python_lambda.zip greengrasssdk greengrassHelloWorldCounter.py
      ```

   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\$1Counter** 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. Também é possível reutilizar a função criada no módulo 3-1.

   Selecione **Criar função**.  
![\[A seção “Informações básicas” com o campo “Nome da função” definido como “Greengrass_ HelloWorld _Counter” e o campo “Runtime” definido como “Python 3.7".\]](http://docs.aws.amazon.com/pt_br/greengrass/v1/developerguide/images/gg-get-started-023-3.png)

1. Faça upload do pacote de implantação da função do 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_counter_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 **greengrassHelloWorldCounter.function\$1handler**.

   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. Publique a primeira versão da função.

   1. No menu **Ações** na parte superior da página, selecione **Publicar versão nova**. Em **Version description (Descrição da versão)**, insira **First version**.

   1. Selecione **Publish**.

1. Crie um alias para a 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. Em **Nome**, digite **GG\$1HW\$1Counter**.

   1. Em **Version**, selecione **1**.

   1. Selecione **Salvar**.  
![\[Captura de tela de Criar alias com o campo Nome definido como GG_HW_Counter e o campo Versão definido como 1.\]](http://docs.aws.amazon.com/pt_br/greengrass/v1/developerguide/images/gg-get-started-048.png)

   Os aliases criam uma única entidade para a sua função do Lambda que os Dispositivos Greengrass podem assinar. Dessa forma, não é necessário atualizar assinaturas com novos números de versão da função do Lambda sempre que a função é modificada.

# Configure funções Lambda de longa duração para AWS IoT Greengrass
<a name="long-lived"></a>

Agora você está pronto para configurar sua função do Lambda para o AWS IoT 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 a guia **Funções do Lambda** e, em seguida, em **Minhas funções do Lambda**, selecione **Adicionar**.

1. Para a **função Lambda**, escolha **HelloWorldGreengrass\$1** \$1Counter.

1. Em **Versão da função do Lambda**, selecione o alias da versão que você publicou.

1. Em **Tempo limite (segundos)**, insira **25**. Essa função do Lambda permanece em espera por 20 segundos antes de cada invocação.

1. Para **Fixado**, selecione **Verdadeiro**.

1. Deixe todos os outros campos nos valores padrão e selecione **Adicionar função do Lambda**.

# Testar funções de longa duração do Lambda
<a name="long-testing"></a>

Uma função Lambda de *[longa duração](lambda-functions.md#lambda-lifecycle)* é iniciada automaticamente quando AWS IoT Greengrass o núcleo é iniciado e executado em um único contêiner (ou sandbox). Todas as variáveis e lógica de pré-processamento definidas fora do manipulador de funções são mantidas para cada invocação do manipulador de funções. As várias invocações do manipulador de funções são colocadas em fila até que a execução das invocações anteriores tenha sido executada.

 O código `greengrassHelloWorldCounter.py` usado neste módulo define uma variável `my_counter` fora do manipulador de funções.

**nota**  
Você pode ver o código no AWS Lambda console ou no [SDK AWS IoT Greengrass principal para GitHub Python](https://github.com/aws/aws-greengrass-core-sdk-python/blob/master/examples/HelloWorldCounter/greengrassHelloWorldCounter.py) em.

Nesta etapa, você cria assinaturas que permitem a função Lambda e AWS IoT a troca de mensagens MQTT. Em seguida, você implanta o grupo e testa a função.

1. Na página de configuração do grupo, selecione **Inscrições** e, então, selecione **Adicionar**.

1. Em **Tipo de fonte**, escolha **Função Lambda** e, em seguida, escolha **HelloWorldGreengrass\$1** \$1Counter.

1. Em **Tipo de destino**, selecione **Serviço**, selecione **IoT Cloud**.

1. Para **Topic filter**, insira **hello/world/counter**.

1. Selecione **Create subscription**.

   Essa assinatura única vai em apenas uma direção: da função `Greengrass_HelloWorld_Counter` Lambda para. AWS IoT Para invocar (ou trigger) essa função do Lambda na nuvem, é necessário criar uma assinatura na direção oposta.

1. Siga as etapas de 1 a 5 para adicionar outra assinatura que use o valores a seguir. Essa assinatura permite que a função do Lambda receba mensagens da AWS IoT. Você usa essa assinatura ao enviar uma mensagem do AWS IoT console que invoca a função.
   + Para a origem, selecione **Serviço** e, em seguida, selecione **IoT Cloud**.
   + Para o destino, escolha a **função Lambda** e, em seguida, escolha **HelloWorldGreengrass\$1** \$1Counter.
   + Para o filtro de tópico, insira **hello/world/counter/trigger**.

   A extensão `/trigger` é usada neste filtro de tópicos porque você criou duas assinaturas e não deseja que uma interfira na outra.

1. Verifique se o daemon do Greengrass está em execução, como descrito em [Implantar configurações de nuvem em um dispositivo de núcleo](configs-core.md).

1. <a name="console-actions-deploy"></a>Na página de configuração do grupo, selecione **Implantar**.

1. <a name="console-test-after-deploy"></a>Após a conclusão da implantação, retorne à página inicial do AWS IoT console e escolha **Testar**.

1. Configure os campos a seguir.
   + Em **Subscription topic (Tópico de assinatura)**, insira **hello/world/counter**.
   + 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**.

   Ao contrário da [Parte 1](module3-I.md) deste módulo, você deverá ver nenhuma mensagem depois de assinar `hello/world/counter`. Isso ocorre porque o código `greengrassHelloWorldCounter.py` que publica para o tópico `hello/world/counter` está dentro do manipulador de funções, que é executado somente quando a função é invocada.

   Neste módulo, você configurou a função `Greengrass_HelloWorld_Counter` do Lambda para ser invocada quando ela recebe uma mensagem MQTT no tópico `hello/world/counter/trigger`.

   A assinatura **Greengrass\$1 HelloWorld \$1Counter** to **IoT** Cloud permite que a função envie mensagens sobre o tópico. AWS IoT `hello/world/counter` A assinatura **IoT Cloud** to **Greengrass\$1 HelloWorld \$1Counter** permite enviar mensagens AWS IoT para a função sobre o tópico. `hello/world/counter/trigger`

1. Para testar o ciclo de vida de longa duração, invoque a função do Lambda publicando uma mensagem no tópico `hello/world/counter/trigger`. Você pode usar a mensagem padrão.  
![\[Mensagem padrão de Olá do AWS IoT console enviada hello/world/counter/trigger com o botão Publicar no tópico destacado.\]](http://docs.aws.amazon.com/pt_br/greengrass/v1/developerguide/images/gg-get-started-057.png)
**nota**  
 A função `Greengrass_HelloWorld_Counter` ignora o conteúdo das mensagens recebidas. Ela só executa o código no `function_handler`, que envia uma mensagem ao tópico `hello/world/counter`. Você pode revisar esse código no [SDK AWS IoT Greengrass principal para GitHub Python](https://github.com/aws/aws-greengrass-core-sdk-python/blob/master/examples/HelloWorldCounter/greengrassHelloWorldCounter.py) em.

Sempre que uma mensagem é publicada no tópico `hello/world/counter/trigger`, a variável `my_counter` é incrementada. Essa contagem de invocação é mostrada nas mensagens enviadas da função do Lambda. Como o manipulador de funções inclui um ciclo de sono de 20 segundos (`time.sleep(20)`), acionar repetidamente o manipulador enfileira as respostas do núcleo. AWS IoT Greengrass 

![\[Captura de tela mostrando o incremento de Invocation Count (Contagem de invocação) de 1, 2 e 3.\]](http://docs.aws.amazon.com/pt_br/greengrass/v1/developerguide/images/gg-get-started-058.png)


# Teste as funções do Lambda sob demanda
<a name="on-demand"></a>

Uma função Lambda *[sob demanda](lambda-functions.md#lambda-lifecycle)* tem funcionalidade semelhante a uma AWS Lambda função baseada em nuvem. Várias invocações de uma função do Lambda sob demanda podem ser executadas em paralelo. Uma invocação da função do Lambda cria um contêiner separado para processar invocações ou reutiliza um contêiner existente caso os recursos permitam. Quaisquer variáveis ou pré-processamento definidos fora do manipulador de funções não serão mantidos quando os novos contêineres forem criados.

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

1. Em **Funções do My Lambda**, escolha **Greengrass\$1HelloWorld\$1Counter**Função Lambda.

1. Sobre o **Greengrass\$1HelloWorld\$1Counter**página de detalhes, escolha **Editar**.

1. Em **Fixado**, selecione **Falso** e, em seguida, selecione **Salvar**.

1. <a name="console-actions-deploy"></a>Na página de configuração do grupo, selecione **Implantar**.

1. <a name="console-test-after-deploy"></a>Após a conclusão da implantação, retorne à página inicial do AWS IoT console e escolha **Testar**.

1. Configure os campos a seguir.
   + Em **Subscription topic (Tópico de assinatura)**, insira **hello/world/counter**.
   + 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)**.  
![\[Captura de tela da página de teste de Subscriptions (Assinaturas).\]](http://docs.aws.amazon.com/pt_br/greengrass/v1/developerguide/images/gg-get-started-056.png)

1. Selecione **Subscribe**.
**nota**  
Você não deverá ver nenhuma mensagem depois de fazer a assinatura.

1. Para testar o ciclo de vida sob demanda, invoque a função publicando uma mensagem no tópico `hello/world/counter/trigger`. Você pode usar a mensagem padrão.

   1. Selecione **Publicar** três vezes rapidamente, dentro de cinco segundos entre cada vez que pressionar o botão.  
![\[Captura de tela mostrando o botão Publish to topic (Publicar no tópico), que deve ser clicado rapidamente três vezes.\]](http://docs.aws.amazon.com/pt_br/greengrass/v1/developerguide/images/gg-get-started-063.png)

      Cada publicação invoca o manipulador de funções e cria um contêiner para cada invocação. A contagem de invocações não é incrementada nas três vezes que você acionou a função, pois cada função do Lambda sob demanda tem seu próprio contêiner/sandbox.  
![\[Captura de tela mostrando Invocation Count (Contagem de invocação) fixada em 1.\]](http://docs.aws.amazon.com/pt_br/greengrass/v1/developerguide/images/gg-get-started-064.png)

   1. Depois de aproximadamente 30 segundos, selecione **Publish to topic (Publicar em um tópico)**. A contagem de invocações deve ser incrementada para 2. Isso mostra que um contêiner, criado primeiro de uma invocação anterior está sendo reutilizado e que as variáveis de pré-processamento fora do manipulador de funções foram armazenadas.  
![\[Captura de tela mostrando Invocation Count (Contagem de invocação) agora em 2.\]](http://docs.aws.amazon.com/pt_br/greengrass/v1/developerguide/images/gg-get-started-065.png)

Agora, você deve conhecer os dois tipos de funções do Lambda que podem ser executadas no núcleo AWS IoT Greengrass . O próximo módulo, [Módulo 4](module4.md), mostra como os dispositivos locais de IoT podem interagir em um AWS IoT Greengrass grupo.