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à.
Richiamare le funzioni durevoli Lambda
Le funzioni Lambda durevoli supportano gli stessi metodi di invocazione delle altre funzioni Lambda. È possibile richiamare funzioni durevoli in modo sincrono, asincrono o tramite mappature delle sorgenti degli eventi. Il processo di invocazione è identico alle altre funzioni, ma le funzioni durevoli forniscono funzionalità aggiuntive per le esecuzioni di lunga durata e la gestione automatica dello stato.
Metodi di invocazione
Invocazione sincrona: richiama una funzione durevole e attendi la risposta. Le chiamate sincrone sono limitate a 15 minuti, o meno se il timeout della funzione o il timeout di esecuzione sono inferiori. Utilizza la chiamata sincrona quando hai bisogno di risultati immediati o quando esegui l'integrazione con API e servizi che prevedono una risposta. Puoi utilizzare le operazioni di attesa per un calcolo efficiente senza interrompere il chiamante: la chiamata attende il completamento dell'intera esecuzione durevole. Per gli avvii di esecuzione idempotenti, utilizzate il parametro del nome dell'esecuzione come descritto in Idempotency.
aws lambda invoke \ --function-name my-durable-function:1 \ --cli-binary-format raw-in-base64-out \ --payload '{"orderId": "12345"}' \ response.json
Richiamata asincrona: mette in coda un evento per l'elaborazione senza attendere una risposta. Lambda mette l'evento in coda e ritorna immediatamente. Le chiamate asincrone supportano durate di esecuzione fino a 1 anno. Utilizza l'invocazione asincrona per scenari estremi o quando l'elaborazione può avvenire in background. Per avvii di esecuzione idempotenti, utilizzate il parametro del nome dell'esecuzione come descritto in Idempotenza.
aws lambda invoke \ --function-name my-durable-function:1 \ --invocation-type Event \ --cli-binary-format raw-in-base64-out \ --payload '{"orderId": "12345"}' \ response.json
Mappature delle sorgenti degli eventi: configura Lambda per richiamare automaticamente la tua funzione duratura quando i record sono disponibili da servizi basati su stream o code come Amazon SQS, Kinesis o DynamoDB. Le mappature delle sorgenti degli eventi analizzano l'origine dell'evento e richiamano la funzione con batch di record. Per i dettagli sull'utilizzo delle mappature delle sorgenti degli eventi con funzioni durevoli, inclusi i limiti di durata dell'esecuzione, consulta Mappature delle sorgenti degli eventi con funzioni durevoli.
Nota
Le funzioni durevoli supportano le code di lettere morte (DLQ) per la gestione degli errori, ma non supportano le destinazioni Lambda. Configura un DLQ per acquisire i record delle chiamate non riuscite.
Requisiti ARN qualificati
Le funzioni durevoli richiedono identificatori qualificati per la chiamata. È necessario richiamare funzioni durevoli utilizzando un numero di versione, un alias o. $LATEST È possibile utilizzare un ARN completo o un nome di funzione con version/alias suffisso. Non è possibile utilizzare un identificatore non qualificato (senza una versione o un suffisso di alias).
Invocazioni valide:
# Using full ARN with version number arn:aws:lambda:us-east-1:123456789012:function:my-durable-function:1 # Using full ARN with alias arn:aws:lambda:us-east-1:123456789012:function:my-durable-function:prod # Using full ARN with $LATEST arn:aws:lambda:us-east-1:123456789012:function:my-durable-function:$LATEST # Using function name with version number my-durable-function:1 # Using function name with alias my-durable-function:prod
Invocazioni non valide:
# Unqualified ARN (not allowed) arn:aws:lambda:us-east-1:123456789012:function:my-durable-function # Unqualified function name (not allowed) my-durable-function
Questo requisito garantisce che le esecuzioni durevoli rimangano coerenti per tutto il loro ciclo di vita. Quando viene avviata un'esecuzione durevole, viene associata alla versione della funzione che l'ha avviata. Se la funzione viene messa in pausa e riprende ore o giorni dopo, Lambda richiama la stessa versione, quindi la pubblicazione di una nuova versione influisce solo sulle nuove esecuzioni. Allo stesso modo, quando aggiorni un alias, le nuove esecuzioni utilizzano la nuova versione e le esecuzioni in corso continuano sulla versione da cui sono iniziate.
Le esecuzioni di $LATEST possono riprendere con il codice aggiornato
Le esecuzioni iniziate con il $LATEST qualificatore non vengono aggiunte a una copia fissa del codice. Se aggiorni il codice della funzione mentre un'esecuzione è in pausa, l'esecuzione riprende sul nuovo codice anziché sulla versione con cui è iniziata.
Il codice potrebbe non elaborare più lo stato di esecuzione salvato nello stesso modo, con conseguenti errori di non determinismo o errori silenziosi. Per ulteriori informazioni sulla scrittura di funzioni che si riproducono in modo sicuro, consulta. Versioni e alias delle funzioni
Best practice
Utilizzate versioni numerate o alias per la produzione di funzioni durevoli anziché. $LATEST Le versioni numerate sono immutabili e supportano la riproduzione deterministica. Facoltativamente, gli alias forniscono un riferimento stabile che è possibile aggiornare per indirizzare a nuove versioni senza modificare il codice di invocazione. $LATESTUtilizzatelo solo per la prototipazione o per abbreviare i tempi di implementazione durante lo sviluppo, poiché le esecuzioni potrebbero non essere riprodotte correttamente se il codice cambia durante l'esecuzione.
Comprensione del ciclo di vita dell'esecuzione
Quando richiami una funzione duratura, Lambda crea un'esecuzione durevole che può includere più chiamate di funzioni:
-
Richiamata iniziale: la richiesta di invocazione crea una nuova esecuzione durevole. Lambda assegna un ID di esecuzione univoco e avvia l'elaborazione.
-
Esecuzione e checkpoint: man mano che la funzione esegue operazioni durature, l'SDK crea checkpoint che tengono traccia dei progressi.
-
Sospensione (se necessaria): se la funzione utilizza attese durature, ad esempio or,
waito ripetizioni automatiche dei passaggiwaitForCallback, Lambda sospende l'esecuzione e interrompe l'addebito del tempo di elaborazione. -
Ripresa: quando è il momento di riprendere (anche dopo nuovi tentativi), Lambda richiama nuovamente la funzione. L'SDK riproduce il registro del checkpoint e continua dal punto in cui l'esecuzione si è interrotta.
-
Completamento: quando la funzione restituisce un risultato finale o genera un errore non gestito, l'esecuzione durevole viene completata.
Per le chiamate sincrone, il chiamante attende il completamento dell'intera esecuzione durevole, comprese le eventuali operazioni di attesa. Se l'esecuzione supera il timeout di chiamata (15 minuti o meno), la chiamata scade. Per le chiamate asincrone, Lambda ritorna immediatamente e l'esecuzione continua indipendentemente. Utilizza le API di esecuzione durevoli per tenere traccia dello stato di esecuzione e recuperare i risultati finali.
Richiamo dal codice dell'applicazione
Usa gli AWS SDK per richiamare funzioni durevoli dal codice dell'applicazione, con la stessa Invoke API che usi per qualsiasi funzione Lambda. Includi un numero di versione, un alias o $LATEST nel nome della funzione:
Invocazioni concatenate
Le funzioni durevoli possono richiamare qualsiasi funzione Lambda, inclusa un'altra funzione durevole, utilizzando invoke l'operazione from. DurableContext Questo crea una chiamata concatenata in cui la funzione chiamante si sospende fino al completamento della funzione invocata:
Le invocazioni concatenate creano un checkpoint nella funzione chiamante. Se la funzione chiamante viene interrotta, riprende dal checkpoint con il risultato della funzione invocata, senza richiamare nuovamente la funzione.
Nota
Cross-account le invocazioni concatenate non sono supportate. La funzione richiamata deve trovarsi nello stesso AWS account della funzione chiamante.