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 Python
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.
-
Nella pagina di configurazione del gruppo, scegliAbbonamenti, quindiInserisci.
-
UNDERTipo di origine, scegliLambda function (Funzione Lambda), quindiErba verde_HelloWorld_Contatore.
-
UNDERTarget type (Tipo di destinazione), scegliService (Servizio), scegliIoT Cloud.
-
In Topic filter (Filtro argomento), immettere
hello/world/counter
. -
Scegliere Create Subscription (Crea iscrizione).
Questo abbonamento singolo va in una sola direzione: dal
Greengrass_HelloWorld_Counter
funzione Lambda perAWS IoT. Per invocare (o attivare) questa funzione Lambda dal cloud, occorre creare una sottoscrizione nella direzione opposta. -
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. -
Verifica che il daemon Greengrass sia in esecuzione come indicato inDistribuire configurazioni cloud su un dispositivo core.
-
Nella pagina di configurazione del gruppo, scegliDistribuzione.
-
Una volta completata la distribuzione, torna allaAWS IoTHome page della console e scegliTest.
-
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).
-
-
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 codicegreengrassHelloWorldCounter.py
che pubblica nell'argomentohello/world/counter
si trova all'interno del gestore della funzione, che viene eseguito solo quando viene richiamata la funzione.In questo modulo, è stato configurato il
Greengrass_HelloWorld_Counter
funzione Lambda da richiamare quando riceve un messaggio MQTT sulhello/world/counter/trigger
argomento.LaErba verde_HelloWorld_ContatoreaIoT Cloudsottoscrizione consente alla funzione di inviare messaggi aAWS IoTsul
hello/world/counter
argomento. LaIoT CloudaErba verde_HelloWorld_Contatoresottoscrizione consenteAWS IoTper inviare messaggi alla funzione sulhello/world/counter/trigger
argomento. -
Per testare il ciclo di vita di lunga durata, richiama la funzione Lambda pubblicando un messaggio nella
hello/world/counter/trigger
argomento. Puoi usare il messaggio predefinito.Nota
La funzione
Greengrass_HelloWorld_Counter
ignora il contenuto dei messaggi ricevuti. Esegue solamente il codice infunction_handler
, che invia un messaggio all'argomentohello/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.](images/gg-get-started-058.png)