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à.
Aumenta le funzioni degli eventi Lambda utilizzando le estensioni Lambda
Puoi utilizzare le estensioni Lambda per potenziare le funzioni degli eventi Lambda. Ad esempio, usa le estensioni Lambda per integrare Event Functions 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 l'elaborazione completa della chiamata di Event Function. Poiché le estensioni vengono eseguite come processi separati, è possibile scriverle in un linguaggio diverso rispetto alla Event Function. Tutti i Runtime della funzione Lambda Event supportano le estensioni.
Un'estensione interna viene eseguita come parte del processo di runtime. La tua Event Function 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 Event Function utilizzando la console Lambda, AWS Command Line Interface (AWS CLI) o servizi e strumenti infrastructure-as-code (IaC) come CloudFormation, AWS Serverless Application Model (AWS SAM) e Terraform.
Ti viene addebitato il runtime 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
Argomenti
Ambiente di esecuzione
Lambda richiama la tua Event Function 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 di evento e fornisce supporto per l'intero ciclo di vita del runtime e delle estensioni della funzione di evento.
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 faseInitsi 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 initeFunction 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 SnapStart è attivato, la fase
Initsi 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 runtime prima del checkpoint, 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 runtime dopo il ripristino, il codice viene eseguito alla fine della faseRestore. Ti sarà addebitata la durata degli hook di runtime dopo il ripristino. Il runtime deve essere caricato e gli hook di runtime dopo il ripristino devono essere completati entro il limite di timeout (10 secondi). SnapStartTimeoutExceptionAltrimenti, otterrai un. 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 eventoShutdowna 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
La dimensione delle estensioni della tua Event Function viene conteggiata ai fini del limite di dimensione del pacchetto di distribuzione. Per un archivio di file.zip, la dimensione totale decompressa della Event Function e di tutte le estensioni non può superare il limite di 250 MB del pacchetto di distribuzione decompresso.
Le estensioni possono influire sulle prestazioni di Event Function perché condividono risorse di Event Function come CPU, memoria e storage. Ad esempio, se un'estensione esegue operazioni ad alta intensità di calcolo, potresti vedere aumentare la durata di esecuzione della tua Event Function.
Ogni estensione deve completare l'inizializzazione prima che Lambda richiami la Event Function. Pertanto, un'estensione che richiede un tempo di inizializzazione significativo può aumentare la latenza della chiamata della funzione di evento.
Per misurare il tempo aggiuntivo impiegato dall'estensione dopo l'esecuzione della funzione Event, puoi utilizzare la metrica della funzione. PostRuntimeExtensionsDuration Per misurare l'aumento della memoria utilizzata, è possibile utilizzare la metrica MaxMemoryUsed. Per comprendere l'impatto di un'estensione specifica, puoi eseguire diverse versioni delle tue Event Functions fianco a fianco.
Nota
La metrica MaxMemoryUsed è una delle Metriche raccolte da Lambda Insights e non una metrica nativa di Lambda.
Permissions
Le estensioni hanno accesso alle stesse risorse di Event Functions. Poiché le estensioni vengono eseguite nello stesso ambiente della funzione evento, le autorizzazioni vengono condivise tra la funzione evento e l'estensione.
Per un archivio di file.zip, puoi creare un CloudFormation modello per semplificare il compito di allegare la stessa configurazione di estensione, incluse le autorizzazioni AWS Identity and Access Management (IAM), a più funzioni evento.