

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 1): funzioni Lambda su AWS IoT Greengrass
<a name="module3-I"></a>

Questo modulo mostra come creare e implementare una funzione Lambda che invia messaggi MQTT dal AWS IoT Greengrass dispositivo principale. Il modulo descrive le configurazioni delle funzioni Lambda, gli abbonamenti utilizzati per consentire la messaggistica MQTT e le implementazioni su un dispositivo principale.

[Il Modulo 3 (parte 2)](module3-II.md) illustra le differenze tra le funzioni Lambda on-demand e quelle a lunga durata eseguite sul core. AWS IoT Greengrass 

Prima di iniziare, assicurati di aver completato il [Modulo 1 e il Modulo](module1.md) [2](module2.md) e di avere un dispositivo principale funzionante AWS IoT Greengrass .

**Suggerimento**  
Oppure, per utilizzare uno script che configuri automaticamente il dispositivo core, consulta [Avvio rapido: configurazione dispositivo Greengrass](quick-start.md). Lo script può anche creare e distribuire la funzione Lambda utilizzata in questo modulo.

Il completamento di questo modulo richiede circa 30 minuti.

**Topics**
+ [Creare e impacchettare una funzione Lambda](create-lambda.md)
+ [Configurare la funzione Lambda per AWS IoT Greengrass](config-lambda.md)
+ [Distribuzione delle configurazioni cloud su un dispositivo core di Greengrass](configs-core.md)
+ [Verifica che la funzione Lambda sia in esecuzione sul dispositivo principale](lambda-check.md)

# Creare e impacchettare una funzione Lambda
<a name="create-lambda"></a>

