

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 i livelli
<a name="chapter-layers"></a>

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](runtimes-custom.md) 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.
+ **Per bloccare una versione SDK incorporata.**Gli SDK incorporati possono cambiare senza preavviso man mano che AWS rilascia nuovi servizi e funzionalità. Puoi bloccare una versione dell'SDK [creando un livello Lambda](#chapter-layers) con la versione specifica necessaria. La funzione utilizza quindi sempre la versione nel livello, anche se la versione incorporata nel servizio cambia.

Se utilizzi le funzioni Lambda in Go o Rust, ti consigliamo di non utilizzare i livelli. Per le funzioni Go e Rust, fornisci 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, per cui i tempi di avvio a freddo possono aumentare. Per prestazioni ottimali per le funzioni Go e Rust, includi le tue dipendenze insieme al pacchetto di implementazione.

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

![\[\]](http://docs.aws.amazon.com/it_it/lambda/latest/dg/images/lambda-layers-diagram.png)


Quando si include un livello in una funzione Lambda, Lambda estrae il contenuto del livello nella directory `/opt` nell'[ambiente di esecuzione](lambda-runtime-environment.md) 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](packaging-layers.md).

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](configuration-function-zip.md). Per funzioni [definite come immagine del container](images-create.md), quando si crea l'immagine del container viene creato un pacchetto del runtime preferito e tutte le dipendenze del codice. Per ulteriori informazioni, consulta [Operazioni con i livelli e le estensioni Lambda nelle immagini di container](https://aws.amazon.com/blogs/compute/working-with-lambda-layers-and-extensions-in-container-images/) nel Compute Blog AWS.

**Topics**
+ [Come usare i livelli](#lambda-layers-overview)
+ [Livelli e versioni di livelli](#lambda-layer-versions)
+ [Creazione di pacchetti del contenuto dei livelli](packaging-layers.md)
+ [Creazione ed eliminazione di livelli in Lambda](creating-deleting-layers.md)
+ [Aggiunta di livelli alle funzioni](adding-layers.md)
+ [Utilizzo di AWS CloudFormation con i livelli](layers-cfn.md)
+ [Utilizzo di AWS SAM con i livelli](layers-sam.md)

## Come usare i livelli
<a name="lambda-layers-overview"></a>

Per creare un livello, raccogli le tue dipendenze in un file .zip, in modo simile a come [crei un normale pacchetto di implementazione](configuration-function-zip.md). Più specificamente, il processo generale di creazione e utilizzo dei livelli prevede questi tre passaggi:
+ **Innanzitutto, crea un pacchetto per il contenuto del livello.** Ciò significa creare un archivio di file .zip. Per ulteriori informazioni, consulta [Creazione di pacchetti del contenuto dei livelli](packaging-layers.md).
+ **Quindi, crea il livello in Lambda.** Per ulteriori informazioni, consulta [Creazione ed eliminazione di livelli in Lambda](creating-deleting-layers.md).
+ **Aggiungi il livello alla tua funzione).** Per ulteriori informazioni, consulta [Aggiunta di livelli alle funzioni](adding-layers.md).

## Livelli e versioni di livelli
<a name="lambda-layer-versions"></a>

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 flusso è identificato in modo univoco da un nome della risorsa Amazon (ARN) univoco. Quando si aggiunge un livello alla funzione, è necessario specificare la versione esatta del livello che si desidera utilizzare (ad es. `arn:aws:lambda:us-east-1:123456789012:layer:my-layer:1`).