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à.
Miglioramento delle prestazioni di avvio con Lambda SnapStart
Lambda SnapStart è in grado di fornire prestazioni di avvio inferiori al secondo, in genere senza modifiche al codice 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 acquisisce un'istantanea Firecracker MicroVM della memoria e dello stato del disco dell'ambiente di esecuzione inizializzato, crittografa l'istantanea e la memorizza nella cache in modo intelligente per ottimizzare la
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 Gestire l'unicità con Lambda SnapStart.
Se Risoluzione degli SnapStart errori per le funzioni Lambda riscontri problemi, consulta.
Quando usare SnapStart
Lambda SnapStart è progettato per risolvere la variabilità della latenza introdotta da un codice di inizializzazione una tantum, come il caricamento delle dipendenze o dei framework dei moduli. Il completamento di queste operazioni a volte può richiedere diversi secondi durante l'invocazione iniziale. SnapStart Usalo per ridurre questa latenza da alcuni secondi a pochi secondi, 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:
-
Latency-sensitive API e flussi utente: le funzioni che fanno parte degli endpoint API critici o dei flussi rivolti agli utenti possono trarre vantaggio dalla latenza ridotta e dai tempi SnapStart di risposta migliorati.
-
Latency-sensitive flussi di lavoro di elaborazione dati: Time-bound i flussi di lavoro di elaborazione dati che utilizzano 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. Usa la concorrenza predisposta se la tua applicazione ha severi requisiti di latenza di avvio a freddo che non possono essere risolti 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
-
.NET 8 e versioni successive. Se stai utilizzando il framework Lambda Annotations per .NET, esegui l'aggiornamento alla Amazon.Lambda.Annotations
versione 1.6.0 o successiva per garantire la compatibilità con. SnapStart
Altri runtime gestiti (come nodejs24.x e ruby4.0), OS-only tempi di esecuzione e le immagini di container non sono supportati.
SnapStart non supporta la concorrenza con provisioning, Amazon Elastic File System (Amazon EFS), Amazon S3 Files o lo storage temporaneo superiore a 512 MB.
Nota
È possibile utilizzarlo SnapStart solo sulle versioni di funzioni pubblicate e sugli alias che rimandano a versioni. Non è possibile utilizzarlo SnapStart sulla versione non pubblicata di una funzione ($LATEST).
Regioni supportate
Lambda SnapStart è disponibile in tutte le regioni commerciali ad eccezione di Asia Pacifico (Nuova Zelanda) e Asia Pacifico (Taipei).
Considerazioni sulla compatibilità
Con SnapStart, Lambda utilizza una singola istantanea come stato iniziale per più ambienti di esecuzione. Se la tua 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 univoci dopo l'inizializzazione. Ciò include ID univoci, segreti univoci ed entropia utilizzata per generare pseudocasualità. Per informazioni su come ripristinare l'unicità, consulta Gestire l'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 AWS SDK vengono ripristinate automaticamente. 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, paghi il costo 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.
L'addebito continua a essere addebitato finché la funzione rimane attiva. Utilizza l'azione ListVersionsByFunction API per identificare le versioni della funzione, quindi utilizzala DeleteFunction per 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 SnapStart le funzioni, i costi di durata si applicano anche al codice di inizializzazione dichiarato all'esterno del gestore, al tempo impiegato dal runtime per il caricamento e a qualsiasi codice eseguito in un runtime hook. 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, consulta AWS Lambda Prezzi.