Creare e includere in un pacchetto una funzione Lambda - 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à.

Creare e includere in un pacchetto una funzione Lambda

La funzione Python Lambda di esempio in questo esempio in questo modulo utilizza ilAWS IoT GreengrassCore SDKper Python pubblicare messaggi MQTT.

In questa fase, si:

  • Download diAWS IoT GreengrassCore SDK per Python sul computer (non ilAWS IoT Greengrassdispositivo principale).

  • Creare un pacchetto di distribuzione della funzione Lambda che contiene il codice della funzione e le dipendenze.

  • Utilizza la console Lambda per creare una funzione Lambda e caricare il pacchetto di distribuzione.

  • Pubblicare una versione della funzione Lambda e creare un alias che punta alla versione.

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

 

  1. DaAWS IoT GreengrassCore SDKpagina di download, scarica ilAWS IoT GreengrassCore SDK per Python sul tuo computer.

  2. Decomprimere il codice della funzione Lambda e l'SDK.

    La funzione Lambda in questo esempio utilizza:

    • Il file greengrassHelloWorld.py in examples\HelloWorld. Questo è il codice della funzione Lambda. Ogni cinque secondi la funzione pubblica uno tra due possibili messaggi all'argomento hello/world.

    • La cartella greengrasssdk. Questo è l'SDK.

  3. Copiare la cartella greengrasssdk nella cartella HelloWorld contenente greengrassHelloWorld.py.

  4. Per creare il pacchetto di distribuzione della funzione Lambda, salvaregreengrassHelloWorld.pye lagreengrasssdkcartella in un file compressozipfile denominatohello_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.

    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.

    A questo punto, puoi creare la funzione Lambda e caricare il pacchetto di distribuzione.

  5. Apri la console Lambda e scegliCrea funzione.

  6. Scegliere Author from scratch (Crea da zero).

  7. Dai alla funzione il nome Greengrass_HelloWorld e imposta i campi rimanenti come segue:

    • In Runtime, scegliere Python 3.7.

    • PerAutorizzazioni, mantieni l'impostazione predefinita. Questo crea un ruolo di esecuzione che concede le autorizzazioni Lambda di base. Questo ruolo non viene utilizzato daAWS IoT Greengrass.

    Scegli Create function (Crea funzione).

  8. Carica il pacchetto di distribuzione della funzione Lambda:

    1. SulCodescheda, sottoCodice sorgente, scegliCarica da. Dal menu a discesa, sceglifile .zip.

      Il menu a discesa Carica da con file.zip evidenziato.
    2. ScegliereCaricamentoquindi scegli ilhello_world_python_lambda.zippacchetto di distribuzione. Quindi, scegliere Save (Salva).

    3. SulCodetab per la funzione, sottoImpostazioni Runtime, scegliModificarequindi immettere i seguenti valori.

      • In Runtime, scegliere Python 3.7.

      • In Handler (Gestore), immetti greengrassHelloWorld.function_handler

      La sezione «Runtime di e il campo «Runtime» con il campo «Runtime» con il campo «greengrassHelloWorld.function_handler».
    4. Seleziona Save (Salva.

      Nota

      LaTestpulsante sul pulsanteAWS Lambdala console non funziona con questa funzione. LaAWS IoT GreengrassCore SDK non contiene moduli necessari per eseguire le funzioni Lambda di Greengrass in modo indipendente nelAWS LambdaConsole. Questi moduli (ad esempio,greengrass_common) vengono forniti alle funzioni dopo che sono state implementate nel core Greengrass.

  9. Pubblicare la funzione Lambda:

    1. DaOperazionimenu nella parte superiore della pagina, sceglierePubblica nuova versione.

      Screenshot del menu "Actions" con "Publish new version" evidenziato.
    2. 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.
  10. Creazione di unaliasper la funzione Lambdaversione:

    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 funzione viene aggiornato. Invece, è sufficiente puntare l'alias alla nuova versione della funzione.

    1. DaOperazionimenu nella parte superiore della pagina, scegliereCreare alias.

      Screenshot del menu "Actions" impostato su "Create alias".
    2. Denomina l'aliasGG_HelloWorld, imposta la versione su1(corrispondente alla versione appena pubblicata), quindi scegliSave (Salva).

      Nota

      AWS IoT Greengrassnon supporta gli alias Lambda per$LATESTVersioni.

       

      Screenshot di «Crea un nuovo alias con il campo ««««««««HelloWorlde il campo Versione impostato su 1.