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à.
Mappature delle sorgenti degli eventi con funzioni durevoli
Le funzioni durevoli funzionano con tutte le mappature delle sorgenti degli eventi Lambda. Configura le mappature delle sorgenti degli eventi per funzioni durevoli nello stesso modo in cui le configuri per le funzioni standard. Le mappature delle sorgenti degli eventi analizzano automaticamente sorgenti di eventi come Amazon SQS, Kinesis e DynamoDB Streams e richiamano la tua funzione con batch di record.
Le mappature delle sorgenti degli eventi sono utili per funzioni durevoli che elaborano flussi o code con flussi di lavoro complessi e in più fasi. Ad esempio, puoi creare una funzione durevole che elabora i messaggi Amazon SQS con nuovi tentativi, chiamate API esterne e approvazioni umane.
In che modo le mappature delle sorgenti degli eventi richiamano funzioni durevoli
Le mappature delle sorgenti degli eventi richiamano funzioni durevoli in modo sincrono, in attesa del completamento dell'esecuzione duratura completa prima di elaborare il batch successivo o di contrassegnare i record come elaborati. Se il tempo di esecuzione duraturo totale supera i 15 minuti, l'esecuzione scade e fallisce. La mappatura dell'origine degli eventi riceve un'eccezione di timeout e la gestisce in base alla configurazione dei nuovi tentativi.
Limite di esecuzione di 15 minuti
Quando le funzioni durevoli vengono richiamate dalle mappature delle sorgenti degli eventi, la durata totale dell'esecuzione durevole non può superare i 15 minuti. Questo limite si applica all'intera esecuzione durevole dall'inizio al completamento, non solo alle chiamate di singole funzioni.
Questo limite di 15 minuti è separato dal timeout della funzione Lambda (anch'esso massimo 15 minuti). Il timeout della funzione controlla per quanto tempo può essere eseguita ogni singola chiamata, mentre il timeout di esecuzione duraturo controlla il tempo totale trascorso dall'inizio dell'esecuzione al completamento.
Scenari di esempio:
-
Valido: una funzione durevole elabora un messaggio Amazon SQS in tre passaggi, ciascuno dei quali richiede 2 minuti, quindi attende 5 minuti prima di completare un passaggio finale. Tempo di esecuzione totale: 11 minuti. Funziona perché il totale è inferiore a 15 minuti.
-
Non valido: una funzione durevole elabora un messaggio Amazon SQS, completa l'elaborazione iniziale in 2 minuti, quindi attende 20 minuti per una richiamata esterna prima del completamento. Tempo di esecuzione totale: 22 minuti. Questa operazione supera il limite di 15 minuti e avrà esito negativo.
-
Non valido: una funzione durevole elabora un record Kinesis con più operazioni di attesa per un totale di 30 minuti tra i passaggi. Anche se ogni singola chiamata viene completata rapidamente, il tempo di esecuzione totale supera i 15 minuti.
Importante
Configura il timeout di esecuzione duraturo su 15 minuti o meno quando utilizzi le mappature delle sorgenti degli eventi, altrimenti la creazione della mappatura delle sorgenti degli eventi avrà esito negativo. Se il flusso di lavoro richiede tempi di esecuzione più lunghi, utilizza lo schema di funzioni intermedie descritto di seguito.
Configurazione delle mappature delle sorgenti degli eventi
Configura le mappature delle sorgenti degli eventi per funzioni durevoli utilizzando la console Lambda, oppure. AWS CLI AWS SDKs Tutte le proprietà standard di mappatura delle sorgenti degli eventi si applicano alle funzioni durevoli:
aws lambda create-event-source-mapping \ --function-name arn:aws:lambda:us-east-1:123456789012:function:my-durable-function:1 \ --event-source-arn arn:aws:sqs:us-east-1:123456789012:my-queue \ --batch-size 10 \ --maximum-batching-window-in-seconds 5
Ricordarsi di utilizzare un ARN qualificato (con numero di versione o alias) quando si configurano le mappature delle sorgenti degli eventi per funzioni durevoli.
Gestione degli errori con le mappature delle sorgenti degli eventi
Le mappature delle sorgenti degli eventi forniscono una gestione degli errori integrata che funziona con funzioni durevoli:
-
Comportamento dei nuovi tentativi: se la chiamata iniziale fallisce, la mappatura delle sorgenti degli eventi riprova in base alla configurazione dei nuovi tentativi. Configura il numero massimo di tentativi e gli intervalli di nuovi tentativi in base alle tue esigenze.
-
Code di lettere scadenti: configura una coda di lettere scadenti per acquisire i record che hanno esito negativo dopo tutti i nuovi tentativi. Ciò impedisce la perdita di messaggi e consente l'ispezione manuale dei record non riusciti.
-
Errori parziali dei batch: per Amazon SQS e Kinesis, utilizza la segnalazione parziale degli errori dei batch per elaborare i record singolarmente e riprovare solo i record non riusciti.
-
Bisect in caso di errore: per Kinesis e DynamoDB Streams, abilita bisect on error per dividere i batch non riusciti e isolare i record problematici.
Nota
Le funzioni durevoli supportano dead-letter queues (DLQs) per la gestione degli errori, ma non supportano le destinazioni Lambda. Configura un DLQ per acquisire i record delle chiamate non riuscite.
Utilizzo di una funzione intermedia per flussi di lavoro di lunga durata
Se il completamento del flusso di lavoro richiede più di 15 minuti, utilizzate una funzione Lambda standard intermedia tra la mappatura della sorgente dell'evento e la funzione duratura. La funzione intermediaria riceve gli eventi dalla mappatura delle sorgenti degli eventi e richiama la funzione duratura in modo asincrono, rimuovendo il limite di esecuzione di 15 minuti.
Questo modello disaccoppia il modello di invocazione sincrona della mappatura della sorgente degli eventi dal modello di esecuzione a lunga durata della funzione duratura. La mappatura delle sorgenti degli eventi richiama la funzione intermedia, che ritorna rapidamente dopo l'avvio dell'esecuzione duratura. La funzione durable viene quindi eseguita in modo indipendente per tutto il tempo necessario (fino a 1 anno).
Architecture
Il modello di funzione intermedia utilizza tre componenti:
-
Mappatura delle sorgenti degli eventi: interroga l'origine dell'evento (Amazon SQS, Kinesis, DynamoDB Streams) e richiama la funzione intermediaria in modo sincrono con i batch di record.
-
Funzione intermedia: una funzione Lambda standard che riceve gli eventi dalla mappatura dell'origine degli eventi, convalida e trasforma i dati se necessario e richiama la funzione duratura in modo asincrono. Questa funzione si completa rapidamente (in genere in meno di 1 secondo) e restituisce il controllo alla mappatura delle sorgenti degli eventi.
-
Funzione durevole: elabora l'evento con una logica complessa a più fasi che può essere eseguita per periodi prolungati. Richiamato in modo asincrono, quindi non è vincolato dal limite di 15 minuti.
Implementazione
La funzione intermediaria riceve l'intero evento dalla mappatura della sorgente dell'evento e richiama la funzione durevole in modo asincrono. Utilizzate il parametro del nome di esecuzione per garantire l'avvio di un'esecuzione idempotente, evitando l'elaborazione duplicata se la mappatura dell'origine dell'evento riprova:
Per l'idempotenza nella funzione intermedia stessa, usate Powertools per evitare invocazioni duplicate della funzione durable se la AWS Lambda mappatura della sorgente dell'evento riprova la funzione intermediaria.
La funzione durable riceve il payload con il nome di esecuzione ed elabora tutti i record con una logica di lunga durata:
Considerazioni chiave
Questo modello rimuove il limite di esecuzione di 15 minuti disaccoppiando la mappatura della sorgente dell'evento dall'esecuzione durevole. La funzione intermedia ritorna immediatamente dopo l'avvio dell'esecuzione duratura, consentendo alla mappatura della fonte dell'evento di continuare l'elaborazione. La funzione durable viene quindi eseguita in modo indipendente per tutto il tempo necessario.
La funzione intermedia ha successo quando richiama la funzione durable, non quando l'esecuzione duratura viene completata. Se l'esecuzione duratura fallisce in un secondo momento, la mappatura della fonte dell'evento non riproverà perché il batch è già stato elaborato correttamente. Implementa la gestione degli errori nella funzione durable e configura le code di lettere morte per le esecuzioni non riuscite.
Utilizzate il parametro del nome di esecuzione per garantire l'avvio di un'esecuzione idempotente. Se la mappatura dell'origine dell'evento riprova la funzione intermedia, la funzione durable non avvierà un'esecuzione duplicata perché il nome dell'esecuzione esiste già.
Fonti di eventi supportate
Le funzioni durevoli supportano tutte le sorgenti di eventi Lambda che utilizzano le mappature delle sorgenti degli eventi:
Code Amazon SQS (standard e FIFO)
Flussi Kinesis
DynamoDB Streams
Amazon Managed Streaming for Apache Kafka (Amazon MSK)
Apache Kafka gestito dal cliente
Amazon MQ (ActiveMQ e RabbitMQ)
Flussi di modifica di Amazon DocumentDB
Tutti i tipi di sorgenti di eventi sono soggetti al limite di esecuzione durevole di 15 minuti quando si richiamano funzioni durevoli.