La funzione Python Lambda di esempio in questo modulo utilizza Core [AWS IoT Greengrass SDK for Python per](lambda-functions.md#lambda-sdks-core) pubblicare messaggi MQTT.

In questa fase, si:
+ Scarica il AWS IoT Greengrass Core SDK per Python sul tuo computer (non AWS IoT Greengrass sul dispositivo principale).
+ 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.

Per completare questo modulo, Python 3.7 deve essere installato sul dispositivo principale.

 <a name="create-lambda-procedure"></a>

1. <a name="download-ggc-sdk"></a> Dalla pagina dei download di [AWS IoT Greengrass Core SDK](what-is-gg.md#gg-core-sdk-download), scarica AWS IoT Greengrass Core SDK per Python sul tuo computer.

1. Decomprimi il pacchetto scaricato per ottenere il codice della funzione Lambda e l'SDK.

   La funzione Lambda in questo modulo utilizza:
   + Il file `greengrassHelloWorld.py` in `examples\HelloWorld`. Questo è il codice della tua funzione Lambda. Ogni cinque secondi la funzione pubblica uno tra due possibili messaggi all'argomento `hello/world`.
   + La cartella `greengrasssdk`. Questo è l'SDK.

1. Copiare la cartella `greengrasssdk` nella cartella `HelloWorld` contenente `greengrassHelloWorld.py`.

1. Per creare il pacchetto di distribuzione della funzione Lambda, salva `greengrassHelloWorld.py` e la `greengrasssdk` cartella in un file compresso denominato. `zip` `hello_world_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_python_lambda.zip.\]](http://docs.aws.amazon.com/it_it/greengrass/v1/developerguide/images/gg-get-started-017.png)

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

   ```
   zip -r hello_world_python_lambda.zip greengrasssdk greengrassHelloWorld.py
   ```
**Nota**  
In base alla distribuzione, potrebbe essere necessario installare prima `zip` (ad esempio, eseguendo `sudo apt-get install zip`). Il comando di installazione per la distribuzione potrebbe essere diverso.

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

   Scegli **Crea funzione**.

1. Carica il pacchetto di distribuzione 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_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 **greengrassHelloWorld.function\$1handler**  
![\[La sezione «Impostazioni di runtime» con il campo «Runtime» impostato su «Python 3.7" e il campo «Handler» impostato su ".function_handler». greengrassHelloWorld\]](http://docs.aws.amazon.com/it_it/greengrass/v1/developerguide/images/gg-get-started-023-2.png)

   1. <a name="lambda-console-save-config"></a>Seleziona **Salva**.
**Nota**  
Il pulsante **Test** sulla console non funziona con questa funzione AWS Lambda . 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. <a name="publish-function-version"></a>Pubblica la funzione Lambda:

   1. Dal menu **Azioni** nella parte superiore della pagina, scegli **Pubblica nuova versione**.  
![\[Screenshot del menu "Actions" con "Publish new version" evidenziato.\]](http://docs.aws.amazon.com/it_it/greengrass/v1/developerguide/images/gg-get-started-026.png)

   1. Per **Version description (Descrizione versione)**, immettere **First version**, quindi scegliere **Publish (Pubblica)**.  
![\[Screenshot con il campo "Version description" impostato su "First version" e il pulsante "Publish" evidenziato.\]](http://docs.aws.amazon.com/it_it/greengrass/v1/developerguide/images/gg-get-started-027.png)

1. <a name="create-version-alias"></a>[Crea un [alias](https://docs.aws.amazon.com/lambda/latest/dg/configuration-aliases.html) per la versione della funzione Lambda:](https://docs.aws.amazon.com/lambda/latest/dg/versioning-aliases.html)
**Nota**  
I gruppi Greengrass possono fare riferimento a una funzione Lambda tramite alias (consigliato) o per versione. L'utilizzo di un alias semplifica la gestione degli aggiornamenti del codice perché non è necessario modificare la tabella di sottoscrizione o la definizione del gruppo quando il codice della funzione viene aggiornato. Invece, è sufficiente indirizzare l'alias alla nuova 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. **Assegna un nome all'alias**GG\$1HelloWorld**, imposta la versione su **1** (che corrisponde alla versione che hai appena pubblicato), quindi scegli Salva.**
**Nota**  
AWS IoT Greengrass **non supporta gli alias Lambda per le versioni \$1LATEST.**

         
![\[Schermata di Crea un nuovo alias con il campo Nome impostato su GG_ e il campo Versione impostato su HelloWorld 1.\]](http://docs.aws.amazon.com/it_it/greengrass/v1/developerguide/images/gg-get-started-029.png)

# Configurare la funzione Lambda per AWS IoT Greengrass
<a name="config-lambda"></a>

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

In questa fase, si:
+ Usa la AWS IoT console per aggiungere la funzione Lambda al tuo gruppo Greengrass.
+ Configura le impostazioni specifiche del gruppo per la funzione Lambda.
+ Aggiungi un abbonamento al gruppo che consente alla funzione Lambda di pubblicare messaggi MQTT. AWS IoT
+ Configurano le impostazioni del log locale per il gruppo.

 

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 scorri verso il basso fino alla sezione Le mie **funzioni Lambda** e scegli Aggiungi funzione Lambda.**

1. Seleziona il nome della funzione Lambda che hai creato nel passaggio precedente (**Greengrass\$1 HelloWorld**, non il nome dell'alias).

1. **Per la versione, scegliete Alias: GG\$1. HelloWorld**

1. Nella sezione di **configurazione della funzione Lambda**, apporta le seguenti modifiche:
   + Imposta l'**utente e il gruppo di sistema** su **Use group default**.
   + **Imposta la **containerizzazione della funzione Lambda** su Use group default.**
   + Imposta **Timeout** a 25 secondi. Questa funzione Lambda dorme per 5 secondi prima di ogni chiamata.
   + **Per **Pinned**, scegli True.**

    
**Nota**  
<a name="long-lived-lambda"></a>Una funzione Lambda di *lunga durata* (o *bloccata*) si avvia automaticamente dopo l'avvio e continua AWS IoT Greengrass a funzionare nel proprio contenitore. Ciò è in contrasto con una funzione Lambda *su richiesta*, che si avvia quando viene richiamata e si interrompe quando non ci sono più attività da eseguire. Per ulteriori informazioni, consulta [Configurazione del ciclo di vita per le funzioni Greengrass Lambda](lambda-functions.md#lambda-lifecycle).

1. Scegli **la funzione Aggiungi Lambda** per salvare le modifiche. Per informazioni sulle proprietà della funzione Lambda, vedere. [Controllo dell'esecuzione delle funzioni Greengrass Lambda utilizzando la configurazione specifica del gruppo](lambda-group-config.md)

   Quindi, crea un abbonamento che consenta alla funzione Lambda di inviare messaggi [MQTT](http://mqtt.org/) a. AWS IoT Core

   Una funzione Greengrass Lambda può scambiare messaggi MQTT con:
   + [Dispositivi](what-is-gg.md#greengrass-devices) nel gruppo Greengrass.
   + [Connettori](connectors.md) nel gruppo.
   + Altre funzioni Lambda del gruppo.
   + AWS IoT Core.
   + Il servizio shadow locale. Per ulteriori informazioni, consulta [Modulo 5: interazione con dispositivi ombra](module5.md).

   Il gruppo utilizza le sottoscrizioni per controllare in che modo queste entità possono comunicare tra loro. Le sottoscrizioni forniscono interazioni prevedibili e un livello di sicurezza.

   Una sottoscrizione è costituita da origine, destinazione e argomento. L'origine è l'autore del messaggio. La destinazione è il ricevente del messaggio. L'argomento consente di filtrare i dati inviati dall'origine alla destinazione. L'origine o la destinazione può essere un dispositivo Greengrass, una funzione Lambda, un connettore, un'ombra del dispositivo o. AWS IoT Core
**Nota**  
Una sottoscrizione è diretta, nel senso che il flusso di messaggi ha una direzione specifica: dall'origine alla destinazione. Per consentire la comunicazione bidirezionale, è necessario configurare due sottoscrizioni.
**Nota**  
 Attualmente, il filtro degli argomenti di sottoscrizione non consente più di un singolo `+` carattere in un argomento. Il filtro degli argomenti consente un solo `#` carattere alla fine di un argomento. 

   La funzione `Greengrass_HelloWorld` Lambda invia messaggi solo all'`hello/world`argomento in AWS IoT Core, quindi è sufficiente creare un solo abbonamento dalla funzione Lambda a. AWS IoT Core Questa operazione viene eseguita nella fase successiva.

1. **Nella pagina di configurazione del gruppo, scegli la scheda **Abbonamenti**, quindi scegli Aggiungi abbonamento.**

   Per un esempio che mostra come creare un abbonamento utilizzando il AWS CLI, vedi [create-subscription-definition](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/greengrass/create-subscription-definition.html)nel *AWS CLI Command Reference*.

1. **Nel **tipo di origine**, scegli la **funzione Lambda** e, per la **sorgente**, scegli Greengrass\$1. HelloWorld**

1. Per il **tipo di Target**, scegli **Service** e, per **Target**, seleziona **IoT Cloud**.

1. Per il **filtro Argomento****hello/world**, inserisci, quindi scegli **Crea abbonamento**.

1. Configurare le impostazioni di registrazione del gruppo. In questo tutorial, configurerai i componenti di AWS IoT Greengrass sistema e le funzioni Lambda definite dall'utente per scrivere i log nel file system del dispositivo principale.

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

   1. **Nella sezione **Configurazione dei registri locali**, scegli Modifica.**

   1. **Nella finestra di dialogo **Modifica configurazione dei log locali**, mantieni i valori predefiniti sia per i livelli di registro che per le dimensioni di archiviazione, quindi scegli Salva.**

   È possibile utilizzare i registri per risolvere eventuali problemi che potrebbero verificarsi durante l'esecuzione di questa esercitazione. Durante la risoluzione dei problemi, è possibile modificare temporaneamente il livello di registrazione in **Debug**. Per ulteriori informazioni, consulta [Accesso ai log del file system](greengrass-logs-overview.md#gg-logs-local).

1. <a name="disable-stream-manager-no-java"></a>Se il runtime Java 8 non è installato sul dispositivo core, è necessario installarlo o disabilitare Gestore di flussi.
**Nota**  
Questo tutorial non utilizza Gestore di flussi, ma utilizza il flusso di lavoro **Creazione gruppo predefinito** che abilita Gestore di flussi per impostazione predefinita. Se Gestore di flussi è abilitato ma Java 8 non è installato, la distribuzione del gruppo ha esito negativo. Per ulteriori informazioni, consulta i [requisiti per Gestore di flussi](stream-manager.md#stream-manager-requirements).

   Per disabilitare Gestore di flussi:

   1. Nella pagina delle impostazioni del gruppo, scegli la scheda **Funzioni Lambda**.

   1. **Nella sezione **Funzioni System Lambda**, seleziona **Stream manager** e scegli Modifica.**

   1. Scegliere **Abilita**, quindi **Salva**.

# Distribuzione delle configurazioni cloud su un dispositivo core di Greengrass
<a name="configs-core"></a>

1. Assicurati che il dispositivo core di Greengrass sia connesso a Internet. Ad esempio, provare a passare correttamente a una pagina Web.

1. Assicurati che il daemon Greengrass sia in esecuzione sul dispositivo core. Nel terminale del dispositivo principale, esegui i seguenti comandi per verificare se il demone è in esecuzione e avvialo, se necessario.

   1. Per controllare se il daemon è in esecuzione:

      ```
      ps aux | grep -E 'greengrass.*daemon'
      ```

      Se l'output contiene una voce `root` per `/greengrass/ggc/packages/1.11.6/bin/daemon`, allora il daemon è in esecuzione.

   1. Per avviare il demone:

      ```
      cd /greengrass/ggc/core/
      sudo ./greengrassd start
      ```

   Ora sei pronto per implementare la funzione Lambda e le configurazioni di abbonamento sul tuo dispositivo principale 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 **Deploy**.

1. **Nella scheda **Funzioni Lambda, nella sezione Funzioni** System **Lambda, scegli Rilevatore** IP.**

1. Scegli **Modifica** e seleziona **Rileva e sostituisci automaticamente** gli endpoint del broker MQTT. Questo consente ai dispositivi di acquisire automaticamente informazioni di base sulla connettività, come, ad esempio indirizzo IP, DNS e numero della porta. È consigliato il rilevamento automatico, ma AWS IoT Greengrass supporta anche endpoint specifici manualmente. Ti viene chiesto il metodo di individuazione solo la prima volta che il gruppo viene distribuito.

La prima distribuzione potrebbe richiedere alcuni minuti. Al termine della distribuzione, dovresti visualizzare **Successfully completed (Completata con successo)** nella colonna **Status (Stato)** della pagina **Deployments (Distribuzioni)**:

**Nota**  
Lo stato della distribuzione è visualizzato anche sotto il nome del gruppo nell'intestazione di pagina.

Per la risoluzione dei problemi, consultare [Risoluzione dei problemi AWS IoT Greengrass](gg-troubleshooting.md).

# Verifica che la funzione Lambda sia in esecuzione sul dispositivo principale
<a name="lambda-check"></a>

1. Dal pannello di navigazione della [AWS IoT console](https://console.aws.amazon.com/iot/), in **Test**, scegli **MQTT test client**.

1. Scegli la scheda **Iscriviti all'argomento**.

1. Entra **hello/world** nel **filtro Argomento** ed espandi la **Configurazione aggiuntiva**.

1. Inserisci le informazioni elencate in ciascuno dei seguenti campi:
   + 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. Scegli **Abbonati**.

Supponendo che la funzione Lambda sia in esecuzione sul dispositivo, pubblica messaggi simili ai seguenti nell'argomento: `hello/world`

![\[Schermata del messaggio inviato all' hello/world argomento con il messaggio evidenziato.\]](http://docs.aws.amazon.com/it_it/greengrass/v1/developerguide/images/gg-get-started-045.png)


Sebbene la funzione Lambda continui a inviare messaggi MQTT all'`hello/world`argomento, non arrestate il demone. AWS IoT Greengrass I restanti moduli vengono scritti presumendo che sia in esecuzione.

È possibile eliminare la funzione e la sottoscrizione dal gruppo:
+ **Nella pagina di configurazione dei gruppi, nella scheda **Funzioni Lambda**, seleziona la funzione Lambda che desideri rimuovere e scegli Rimuovi.**
+ **Nella pagina di configurazione dei gruppi, nella scheda **Sottoscrizioni**, scegli l'abbonamento, quindi scegli Elimina.**

La funzione e la sottoscrizione vengono eliminate dal core durante la successiva distribuzione di gruppo.