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 Lambda de longa duração é 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
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.
-
Na página de configuração do grupo, selecione Inscrições e, então, selecione Adicionar.
-
Em Tipo de fonte, escolha Função Lambda e, em seguida, escolha HelloWorldGreengrass_ _Counter.
-
Em Tipo de destino, selecione Serviço, selecione IoT Cloud.
-
Para Topic filter, insira
hello/world/counter
. -
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. -
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_ _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.
-
Após a conclusão da implantação, retorne à página inicial do AWS IoT console e escolha 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 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_ HelloWorld _Counter permite enviar mensagens AWS IoT para a função sobre o tópico.hello/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
. Você pode revisar esse código no SDK AWS IoT Greengrass principal para GitHub Pythonem.
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
