AWS IoT Greengrass Version 1 entrou na fase de vida útil prolongada em 30 de junho de 2023. Para obter mais informações, consulte política de manutenção do AWS IoT Greengrass V1. Após essa data, AWS IoT Greengrass V1 não lançaremos atualizações que forneçam recursos, aprimoramentos, correções de erros ou patches de segurança. Os dispositivos que funcionam AWS IoT Greengrass V1 não serão interrompidos e continuarão operando e se conectando à nuvem. É altamente recomendável que você migre para AWS IoT Greengrass Version 2, o que adiciona novos recursos significativos e suporte para plataformas adicionais.
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á.
Testar funções de longa duração do Lambda
Uma função de longa duração do Lambda é iniciada automaticamente durante a inicialização do núcleo AWS IoT Greengrass e executada 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
É possível exibir o código no console do AWS Lambda ou no SDK do AWS IoT Greengrass Core para Python
Nesta etapa, você cria assinaturas que permitem que a função do Lambda e a AWS IoT troquem mensagens MQTT. Em seguida, você implanta o grupo e testa a função.
-
Na página de configuração do grupo, selecione Inscrições e, então, selecione Adicionar.
-
Em Tipo de origem, selecione Função do Lambda e, em seguida, selecione Greengrass_HelloWorld_Counter.
-
Em Tipo de destino, selecione Serviço, selecione IoT Cloud.
-
Para Topic filter, insira
hello/world/counter
. -
Selecione Criar assinatura.
Essa assinatura única assume uma única direção: da função
Greengrass_HelloWorld_Counter
do Lambda para AWS IoT. Para invocar (ou trigger) essa função do Lambda na nuvem, é necessário criar uma assinatura na direção oposta. -
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. Use essa assinatura ao enviar uma mensagem do console do AWS IoT que chame a função.
-
Para a origem, selecione Serviço e, em seguida, selecione IoT Cloud.
-
Para o destino, selecione Função do Lambda e, em seguida, selecione Greengrass_HelloWorld_Counter.
-
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. -
Verifique se o daemon do Greengrass está em execução, como descrito em Implantar configurações de nuvem em um dispositivo de núcleo.
-
Na página de configuração do grupo, selecione Implantar.
-
Depois que sua implantação for concluída, volte à página inicial do console do AWS IoT e, em seguida selecione Testar.
-
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).
-
-
Selecione Subscribe.
Ao contrário da Parte 1 deste módulo, você deverá ver nenhuma mensagem depois de assinar
hello/world/counter
. Isso ocorre porque o códigogreengrassHelloWorldCounter.py
que publica para o tópicohello/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ópicohello/world/counter/trigger
.A assinatura Greengrass_HelloWorld_Counter para IoT Cloud permite que a função envie mensagens para o AWS IoT no tópico
hello/world/counter
. A assinatura IoT Cloud para Greengrass_HelloWorld_Counter permite que o AWS IoT envie mensagens para a função no tópicohello/world/counter/trigger
. -
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.nota
A função
Greengrass_HelloWorld_Counter
ignora o conteúdo das mensagens recebidas. Ela só executa o código nofunction_handler
, que envia uma mensagem ao tópicohello/world/counter
. É possível revisar esse código no SDK do AWS IoT Greengrass Core para Pythonno GitHub.
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ção inclui um ciclo de espera de 20 segundos (time.sleep(20)
), acionar repetidamente o manipulador colocará as respostas do núcleo AWS IoT Greengrass em fila.
