Testare funzioni Lambda di lunga durata - AWS IoT Greengrass

AWS IoT Greengrass Version 1 è entrato nella fase di estensione della vita utile il 30 giugno 2023. Per ulteriori informazioni, consulta la politica AWS IoT Greengrass V1 di manutenzione. Dopo questa data, AWS IoT Greengrass V1 non rilascerà aggiornamenti che forniscano funzionalità, miglioramenti, correzioni di bug o patch di sicurezza. I dispositivi che funzionano AWS IoT Greengrass V1 non subiranno interruzioni e continueranno a funzionare e a connettersi al cloud. Ti consigliamo vivamente di eseguire la migrazione a AWS IoT Greengrass Version 2, che aggiunge nuove importanti funzionalità e supporto per piattaforme aggiuntive.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Testare funzioni Lambda di lunga durata

UNdi lunga durataLa funzione Lambda si avvia automaticamente quandoAWS IoT Greengrasscore si avvia e viene eseguito in un singolo container (o sandbox). Qualsiasi variabile o logica di preelaborazione definite al di fuori del gestore della funzione sono conservate per ogni richiamo del gestore della funzione. Chiamate multiple del gestore della funzione vengono messe in coda finché le chiamate precedenti non sono state eseguite.

Il codice greengrassHelloWorldCounter.py utilizzato in questo modulo definisce una variabile my_counter al di fuori del gestore della funzione.

Nota

Puoi visualizzare il codice nellaAWS Lambdaconsole o nellaAWS IoT GreengrassSDK Core per Pythonsul GitHub.

In questa fase, verranno create sottoscrizioni che consentono alla funzione Lambda eAWS IoTper lo scambio di messaggi MQTT. Quindi si procede alla distribuzione del gruppo e al test della funzione.

  1. Nella pagina di configurazione del gruppo, scegliAbbonamenti, quindiInserisci.

  2. UNDERTipo di origine, scegliLambda function (Funzione Lambda), quindiErba verde_HelloWorld_Contatore.

  3. UNDERTarget type (Tipo di destinazione), scegliService (Servizio), scegliIoT Cloud.

  4. In Topic filter (Filtro argomento), immettere hello/world/counter.

  5. Scegliere Create Subscription (Crea iscrizione).

    Questo abbonamento singolo va in una sola direzione: dalGreengrass_HelloWorld_Counterfunzione Lambda perAWS IoT. Per invocare (o attivare) questa funzione Lambda dal cloud, occorre creare una sottoscrizione nella direzione opposta.

  6. Segui i passaggi da 1 a 5 per aggiungere un'altra sottoscrizione che utilizza i seguenti valori. Questo abbonamento consente alla funzione Lambda di ricevere messaggi daAWS IoT. Questa sottoscrizione si usa quando si invia un messaggio dall'AWS IoTconsole che richiama la funzione.

    • Per la fonte, scegliService (Servizio), quindiIoT Cloud.

    • Per il target, scegliLambda function (Funzione Lambda), quindiErba verde_HelloWorld_Contatore.

    • Per il filtro di argomenti, immetti hello/world/counter/trigger.

    In questo filtro dell'argomento viene usata l'estensione /trigger perché hai creato due sottoscrizioni ed è necessario che non interferiscano tra loro.

  7. Verifica che il daemon Greengrass sia in esecuzione come indicato inDistribuire configurazioni cloud su un dispositivo core.

  8. Nella pagina di configurazione del gruppo, scegliDistribuzione.

  9. Una volta completata la distribuzione, torna allaAWS IoTHome page della console e scegliTest.

  10. Configura i campi seguenti:

    • Per Argomento sottoscrizione, immetti hello/world/counter.

    • Per Quality of Service (Qualità del servizio), scegli 0.

    • Per MQTT payload display (Visualizzazione payload MQTT), scegli Display payloads as strings (Visualizza payload come stringhe).

  11. Scegliere Subscribe (Effettua sottoscrizione).

    A differenza della Parte 1 di questo modulo, non dovresti visualizzare messaggi dopo aver effettuato la sottoscrizione a hello/world/counter. Questo perché il codice greengrassHelloWorldCounter.py che pubblica nell'argomento hello/world/counter si trova all'interno del gestore della funzione, che viene eseguito solo quando viene richiamata la funzione.

    In questo modulo, è stato configurato ilGreengrass_HelloWorld_Counterfunzione Lambda da richiamare quando riceve un messaggio MQTT sulhello/world/counter/triggerargomento.

    LaErba verde_HelloWorld_ContatoreaIoT Cloudsottoscrizione consente alla funzione di inviare messaggi aAWS IoTsulhello/world/counterargomento. LaIoT CloudaErba verde_HelloWorld_Contatoresottoscrizione consenteAWS IoTper inviare messaggi alla funzione sulhello/world/counter/triggerargomento.

  12. Per testare il ciclo di vita di lunga durata, richiama la funzione Lambda pubblicando un messaggio nellahello/world/counter/triggerargomento. Puoi usare il messaggio predefinito.

    Messaggio predefinito Hello fromAWS IoTMessaggio della console» con il pulsante «hello/world/trigger» con il pulsante «hello/world/trigger» con il pulsante
    Nota

    La funzione Greengrass_HelloWorld_Counter ignora il contenuto dei messaggi ricevuti. Esegue solamente il codice in function_handler, che invia un messaggio all'argomento hello/world/counter. Puoi rivedere il codice dalAWS IoT GreengrassSDK Core per Pythonsul GitHub.

Ogni volta che un messaggio viene pubblicato nell'argomento hello/world/counter/trigger, la variabile my_counter viene incrementata. Questo conteggio delle chiamate viene visualizzato nei messaggi inviati dalla funzione Lambda. Poiché il gestore della funzione include un ciclo di sospensione di 20 secondi (time.sleep(20)), attivare ripetutamente il gestore mette in coda le risposte daAWS IoT GreengrassCore.

Screenshot che mostra l'incremento di Invocation Count da 1, 2 e 3.