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 durature, fornendo le primitive necessarie per verificare l'avanzamento, gestire i tentativi e gestire il flusso di esecuzione. L'SDK è disponibile per JavaScript/TypeScript Python e Java. Per la documentazione completa dell'SDK, che include riferimenti alle API, tutorial di avvio rapido e guide specifiche per il linguaggio, consulta la Durable Execution SDK Developer Guide. AWS
Esecuzione duratura
Un'esecuzione duratura rappresenta l'intero ciclo di vita 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 i dati in caso di guasti. Quando le funzioni riprendono dopo una sospensione o un'interruzione, i checkpoint completati in precedenza vengono ripetuti e l'esecuzione della funzione continua.
Il ciclo di vita potrebbe includere più invocazioni di una funzione Lambda per completare l'esecuzione, in particolare dopo sospensioni o ripristino in caso di guasto. 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 di tutte le operazioni durature (passaggi, attese e altre operazioni) durante l'esecuzione della funzione. Quando la funzione deve essere messa in pausa o subisce un'interruzione, Lambda salva questo registro dei checkpoint e ne interrompe l'esecuzione. Quando è il momento di riprendere, Lambda richiama nuovamente la funzione dall'inizio e riproduce il registro dei checkpoint, sostituendo i valori memorizzati per 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 durature. Il codice deve essere deterministico durante la riproduzione, vale a dire che produce gli stessi risultati con gli stessi input. Evita le operazioni con effetti collaterali (come generare numeri casuali o ottenere l'ora corrente) al di fuori delle fasi, poiché queste possono produrre valori diversi durante la riproduzione e causare comportamenti non deterministici.
DurableContext
DurableContextè l'oggetto di contesto che riceve la tua funzione durevole. Fornisce metodi per operazioni durature come passaggi e attese che creano punti di controllo e gestiscono il flusso di esecuzione.
La tua funzione durevole riceve un contesto Lambda DurableContext anziché predefinito:
TramiteDurableContext, la tua funzione ha accesso a operazioni durature che controllano l'avanzamento e coordinano il lavoro:
Steps esegue la logica aziendale con 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 e controlla il risultato. La funzione richiamata può essere una funzione standard o duratura. 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 delle funzioni durevoli
Le funzioni durevoli hanno impostazioni di configurazione specifiche che controllano il comportamento di esecuzione e la conservazione dei dati. Queste impostazioni sono separate dalla configurazione standard delle funzioni Lambda e si applicano all'intero ciclo di vita dell'esecuzione durevole.
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 duratura 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 duratura può includere più invocazioni di funzioni Lambda man mano che procede attraverso checkpoint, attese e replay. Il timeout di esecuzione si applica al tempo totale trascorso dell'esecuzione duratura, non alle chiamate di singole funzioni.
Comprendere la differenza
Il timeout della funzione Lambda (massimo 15 minuti) limita ogni singola chiamata della funzione. Il timeout di esecuzione duraturo (massimo 1 anno) limita il tempo totale dall'inizio dell'esecuzione fino al completamento, al fallimento o al timeout. Durante questo periodo, la funzione potrebbe essere richiamata più volte durante l'elaborazione dei 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 per una funzione Lambda di 5 minuti:
Ogni chiamata di funzione deve essere completata entro 5 minuti
L'intera esecuzione duratura può durare fino a 24 ore
La tua funzione può essere richiamata molte volte durante queste 24 ore
Le operazioni di attesa non vengono conteggiate nel timeout della funzione Lambda ma nel timeout di esecuzione
È possibile configurare il timeout di esecuzione quando si crea una funzione durevole utilizzando la console Lambda,, o. AWS CLI AWS SAM Nella console Lambda, scegli la tua funzione, quindi Configurazione, Esecuzione durevole. Imposta il valore del timeout di esecuzione in secondi (predefinito: 86400 secondi/24 ore, minimo: 60 secondi, massimo: 31536000 secondi/1 anno).
Nota
Il timeout di esecuzione e il timeout della funzione Lambda sono impostazioni diverse. Il timeout della funzione Lambda controlla la durata di ogni singola chiamata (massimo 15 minuti). Il timeout di esecuzione controlla il tempo totale trascorso per l'intera esecuzione duratura (massimo 1 anno).
Periodo di conservazione
Il periodo di conservazione controlla per quanto tempo Lambda conserva la cronologia delle esecuzioni 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 dei checkpoint.
Alla scadenza del periodo di conservazione, Lambda elimina la cronologia delle esecuzioni e i dati dei checkpoint. Non è più possibile recuperare i dettagli dell'esecuzione o ripetere l'esecuzione. Il periodo di conservazione inizia quando l'esecuzione raggiunge lo stato terminale (SUCCEEDED, FAILED, STOPPED o TIMED_OUT).
È possibile configurare il periodo di conservazione durante la creazione di una funzione durevole utilizzando la console Lambda,, o. AWS CLI AWS SAM Nella console Lambda, scegli la tua funzione, quindi Configurazione, Esecuzione durevole. Imposta il valore del periodo di conservazione in giorni (predefinito: 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 sui costi. Periodi di conservazione più lunghi offrono più tempo per il debug e l'audit, ma aumentano i costi di storage.
Consulta anche
AWS Guida per gli sviluppatori di Durable Execution SDK: riferimenti completi all'SDK, tutorial di avvio rapido, framework di test e guide specifiche per la lingua.
Funzioni durevoli o Step Functions: confronta le funzioni durevoli con Step Functions per capire quando ogni approccio è più efficace.