

Avviso di fine del supporto: il 7 ottobre 2026, AWS il supporto per. AWS IoT Greengrass Version 1 Dopo il 7 ottobre 2026, non potrai più accedere alle risorse. AWS IoT Greengrass V1 Per ulteriori informazioni, visita [Migrate](https://docs.aws.amazon.com/greengrass/v2/developerguide/migrate-from-v1.html) from. AWS IoT Greengrass Version 1

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

# Modulo 3 (parte 2): funzioni Lambda su AWS IoT Greengrass
<a name="module3-II"></a>

Questo modulo esplora le differenze tra le funzioni Lambda on-demand e quelle a lunga durata eseguite sul core. AWS IoT Greengrass 

Prima di iniziare, eseguire lo script di [installazione dispositivo Greengrass](quick-start.md) o assicurarsi di aver completato il [modulo 1](module1.md), il[modulo 2](module2.md), e il [modulo 3 (parte 1)](module3-I.md).

Il completamento di questo modulo richiede circa 30 minuti.

**Topics**
+ [Crea e impacchetta la funzione Lambda](package.md)
+ [Configura funzioni Lambda di lunga durata per AWS IoT Greengrass](long-lived.md)
+ [Prova le funzioni Lambda di lunga durata](long-testing.md)
+ [Testa le funzioni Lambda su richiesta](on-demand.md)

# Crea e impacchetta la funzione Lambda
<a name="package"></a>

In questa fase, si:
+ Crea un pacchetto di distribuzione della funzione Lambda che contenga il codice della funzione e le dipendenze.
+ Usa la console Lambda per creare una funzione Lambda e caricare il pacchetto di distribuzione.
+ Pubblica una versione della funzione Lambda e crea un alias che punti alla versione.

 

1. Sul tuo computer, vai al AWS IoT Greengrass Core SDK per Python che hai scaricato ed estratto [Creare e impacchettare una funzione Lambda](create-lambda.md) nel Modulo 3-1.

   La funzione Lambda in questo modulo utilizza:
   + Il file `greengrassHelloWorldCounter.py` in `examples\HelloWorldCounter`. Questo è il codice della tua funzione Lambda.
   + La cartella `greengrasssdk`. Questo è l'SDK.

1. Crea un pacchetto di distribuzione della funzione Lambda:

   1. Copiare la cartella `greengrasssdk` nella cartella `HelloWorldCounter` contenente `greengrassHelloWorldCounter.py`.

   1. Salvare `greengrassHelloWorldCounter.py` e la cartella `greengrasssdk` in un file `zip` denominato `hello_world_counter_python_lambda.zip`. Il file `py` e la cartella `greengrasssdk` devono trovarsi nella radice della directory.  
![\[Screenshot che mostra i contenuti compressi di "hello_word_counter_python_lambda.zip".\]](http://docs.aws.amazon.com/it_it/greengrass/v1/developerguide/images/gg-get-started-046.png)

      Sui sistemi di tipo UNIX (tra cui il terminale Mac) che hanno `zip` installato, puoi utilizzare il seguente comando per creare il pacchetto del file e della cartella:

      ```
      zip -r hello_world_counter_python_lambda.zip greengrasssdk greengrassHelloWorldCounter.py
      ```

   Ora sei pronto per creare la tua funzione Lambda e caricare il pacchetto di distribuzione.

1. Apri la console Lambda e scegli **Crea** funzione.

1. Scegli **Crea da zero**.

1. Dai alla funzione il nome **Greengrass\$1HelloWorld\$1Counter** e imposta i campi rimanenti come segue:
   + In **Runtime**, scegliere **Python 3.7**.
   + Per le **autorizzazioni**, mantieni l'impostazione predefinita. Questo crea un ruolo di esecuzione che concede le autorizzazioni Lambda di base. Questo ruolo non viene utilizzato da. AWS IoT Greengrass In alternativa, puoi riutilizzare il ruolo creato nel Modulo 3-1.

   Scegli **Crea funzione**.  
![\[La sezione «Informazioni di base» con il campo «Nome funzione» impostato su «Greengrass_ HelloWorld _Counter» e il campo «Runtime» impostato su «Python 3.7".\]](http://docs.aws.amazon.com/it_it/greengrass/v1/developerguide/images/gg-get-started-023-3.png)

1. Carica il tuo pacchetto di implementazione della funzione Lambda.

   1. <a name="lambda-console-upload"></a>Nella scheda **Codice**, in **Codice sorgente**, scegli **Carica da**. Dal menu a discesa, scegli un **file.zip.**  
![\[Il menu a discesa Carica da con il file.zip evidenziato.\]](http://docs.aws.amazon.com/it_it/greengrass/v1/developerguide/images/lra-console/upload-deployment-package.png)

   1. Scegli **Carica**, quindi scegli il pacchetto di `hello_world_counter_python_lambda.zip` distribuzione. Quindi, scegliere **Save (Salva)**. 

   1. <a name="lambda-console-runtime-settings-para"></a>Nella scheda **Codice** della funzione, in **Impostazioni di runtime**, scegliete **Modifica**, quindi immettete i seguenti valori.
      + In **Runtime**, scegliere **Python 3.7**.
      + In **Handler (Gestore)**, immetti **greengrassHelloWorldCounter.function\$1handler**

   1. <a name="lambda-console-save-config"></a>Seleziona **Salva**.
**Nota**  
Il pulsante **Test** sulla AWS Lambda console non funziona con questa funzione. Il AWS IoT Greengrass Core SDK non contiene moduli necessari per eseguire le funzioni Greengrass Lambda in modo indipendente nella console. AWS Lambda Questi moduli (ad esempio,`greengrass_common`) vengono forniti alle funzioni dopo essere stati distribuiti nel core Greengrass.

1. Pubblicate la prima versione della funzione.

   1. Dal menu **Azioni** nella parte superiore della pagina, scegli **Pubblica nuova versione**. In **Version description (Descrizione versione)**, immetti **First version**.

   1. Seleziona **Publish** (Pubblica).

1. Crea un alias per la versione della funzione.

   1. Dal menu **Azioni** nella parte superiore della pagina, scegli **Crea alias**.  
![\[Screenshot del menu "Actions" impostato su "Create alias".\]](http://docs.aws.amazon.com/it_it/greengrass/v1/developerguide/images/gg-get-started-028.png)

   1. Per **Nome**, immetti **GG\$1HW\$1Counter**.

   1. In **Version (Versione)**, selezionare **1**.

   1. Seleziona **Salva**.  
![\[Crea uno screenshot dell'alias con il campo Nome impostato su GG_HW_Counter e il campo Versione impostato su 1.\]](http://docs.aws.amazon.com/it_it/greengrass/v1/developerguide/images/gg-get-started-048.png)

   Gli alias creano una singola entità per la funzione Lambda a cui i dispositivi Greengrass possono abbonarsi. In questo modo, non è necessario aggiornare gli abbonamenti con nuovi numeri di versione della funzione Lambda ogni volta che la funzione viene modificata.

# Configura funzioni Lambda di lunga durata per AWS IoT Greengrass
<a name="long-lived"></a>

Ora sei pronto per configurare la tua funzione Lambda per. AWS IoT Greengrass

1. <a name="console-gg-groups"></a>Nel riquadro di navigazione della AWS IoT console, in **Gestione**, espandi **i dispositivi Greengrass**, quindi scegli **Gruppi (V1**).

1. In **Gruppi Greengrass**, scegli il gruppo che hai creato nel [Modulo](module2.md) 2.

1. **Nella pagina di configurazione del gruppo, scegli la scheda **Funzioni Lambda**, quindi in Le mie **funzioni Lambda**, scegli Aggiungi.**

1. Per la **funzione Lambda**, scegli **HelloWorldGreengrass\$1** \$1Counter.

1. Per la **versione della funzione Lambda**, scegli l'alias della versione che hai pubblicato.

1. Per **Timeout (secondi)**, immettere. **25** Questa funzione Lambda dorme per 20 secondi prima di ogni chiamata.

1. **Per **Pinned**, scegli True.**

1. Mantieni i valori predefiniti per tutti gli altri campi e scegli **Aggiungi funzione Lambda**.

# Prova le funzioni Lambda di lunga durata
<a name="long-testing"></a>

Una funzione Lambda di *[lunga durata](lambda-functions.md#lambda-lifecycle)* si avvia automaticamente AWS IoT Greengrass all'avvio del core e viene eseguita in un singolo contenitore (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 nella AWS Lambda console o nel [AWS IoT Greengrass Core SDK for GitHub Python on](https://github.com/aws/aws-greengrass-core-sdk-python/blob/master/examples/HelloWorldCounter/greengrassHelloWorldCounter.py).

In questo passaggio, si creano abbonamenti che consentono la funzione Lambda AWS IoT e lo scambio di messaggi MQTT. Quindi si procede alla distribuzione del gruppo e al test della funzione.

1. **Nella pagina di configurazione del gruppo, scegli **Sottoscrizioni, quindi** scegli Aggiungi.**

1. In **Tipo di origine**, scegli **Funzione Lambda**, quindi scegli **HelloWorldGreengrass\$1** \$1Counter.

1. In **Tipo di destinazione**, scegli **Servizio**, scegli **IoT Cloud**.

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

1. Scegli **Crea sottoscrizione**.

   Questo abbonamento singolo va in una sola direzione: dalla funzione `Greengrass_HelloWorld_Counter` Lambda a. AWS IoT Per richiamare (o attivare) questa funzione Lambda dal cloud, devi creare un abbonamento nella direzione opposta.

1. Segui i passaggi da 1 a 5 per aggiungere un altro abbonamento che utilizzi i seguenti valori. Questo abbonamento consente alla funzione Lambda di ricevere messaggi da. AWS IoT Si utilizza questo abbonamento quando si invia un messaggio dalla AWS IoT console che richiama la funzione.
   + Come fonte, scegli **Servizio**, quindi scegli **IoT Cloud**.
   + Per la destinazione, scegli la **funzione Lambda**, quindi scegli **HelloWorldGreengrass\$1** \$1Counter.
   + 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.

1. Assicuratevi che il demone Greengrass sia in esecuzione, come descritto in. [Distribuire configurazioni cloud su un dispositivo core](configs-core.md)

1. <a name="console-actions-deploy"></a>**Nella pagina di configurazione del gruppo, scegliete Deploy.**

1. <a name="console-test-after-deploy"></a>Una volta completata la distribuzione, torna alla home page della AWS IoT console e scegli **Test**.

1. 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)**.

1. Scegliere **Subscribe (Effettua sottoscrizione)**.

   A differenza della [Parte 1](module3-I.md) 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, avete configurato la funzione `Greengrass_HelloWorld_Counter` Lambda per essere richiamata quando riceve un messaggio MQTT sull'argomento. `hello/world/counter/trigger`

   L'abbonamento **Greengrass\$1 HelloWorld \$1Counter to** **IoT Cloud** consente la funzione di inviare messaggi AWS IoT sull'argomento. `hello/world/counter` L'abbonamento **IoT Cloud** to **Greengrass\$1 HelloWorld \$1Counter** consente di AWS IoT inviare messaggi alla funzione sull'argomento. `hello/world/counter/trigger`

1. Per testare il ciclo di vita di lunga durata, richiama la funzione Lambda pubblicando un messaggio sull'argomento. `hello/world/counter/trigger` Puoi usare il messaggio predefinito.  
![\[Messaggio predefinito di Hello from AWS IoT console inviato a hello/world/counter/trigger con il pulsante Pubblica sull'argomento evidenziato.\]](http://docs.aws.amazon.com/it_it/greengrass/v1/developerguide/images/gg-get-started-057.png)
**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 questo codice dal [AWS IoT Greengrass Core SDK for GitHub Python on](https://github.com/aws/aws-greengrass-core-sdk-python/blob/master/examples/HelloWorldCounter/greengrassHelloWorldCounter.py).

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 sonno di 20 secondi (`time.sleep(20)`), l'attivazione ripetuta del gestore mette in coda le risposte provenienti dal core. AWS IoT Greengrass 

![\[Screenshot che mostra l'incremento di Invocation Count da 1, 2 e 3.\]](http://docs.aws.amazon.com/it_it/greengrass/v1/developerguide/images/gg-get-started-058.png)


# Testa le funzioni Lambda su richiesta
<a name="on-demand"></a>

Una funzione Lambda *[su richiesta](lambda-functions.md#lambda-lifecycle)* ha funzionalità simili a quelle di una AWS Lambda funzione basata su cloud. È possibile eseguire più chiamate di una funzione Lambda su richiesta in parallelo. Una chiamata della funzione Lambda crea un contenitore separato per elaborare le chiamate o riutilizza un contenitore esistente, se le risorse lo consentono. Qualsiasi variabile o preelaborazione definite al di fuori del gestore della funzione non vengono conservate quando vengono creati i container.

1. Nella pagina di configurazione del gruppo, scegli la scheda **Funzioni Lambda**.

1. In **Funzioni My Lambda**, scegli **Greengrass\$1HelloWorld\$1Counter**Funzione Lambda.

1. Sul **Greengrass\$1HelloWorld\$1Counter**nella pagina dei dettagli, scegli **Modifica**.

1. Per **Bloccato**, scegli **False**, quindi scegli **Salva**.

1. <a name="console-actions-deploy"></a>Nella pagina di configurazione del gruppo, scegli **Deploy**.

1. <a name="console-test-after-deploy"></a>Una volta completata la distribuzione, torna alla home page della AWS IoT console e scegli **Test**.

1. 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)**.  
![\[Screenshot della pagina di test Abbonamenti.\]](http://docs.aws.amazon.com/it_it/greengrass/v1/developerguide/images/gg-get-started-056.png)

1. Scegliere **Subscribe (Effettua sottoscrizione)**.
**Nota**  
Non dovresti visualizzare alcun messaggio dopo la sottoscrizione.

1. Per testare il ciclo di vita on demand, richiama la funzione pubblicando un messaggio nell'argomento `hello/world/counter/trigger`. Puoi usare il messaggio predefinito.

   1. Scegli **Pubblica** tre volte velocemente, entro cinque secondi da ogni pressione del pulsante.  
![\[Screenshot che mostra il pulsante "Publish to topic", che deve essere cliccato rapidamente tre volte.\]](http://docs.aws.amazon.com/it_it/greengrass/v1/developerguide/images/gg-get-started-063.png)

      Ogni pubblicazione richiama il gestore della funzione e crea un container per ogni chiamata. Il conteggio delle chiamate non viene incrementato per le tre volte che hai attivato la funzione perché ogni funzione Lambda su richiesta ha il proprio contenitore/sandbox.  
![\[Screenshot che mostra "Invocation Count" fissato a 1.\]](http://docs.aws.amazon.com/it_it/greengrass/v1/developerguide/images/gg-get-started-064.png)

   1. Dopo circa 30 secondi, scegli **Pubblica nell'argomento**. Il conteggio delle chiamate dovrebbe diventare 2. Questo indica che viene riutilizzato un container creato da una chiamata precedente e che le variabili di preelaborazione al di fuori del gestore della funzione sono state memorizzate.  
![\[Screenshot che mostra "Invocation Count" salito a 2.\]](http://docs.aws.amazon.com/it_it/greengrass/v1/developerguide/images/gg-get-started-065.png)

Ora dovresti comprendere i due tipi di funzioni Lambda che possono essere eseguite sul AWS IoT Greengrass core. Il modulo successivo, [Modulo 4](module4.md), mostra come i dispositivi IoT locali possono interagire in un AWS IoT Greengrass gruppo.