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à.
Nota
AWS IoT Greengrass attualmente non supporta questa funzionalità sui dispositivi Windows core.
È possibile importare AWS Lambda funzioni come componenti eseguibili sui dispositivi AWS IoT Greengrass principali. È possibile eseguire questa operazione nei seguenti casi:
-
Hai del codice applicativo nelle funzioni Lambda che desideri distribuire sui dispositivi principali.
-
Hai applicazioni AWS IoT Greengrass V1 che desideri eseguire sui AWS IoT Greengrass V2 dispositivi principali. Per ulteriori informazioni, consulta Fase 2: Creare e distribuire componenti per migrare le applicazioni AWS IoT Greengrass V2AWS IoT Greengrass V1.
Le funzioni Lambda includono dipendenze dai seguenti componenti. Non è necessario definire questi componenti come dipendenze quando si importa la funzione. Quando si distribuisce il componente della funzione Lambda, la distribuzione include queste dipendenze dei componenti Lambda.
-
Il componente di avvio Lambda (
aws.greengrass.LambdaLauncher
) gestisce i processi e la configurazione dell'ambiente. -
Il componente Lambda manager (
aws.greengrass.LambdaManager
) gestisce la comunicazione e la scalabilità tra processi. -
Il componente Lambda runtimes (
aws.greengrass.LambdaRuntimes
) fornisce artefatti per ogni runtime Lambda supportato.
Argomenti
Requisiti
I dispositivi principali e le funzioni Lambda devono soddisfare i seguenti requisiti per poter eseguire le funzioni sul software AWS IoT Greengrass Core:
-
Il dispositivo principale deve soddisfare i requisiti per eseguire le funzioni Lambda. Se desideri che il dispositivo principale esegua funzioni Lambda containerizzate, il dispositivo deve soddisfare i requisiti per farlo. Per ulteriori informazioni, consulta Requisiti della funzione Lambda.
-
È necessario installare i linguaggi di programmazione utilizzati dalla funzione Lambda sui dispositivi principali.
Suggerimento
È possibile creare un componente che installa il linguaggio di programmazione e quindi specificare tale componente come dipendenza del componente della funzione Lambda. Greengrass supporta tutte le versioni supportate da Lambda dei runtime Python, Node.js e Java. Greengrass non applica alcuna restrizione aggiuntiva alle versioni di runtime Lambda obsolete. Puoi eseguire funzioni Lambda che utilizzano questi runtime obsoleti AWS IoT Greengrass, ma non puoi crearli in. AWS Lambda Per ulteriori informazioni sul AWS IoT Greengrass supporto per i runtime Lambda, consulta. Esegui AWS Lambda funzioni
Configura il ciclo di vita della funzione Lambda
Il ciclo di vita della funzione Greengrass Lambda determina quando una funzione viene avviata e come crea e utilizza i contenitori. Il ciclo di vita determina anche il modo in cui il software AWS IoT Greengrass Core conserva le variabili e la logica di preelaborazione esterne al gestore delle funzioni.
AWS IoT Greengrass supporta cicli di vita on-demand (impostazione predefinita) e di lunga durata:
-
Le funzioni su richiesta si avviano quando vengono richiamate e si interrompono quando non ci sono più attività da eseguire. Ogni chiamata della funzione crea un contenitore separato, chiamato anche sandbox, per elaborare le chiamate, a meno che un contenitore esistente non sia disponibile per il riutilizzo. Qualsiasi contenitore potrebbe elaborare i dati inviati alla funzione.
È possibile eseguire più chiamate di una funzione su richiesta contemporaneamente.
Le variabili e la logica di preelaborazione definite al di fuori del gestore delle funzioni non vengono mantenute quando vengono creati nuovi contenitori.
-
Le funzioni di lunga durata (o bloccate) iniziano all'avvio del software AWS IoT Greengrass Core e vengono eseguite in un singolo contenitore. Lo stesso contenitore elabora tutti i dati inviati alla funzione.
Le chiamate multiple vengono messe in coda finché il software AWS IoT Greengrass Core non esegue le chiamate precedenti.
Le variabili e la logica di preelaborazione definite all'esterno del gestore di funzioni vengono mantenute per ogni chiamata del gestore.
Usa le funzioni Lambda di lunga durata quando devi iniziare a lavorare senza alcun input iniziale. Ad esempio, una funzione di lunga durata può caricare e avviare l'elaborazione di un modello di machine learning per essere pronta quando la funzione riceve i dati del dispositivo.
Nota
Le funzioni di lunga durata hanno dei timeout associati a ogni chiamata del relativo gestore. Se si desidera richiamare codice che viene eseguito all'infinito, è necessario avviarlo all'esterno del gestore. Assicuratevi che non vi sia alcun codice di blocco esterno al gestore che possa impedire l'inizializzazione della funzione.
Queste funzioni vengono eseguite a meno che il software AWS IoT Greengrass Core non si arresti, ad esempio durante una distribuzione o un riavvio. Queste funzioni non verranno eseguite se la funzione rileva un'eccezione non rilevata, supera i limiti di memoria o entra in uno stato di errore, ad esempio un timeout del gestore.
Per ulteriori informazioni sul riutilizzo dei container, consulta Understanding Container Reuse nel blog di Compute
Configurare la containerizzazione delle funzioni Lambda
Per impostazione predefinita, le funzioni Lambda vengono eseguite all'interno di un AWS IoT Greengrass contenitore. I contenitori Greengrass garantiscono l'isolamento tra le funzioni e l'host. Questo isolamento aumenta la sicurezza sia per l'host che per le funzioni nel contenitore.
Ti consigliamo di eseguire le funzioni Lambda in un contenitore Greengrass, a meno che il tuo caso d'uso non richieda che vengano eseguite senza containerizzazione. Eseguendo le funzioni Lambda in un contenitore Greengrass, hai un maggiore controllo su come limitare l'accesso alle risorse.
È possibile eseguire una funzione Lambda senza containerizzazione nei seguenti casi:
-
Vuoi eseguirlo AWS IoT Greengrass su un dispositivo che non supporta la modalità contenitore. Un esempio potrebbe essere se si desidera utilizzare una distribuzione Linux speciale o disporre di una versione precedente del kernel non aggiornata.
-
Vuoi eseguire la tua funzione Lambda in un altro ambiente contenitore con il proprio OverlayFS, ma riscontri conflitti OverlayFS quando esegui in un contenitore Greengrass.
-
È necessario accedere alle risorse locali con percorsi che non possono essere determinati al momento della distribuzione o i cui percorsi possono cambiare dopo la distribuzione. Un esempio di questa risorsa potrebbe essere un dispositivo collegabile.
-
Hai un'applicazione precedente che è stata scritta come processo e riscontri problemi quando la esegui in un contenitore Greengrass.
Containerizzazione | Note |
---|---|
Container Greengrass |
|
Nessun container |
|
Se si modifica la containerizzazione di una funzione Lambda al momento della distribuzione, la funzione potrebbe non funzionare come previsto. Se la funzione Lambda utilizza risorse locali che non sono più disponibili con la nuova impostazione di containerizzazione, la distribuzione fallisce.
-
Quando si modifica una funzione Lambda dall'esecuzione in un contenitore Greengrass all'esecuzione senza containerizzazione, i limiti di memoria della funzione vengono eliminati. È necessario accedere direttamente al file system anziché utilizzare le risorse locali collegate. È necessario rimuovere tutte le risorse collegate prima di distribuire la funzione Lambda.
-
Quando si modifica una funzione Lambda dall'esecuzione senza containerizzazione all'esecuzione in un contenitore, la funzione Lambda perde l'accesso diretto al file system. È necessario definire un limite di memoria per ogni funzione o accettare il limite di memoria predefinito di 16 MB. Puoi configurare queste impostazioni per ogni funzione Lambda al momento della distribuzione.
Per modificare le impostazioni di containerizzazione per un componente della funzione Lambda, imposta il valore del parametro di containerMode
configurazione su una delle seguenti opzioni quando distribuisci il componente.
-
NoContainer
— Il componente non viene eseguito in un ambiente di runtime isolato. -
GreengrassContainer
— Il componente viene eseguito in un ambiente di runtime isolato all'interno del AWS IoT Greengrass contenitore.
Per ulteriori informazioni su come distribuire e configurare i componenti, vedere Implementazione AWS IoT Greengrass dei componenti sui dispositivi eAggiornamento delle configurazioni dei componenti.