Esegui AWS Lambda funzioni - AWS IoT Greengrass

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

Esegui AWS Lambda funzioni

Nota

AWS IoT Greengrassattualmente 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:

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.

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 obsoletiAWS 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 Greengrasssupporta 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. AWS Lambda AWS

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.

Differenze nella containerizzazione
Containerizzazione Note

Container Greengrass

  • Tutte le AWS IoT Greengrass funzionalità sono disponibili quando si esegue una funzione Lambda in un contenitore Greengrass.

  • Le funzioni Lambda eseguite in un contenitore Greengrass non hanno accesso al codice distribuito di altre funzioni Lambda, anche se vengono eseguite con lo stesso gruppo di sistema. In altre parole, le funzioni Lambda vengono eseguite con un maggiore isolamento l'una dall'altra.

  • Poiché il software AWS IoT Greengrass Core esegue tutti i processi secondari nello stesso contenitore della funzione Lambda, i processi secondari si interrompono quando si interrompe la funzione Lambda.

Nessun container

  • Le seguenti funzionalità non sono disponibili per le funzioni Lambda non containerizzate:

    • Limiti di memoria della funzione Lambda.

    • Risorse volume e dispositivo locale. È necessario accedere a queste risorse utilizzando i relativi percorsi di file sul dispositivo principale anziché come risorse della funzione Lambda.

  • Se la funzione Lambda non containerizzata accede a una risorsa di machine learning, devi identificare il proprietario della risorsa e impostare le autorizzazioni di accesso sulla risorsa, non sulla funzione Lambda.

  • Le funzioni Lambda non containerizzate hanno accesso in sola lettura al codice distribuito di altre funzioni Lambda eseguite con lo stesso gruppo di sistema.

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.