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à.
Concetti di base
Il AWS Durable Execution SDK è la base per la creazione di funzioni durevoli e fornisce le primitive necessarie per controllare i progressi, gestire i nuovi tentativi e gestire il flusso di esecuzione. L'SDK è disponibile per Node.js (JavaScript and TypeScript), Python, Java e C# (.NET). Per la documentazione completa sull'SDK, tra cui riferimenti alle API, tutorial rapidi e guide specifiche per ogni lingua, consulta la Durable Execution SDK Developer Guide.AWS
Esecuzione duratura
Un'esecuzione durevole rappresenta il ciclo di vita completo di una funzione durevole Lambda, che utilizza un meccanismo di checkpoint e replay per tracciare l'avanzamento della logica aziendale, sospendere l'esecuzione e ripristinare in caso di errori. Quando le funzioni riprendono dopo la sospensione o l'interruzione, i checkpoint precedentemente completati vengono riprodotti e la funzione continua l'esecuzione.
Il ciclo di vita potrebbe includere più invocazioni di una funzione Lambda per completare l'esecuzione, in particolare dopo sospensioni o ripristini in caso di errore. Questo approccio consente alla funzione di funzionare per periodi prolungati (fino a un anno) mantenendo un progresso affidabile nonostante le interruzioni.
Come funziona il replay
Lambda mantiene un registro in esecuzione di tutte le operazioni durevoli (passaggi, attese e altre operazioni) durante l'esecuzione della funzione. Quando la funzione deve essere messa in pausa o incontra un'interruzione, Lambda salva questo registro dei checkpoint e interrompe l'esecuzione. Quando è il momento di riprendere, Lambda richiama nuovamente la funzione dall'inizio e riproduce il registro del checkpoint, sostituendo i valori memorizzati con le operazioni completate. Ciò significa che il codice viene eseguito nuovamente, ma i passaggi completati in precedenza non vengono rieseguiti. Al loro posto vengono utilizzati i risultati memorizzati.
Questo meccanismo di riproduzione è fondamentale per comprendere le funzioni durevoli. Il codice deve essere deterministico durante la riproduzione, il che significa che produce gli stessi risultati con gli stessi input. Evita le operazioni con effetti collaterali (come la generazione di numeri casuali o la visualizzazione dell'ora corrente) al di fuori dei passaggi, poiché queste possono produrre valori diversi durante la riproduzione e causare comportamenti non deterministici.
DurableContext
DurableContextè l'oggetto contestuale che riceve la tua funzione durevole. Fornisce metodi per operazioni durature come passaggi e attese che creano checkpoint e gestiscono il flusso di esecuzione.
La tua funzione duratura riceve un contesto Lambda DurableContext invece del contesto Lambda predefinito:
TramiteDurableContext, la funzione ha accesso a operazioni durevoli che controllano l'avanzamento e coordinano il lavoro:
Le fasi eseguono la logica aziendale con nuovi tentativi integrati e checkpoint automatico. Ogni passaggio salva il risultato, in modo che la funzione riprenda dall'ultimo passaggio completato dopo un'interruzione.
Le attese sono pause pianificate in cui la funzione smette di funzionare e interrompe la ricarica fino al momento di continuare. Usali per periodi di tempo, callback esterni o sondaggi per una condizione.
Invoke chiama altre funzioni Lambda, incluse le funzioni durevoli, e i checkpoint sono il risultato. Cross-account le invocazioni non sono supportate.
Per il riferimento linguistico completo a tutte le operazioni durevoli disponibili, consulta SDK Reference nella AWS Durable Execution SDK Developer Guide.
Configurazione durevole delle funzioni
Le funzioni durevoli aggiungono impostazioni di configurazione che controllano il comportamento di esecuzione e la conservazione dei dati. Queste impostazioni si aggiungono alla configurazione esistente della funzione, come la memoria e il timeout della funzione. Si applicano all'intera esecuzione duratura piuttosto che alle singole invocazioni.
L'DurableConfigoggetto definisce la configurazione per le funzioni durevoli:
{ "ExecutionTimeout": Integer, "RetentionPeriodInDays": Integer }
Execution timeout (Timeout di esecuzione)
Il timeout di esecuzione controlla per quanto tempo può durare un'esecuzione durevole dall'inizio al completamento. Questo è diverso dal timeout della funzione Lambda, che controlla per quanto tempo può essere eseguita una singola chiamata di funzione.
Un'esecuzione durevole può includere più chiamate di funzioni Lambda man mano che avanza attraverso checkpoint, attese e replay. Il timeout di esecuzione si applica al tempo totale trascorso dell'esecuzione durevole, non alle chiamate di singole funzioni.
Comprendere la differenza
Il timeout della funzione limita ogni singola chiamata della funzione, fino a 15 minuti per impostazione predefinita o 90 minuti per le chiamate asincrone e di mappatura dell'origine degli eventi su istanze gestite Lambda. Il timeout di esecuzione duraturo (massimo 1 anno) limita il tempo totale dall'inizio dell'esecuzione al completamento, all'errore o al timeout. Durante questo periodo, la funzione potrebbe essere richiamata più volte mentre elabora i passaggi, le attese e il ripristino in caso di errori.
Ad esempio, se imposti un timeout di esecuzione duraturo di 24 ore e un timeout della funzione Lambda di 5 minuti:
Ogni chiamata di funzione deve essere completata entro 5 minuti
L'intera esecuzione durevole può durare fino a 24 ore
La tua funzione può essere richiamata più volte durante quelle 24 ore
Le operazioni di attesa non vengono conteggiate ai fini del timeout della funzione Lambda, ma ai fini del timeout di esecuzione
Puoi configurare il timeout di esecuzione quando crei una funzione durevole utilizzando la console Lambda AWS CLI, oppure. AWS SAM Nella console Lambda, scegli la tua funzione, quindi Configurazione, Esecuzione durevole. Imposta il valore del timeout di esecuzione in secondi (impostazione predefinita: 86400 secondi/24 ore, minimo: 60 secondi, massimo: 31536000 secondi/1 anno).
Nota
Il timeout di esecuzione e il timeout della funzione sono impostazioni diverse. Il timeout della funzione limita ogni chiamata, fino a 15 minuti per impostazione predefinita o 90 minuti per le chiamate asincrone e di mappatura dell'origine degli eventi su istanze gestite Lambda. Il timeout di esecuzione limita il tempo totale dell'esecuzione durevole per tutte le sue chiamate (massimo 1 anno).
Periodo di conservazione
Il periodo di conservazione controlla per quanto tempo Lambda conserva la cronologia di esecuzione e i dati dei checkpoint dopo il completamento di un'esecuzione duratura. Questi dati includono i risultati delle fasi, lo stato di esecuzione e il registro completo del checkpoint.
Dopo la scadenza del periodo di conservazione, Lambda elimina la cronologia di esecuzione e i dati del checkpoint. Non è più possibile recuperare i dettagli dell'esecuzione o ripetere l'esecuzione. Il periodo di conservazione inizia quando l'esecuzione raggiunge uno stato terminale (SUCCEEDED, FAILED, STOPED o TIMED_OUT).
Puoi configurare il periodo di conservazione quando crei una funzione durevole utilizzando la console Lambda AWS CLI, oppure. AWS SAM Nella console Lambda, scegli la tua funzione, quindi Configurazione, Esecuzione durevole. Imposta il valore del periodo di conservazione in giorni (impostazione predefinita: 14 giorni, minimo: 1 giorno, massimo: 90 giorni).
Scegli un periodo di conservazione in base ai requisiti di conformità, alle esigenze di debug e alle considerazioni relative ai costi. Periodi di conservazione più lunghi offrono più tempo per il debug e il controllo, ma aumentano i costi di storage.
Consulta anche
AWS Guida per gli sviluppatori di Durable Execution SDK: riferimento completo all'SDK, tutorial rapidi, framework di test e guide specifiche per lingua.
Funzioni durevoli o Step Functions: confronta le funzioni durevoli con Step Functions per capire quando ogni approccio è più efficace.