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à.
Potenzia le funzioni Lambda utilizzando le estensioni Lambda
È possibile utilizzare le estensioni Lambda per potenziare le funzioni Lambda. Ad esempio, utilizza le estensioni Lambda per integrare le funzioni con i tuoi strumenti di monitoraggio, osservabilità, sicurezza e governance preferiti. È possibile scegliere tra un ampio set di strumenti forniti dai Partner AWS Lambda
Lambda supporta estensioni interne ed esterne. Un'estensione esterna viene eseguita come processo indipendente nell'ambiente di esecuzione e continua a funzionare dopo che l'invocazione della funzione è completamente elaborata. Poiché le estensioni vengono eseguite come processi separati, è possibile scriverle in un linguaggio diverso da quello della funzione. Tutti i Runtime Lambda supportano le estensioni.
Un'estensione interna viene eseguita come parte del processo di runtime. La funzione accede alle estensioni interne utilizzando script wrapper o meccanismi in-process come JAVA_TOOL_OPTIONS
. Per ulteriori informazioni, consulta Modifica dell'ambiente di runtime.
Puoi aggiungere estensioni a una funzione utilizzando la console Lambda, AWS Command Line Interface (AWS CLI) o servizi e strumenti infrastructure-as-code (IaC) come AWS CloudFormation, AWS Serverless Application Model (AWS SAM) e Terraform.
Ti viene addebitato il tempo di esecuzione consumato dall'estensione (in incrementi di 1 ms). Non c'è alcun costo per installare le proprie estensioni. Per ulteriori informazioni sui prezzi delle estensioni, consulta la sezione Prezzi AWS Lambda
Per un tutorial sulle estensioni e su come usarle con le funzioni Lambda, consultare il Workshop sulle estensioni di AWS Lambda
Argomenti
Ambiente di esecuzione
Lambda richiama la funzione in un ambiente di esecuzione, che fornisce un ambiente di runtime sicuro e isolato. L'ambiente di esecuzione gestisce le risorse necessarie per eseguire la funzione e fornisce il supporto del ciclo di vita per il runtime e le estensioni della funzione.
Il ciclo di vita dell'ambiente di esecuzione prevede le seguenti fasi:
-
Init
: in questa fase, Lambda crea o sblocca un ambiente di esecuzione con le risorse configurate, scarica il codice per la funzione e tutti i livelli, inizializza le estensioni, inizializza il runtime e quindi esegue il codice di inizializzazione della funzione (il codice al di fuori del gestore principale). La faseInit
si verifica durante la prima invocazione o prima delle invocazioni di funzione se è stata abilitata la concorrenza con provisioning.La fase
Init
è suddivisa in tre sottofasi:Extension init
,Runtime init
eFunction init
. Queste sottofasi assicurano che tutte le estensioni e il runtime completino le loro attività di configurazione prima dell'esecuzione del codice della funzione.Quando Lambda SnapStart è attivato, la fase
Init
si verifica quando si pubblica una versione della funzione. Lambda salva uno snapshot della memoria e dello stato del disco dell'ambiente di esecuzione inizializzato, mantiene lo snapshot crittografato e lo memorizza nella cache per l'accesso a bassa latenza. Se disponi di un hook di runtimebeforeCheckpoint
, il codice viene eseguito alla fine della faseInit
. -
Restore
(SnapStart solo): Quando richiami una SnapStartfunzione per la prima volta e man mano che la funzione aumenta, Lambda riprende i nuovi ambienti di esecuzione dall'istantanea persistente invece di inizializzare la funzione da zero. Se disponi di un hook di runtimeafterRestore()
, il codice viene eseguito alla fine della faseRestore
. Ti sarà addebitata la durata degli hook di runtimeafterRestore()
. Il runtime (JVM) deve essere caricato e gli hook di runtime devono essere completati entro ilafterRestore()
limite di timeout (10 secondi). Altrimenti, otterrai un. SnapStartTimeoutException Al termine della faseRestore
, Lambda chiama il gestore della funzione (Invoca fase). -
Invoke
: in questa fase, Lambda invoca il gestore della funzione. Dopo che la funzione è stata completata, Lambda si prepara a gestire un'altra invocazione di funzione. -
Shutdown
: questa fase viene attivata se la funzione Lambda non riceve alcuna invocazione per un certo periodo. Nella faseShutdown
, Lambda chiude il runtime, avvisa le estensioni per farle fermare in modo pulito, e poi rimuove l'ambiente. Lambda invia un eventoShutdown
a ogni estensione; l'evento comunica all'estensione che l'ambiente sta per essere chiuso.
Durante la fase Init
, Lambda estrae i livelli contenenti estensioni nella directory /opt
nell'ambiente di esecuzione. Lambda cerca le estensioni nella directory /opt/extensions/
, interpreta ogni file come un bootstrap eseguibile per avviare l'estensione e avvia tutte le estensioni in parallelo.
Impatto su prestazioni e risorse
Le dimensioni delle estensioni della funzione vengono conteggiate per il limite di dimensioni del pacchetto di distribuzione. Per un archivio di file .zip, la dimensione totale decompressa della funzione e di tutte le estensioni non può superare il limite della dimensione decompressa del pacchetto di distribuzione pari a 250 MB.
Le estensioni possono influire sulle prestazioni della funzione perché condividono risorse funzionali come CPU memoria e archiviazione. Ad esempio, se un'estensione esegue operazioni ad alta intensità di calcolo, è possibile che la durata dell'esecuzione della funzione aumenti.
Ogni estensione deve completare la sua inizializzazione prima che Lambda richiami la funzione. Pertanto, un'estensione che consuma tempo di inizializzazione significativo può aumentare la latenza della chiamata di funzione.
Per misurare il tempo aggiuntivo impiegato dall'estensione dopo l'esecuzione della funzione, è possibile utilizzare la PostRuntimeExtensionsDuration
metrica della funzione. Per misurare l'aumento della memoria utilizzata, è possibile utilizzare la metrica MaxMemoryUsed
. Per comprendere l'impatto di un'estensione specifica, è possibile eseguire diverse versioni delle funzioni affiancate.
Autorizzazioni
Le estensioni hanno accesso alle stesse risorse delle funzioni. Poiché le estensioni vengono eseguite nello stesso ambiente della funzione, le autorizzazioni vengono condivise tra la funzione e l'estensione.
Per un archivio di file.zip, puoi creare un AWS CloudFormation modello per semplificare l'operazione di allegare la stessa configurazione di estensione, incluse le AWS Identity and Access Management () IAM autorizzazioni, a più funzioni.