Gestione delle dipendenze Lambda con livelli - AWS Lambda

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

Gestione delle dipendenze Lambda con livelli

Un livello Lambda è un archivio di file .zip che può contenere codice o dati aggiuntivi. I livelli di solito contengono dipendenze dalla libreria, un runtime personalizzato o file di configurazione.

Esistono diversi motivi per cui potresti prendere in considerazione l'utilizzo dei livelli:

  • Per ridurre le dimensioni dei pacchetti di implementazione. Invece di includere tutte le dipendenze delle funzioni insieme al codice della funzione nel pacchetto di implementazione, inseriscile in un livello. Ciò mantiene i pacchetti di implementazione piccoli e organizzati.

  • Per separare la logica delle funzioni di base dalle dipendenze. Con i livelli, puoi aggiornare le dipendenze delle funzioni indipendentemente dal codice della funzione e viceversa. Ciò favorisce la separazione dei problemi e ti aiuta a concentrarti sulla logica funzionale.

  • Per condividere le dipendenze tra più funzioni. Dopo aver creato un livello, puoi applicarlo a qualsiasi numero di funzioni del tuo account. Senza livelli, è necessario includere le stesse dipendenze in ogni singolo pacchetto di implementazione.

  • Per utilizzare l'editor di codice della console Lambda. L'editor di codice è uno strumento utile per testare rapidamente aggiornamenti minori del codice funzionale. Tuttavia, non è possibile utilizzare l'editor se la dimensione del pacchetto di implementazione è troppo grande. L'uso dei livelli riduce le dimensioni del pacchetto e può sbloccare l'utilizzo dell'editor di codice.

Se utilizzi le funzioni Lambda in Go o Rust, ti consigliamo di non utilizzare i livelli. Per le funzioni Go e Rust, fornite il codice della funzione come eseguibile, che include il codice di funzione compilato insieme a tutte le sue dipendenze. L'inserimento delle dipendenze in un livello impone alla funzione di caricare manualmente gli assembly aggiuntivi durante la fase di inizializzazione, il che può aumentare i tempi di avvio a freddo. Per prestazioni ottimali per le funzioni Go e Rust, includi le tue dipendenze insieme al pacchetto di distribuzione.

Il diagramma seguente illustra le principali differenze di architettura tra due funzioni che condividono dipendenze. Una utilizza i livelli Lambda e l'altra no.

Confronto tra due funzioni che non utilizzano livelli e due funzioni che condividono un livello.

Quando si include un livello in una funzione Lambda, Lambda estrae il contenuto del livello nella directory /opt nell'ambiente di esecuzione della funzione. Tutti i runtime Lambda supportati in modo nativo includono percorsi a directory specifiche all'interno della directory /opt. Ciò consente alla funzione di accedere al contenuto dei livelli. Per ulteriori informazioni su questi percorsi specifici e su come creare correttamente i pacchetti per i livelli, consulta Creazione di pacchetti del contenuto dei livelli.

Puoi includere fino a cinque livelli per funzione. Inoltre, è possibile utilizzare i livelli solo con funzioni Lambda implementate come archivio di file con estensione zip. Per funzioni definite come immagine del container, quando si crea l'immagine del container viene creato un pacchetto del runtime preferito e tutte le dipendenze del codice. Per ulteriori informazioni, consulta Lavorare con i livelli e le estensioni Lambda nelle immagini dei contenitori sul blog di AWS Compute.

Come usare i livelli

Per creare un livello, raccogli le tue dipendenze in un file .zip, in modo simile a come crei un normale pacchetto di implementazione. Più specificamente, il processo generale di creazione e utilizzo dei livelli prevede questi tre passaggi:

Livelli e versioni di livelli

Una versione di livello è un'istantanea immutabile di una versione specifica di un livello. Quando si crea un nuovo livello, Lambda crea una nuova versione del livello con un numero di versione pari a 1. Ogni volta che si pubblica un aggiornamento del livello, Lambda incrementa il numero di versione e crea una nuova versione.

Ogni versione del layer è identificata da un Amazon Resource Name (ARN) univoco. Quando si aggiunge un livello alla funzione, è necessario specificare la versione esatta del livello che si desidera utilizzare.