Testar funções de longa duração do Lambda - AWS IoT Greengrass

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

  2. Em Tipo de fonte, escolha Função Lambda e, em seguida, escolha HelloWorldGreengrass_ _Counter.

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

  4. Para Topic filter, insira hello/world/counter.

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

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

  7. Verifique se o daemon do Greengrass está em execução, como descrito em Implantar configurações de nuvem em um dispositivo de núcleo.

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

  9. Após a conclusão da implantação, retorne à página inicial do AWS IoT console e escolha Testar.

  10. 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).

  11. 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ó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_ 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

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