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à.
Migliorare le prestazioni di avvio con Lambda SnapStart
Lambda SnapStart può fornire prestazioni di avvio anche inferiori al secondo, in genere senza modifiche al codice della funzione. SnapStart semplifica la creazione di applicazioni altamente reattive e scalabili senza fornire risorse o implementare complesse ottimizzazioni delle prestazioni.
Il fattore che contribuisce maggiormente alla latenza di avvio (spesso definita tempo di avvio a freddo) è il tempo impiegato da Lambda per inizializzare la funzione, che include il caricamento del codice della funzione, l'avvio del runtime e l'inizializzazione del codice della funzione. Con SnapStart, Lambda inizializza la funzione quando si pubblica una versione della funzione. Lambda utilizza lo snapshot di una microVM Firecracker
Per garantire la resilienza, Lambda conserva diverse copie di ogni snapshot. Lambda aggiorna automaticamente gli snapshot e le relative copie con gli aggiornamenti di runtime e sicurezza più recenti. Quando richiami la versione della funzione per la prima volta e man mano che le chiamate aumentano, Lambda riprende i nuovi ambienti di esecuzione dallo snapshot memorizzato nella cache invece di inizializzarli da zero, migliorando così la latenza di avvio.
Importante
Se le applicazioni dipendono dall'univocità dello stato, è necessario valutare il codice della funzione e verificare che sia resiliente alle operazioni di snapshot. Per ulteriori informazioni, consulta Gestione dell'unicità con Lambda SnapStart.
Argomenti
- Quando usare SnapStart
- Funzionalità e limitazioni supportate
- Regioni supportate
- Considerazioni sulla compatibilità
- SnapStart prezzi
- Attivazione e gestione di Lambda SnapStart
- Gestione dell'unicità con Lambda SnapStart
- Implementare il codice prima o dopo gli snapshot della funzione Lambda
- Monitoraggio per Lambda SnapStart
- Modello di sicurezza per Lambda SnapStart
- Massimizzare le prestazioni di Lambda SnapStart
- Risoluzione degli errori di SnapStart per le funzioni Lambda
Quando usare SnapStart
Lambda SnapStart è progettato per affrontare la variabilità della latenza introdotta dal codice di inizializzazione monouso, come il caricamento di dipendenze o framework dei moduli. Il completamento di queste operazioni a volte può richiedere diversi secondi durante l'invocazione iniziale. Utilizzala SnapStart per ridurre questa latenza da alcuni secondi a meno di un secondo, in scenari ottimali. SnapStart funziona meglio se utilizzato con invocazioni di funzioni su larga scala. Le funzioni richiamate di rado potrebbero non presentare gli stessi miglioramenti delle prestazioni.
SnapStart è particolarmente utile per due tipi principali di applicazioni:
-
Flussi utente sensibili alla latenzaAPIs: le funzioni che fanno parte degli API endpoint critici o dei flussi rivolti agli utenti possono trarre vantaggio dalla latenza ridotta e dai tempi SnapStart di risposta migliorati.
-
Flussi di lavoro di elaborazione dati sensibili alla latenza: i flussi di lavoro di elaborazione dati con vincoli temporali che utilizzano le funzioni Lambda possono ottenere un throughput migliore riducendo la latenza di inizializzazione delle funzioni anomale.
La simultaneità fornita mantiene le funzioni inizializzate e pronte a rispondere entro i 100 millisecondi. Utilizza la concorrenza fornita se la tua applicazione ha requisiti di latenza rigorosi per l'avvio a freddo che non possono essere soddisfatti in modo adeguato. SnapStart
Funzionalità e limitazioni supportate
SnapStart è disponibile per i seguenti runtime gestiti da Lambda:
-
Java 11 e versioni successive
-
Python 3.12 e versioni successive
-
. NET8 e versioni successive. Se utilizzi il framework Lambda Annotations per. NET, esegui l'upgrade alla versione Amazon.Lambda.Annotations
1.6.0 o successiva per garantire la compatibilità con. SnapStart
Altri runtime gestiti (come nodejs22.x
e ruby3.3
), Runtime solo per il sistema operativo e le immagini di container non sono supportati.
SnapStart non supporta la concorrenza fornita, Amazon Elastic File System EFS (Amazon) o lo storage temporaneo superiore a 512 MB.
Nota
È possibile utilizzare SnapStart solo versioni di funzioni pubblicate e alias che rimandano a versioni. Non è possibile utilizzare SnapStart sulla versione non pubblicata di una funzione ($LATEST).
Regioni supportate
Per i runtime Java, SnapStart Lambda è disponibile in tutte le regioni commerciali ad eccezione dell'Asia Pacifico (Malesia).
Per Python e. NETruntime, SnapStart Lambda è disponibile nelle seguenti versioni: Regioni AWS
Stati Uniti orientali (Virginia settentrionale)
Stati Uniti orientali (Ohio)
US West (Oregon)
Asia Pacifico (Singapore)
Asia Pacifico (Sydney)
Asia Pacifico (Tokyo)
Europa (Francoforte)
Europa (Irlanda)
Europa (Stoccolma)
Considerazioni sulla compatibilità
Con SnapStart, Lambda utilizza una singola istantanea come stato iniziale per più ambienti di esecuzione. Se la funzione utilizza uno dei seguenti elementi durante la fase di inizializzazione, potrebbe essere necessario apportare alcune modifiche prima di utilizzarla: SnapStart
- Unicità
-
Se il codice di inizializzazione genera contenuti unici inclusi nello snapshot, il contenuto potrebbe non essere più unico quando viene riutilizzato in più ambienti di esecuzione. Per mantenere l'unicità durante l'utilizzo SnapStart, è necessario generare contenuti unici dopo l'inizializzazione. Ciò include segreti unici IDs e unici e l'entropia utilizzata per generare pseudocasualità. Per informazioni su come ripristinare l'unicità, consulta Gestione dell'unicità con Lambda SnapStart.
- Connessioni di rete
-
Lo stato delle connessioni che la funzione stabilisce durante la fase di inizializzazione non è garantito quando Lambda riprende la funzione da uno snapshot. Convalida lo stato delle connessioni di rete e ristabiliscile se necessario. Nella maggior parte dei casi, le connessioni di rete stabilite da un riprendono automaticamente. AWS SDK Per altre connessioni, consulta le best practice.
- Dati temporanei
-
Durante la fase di inizializzazione, alcune funzioni scaricano o inizializzano dati effimeri, come credenziali temporanee o timestamp memorizzati nella cache. Aggiorna i dati temporanei nel gestore delle funzioni prima di utilizzarli, anche quando non li usi. SnapStart
SnapStart prezzi
Nota
Per i runtime gestiti da Java, non sono previsti costi aggiuntivi per SnapStart. L'addebito viene effettuato in base al numero di richieste per le funzioni, al tempo impiegato dal codice per l'esecuzione e alla memoria configurata per la funzione.
Il costo di utilizzo SnapStart include quanto segue:
-
Memorizzazione nella cache: per ogni versione della funzione pubblicata con SnapStart abilitata, si pagano i costi della memorizzazione nella cache e della manutenzione dell'istantanea. Il prezzo dipende dalla quantità di memoria allocata alla funzione. L'addebito sarà per un minimo di 3 ore. I costi continueranno a essere addebitati finché la funzione rimarrà attiva. Utilizzate l'ListVersionsByFunctionAPIazione per identificare le versioni delle funzioni, quindi utilizzate DeleteFunctionper eliminare le versioni non utilizzate. Per eliminare automaticamente le versioni delle funzioni non utilizzate, consulta il modello Pulizia della versione Lambda
su Serverless Land. -
Ripristino: ogni volta che un'istanza di funzione viene ripristinata da uno snapshot, si paga una tariffa di ripristino. Il prezzo dipende dalla quantità di memoria allocata alla funzione.
Come per tutte le funzioni Lambda, i costi di durata si applicano al codice eseguito nell'handler delle funzioni. Per quanto riguarda SnapStart le funzioni, i costi di durata si applicano anche al codice di inizializzazione dichiarato all'esterno del gestore, al tempo impiegato per il caricamento del runtime e a qualsiasi codice eseguito in un hook di runtime. La durata viene calcolata dal momento in cui il codice inizia a funzionare fino a quando ritorna o termina in altro modo, arrotondato al valore di 1 ms più vicino. Lambda conserva copie memorizzate nella cache dello snapshot per garantire la resilienza e applica automaticamente gli aggiornamenti software, come gli upgrade di runtime e le patch di sicurezza. Gli addebiti si applicano ogni volta che Lambda esegue nuovamente il codice di inizializzazione per applicare gli aggiornamenti software.
Per ulteriori informazioni sui costi di utilizzo SnapStart, vedi AWS Lambda Prezzi.