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à.
In che modo Lambda elabora i record provenienti da origini eventi basate su flussi e code
Uno strumento di mappatura dell'origine degli eventi è una risorsa Lambda che legge gli elementi da servizi basati su flussi o code e richiama una funzione con batch di record. All'interno di uno strumento di mappatura dell'origine degli eventi, risorse chiamate poller di eventi cercano attivamente nuovi messaggi e richiamano funzioni. Per impostazione predefinita, Lambda scala automaticamente i poller di eventi, ma per determinati tipi di origini eventi, puoi utilizzare la modalità provisioning per controllare il numero minimo e massimo di poller di eventi dedicati allo strumento di mappatura dell'origine degli eventi.
I seguenti servizi utilizzano gli strumenti di mappatura dell'origine degli eventi per richiamare le funzioni Lambda:
avvertimento
Gli strumenti di mappatura dell'origine degli eventi elaborano ogni evento almeno una volta e può verificarsi un'elaborazione duplicata dei record. Per evitare potenziali problemi legati agli eventi duplicati, ti consigliamo vivamente di rendere idempotente il codice della funzione. Per ulteriori informazioni, consulta Come posso rendere idempotente la mia funzione Lambda
In che modo gli strumenti di mappatura dell'origine degli eventi differiscono dai trigger diretti
Alcuni Servizi AWS possono richiamare direttamente le funzioni Lambda utilizzando i trigger. Questi servizi inviano eventi a Lambda e la funzione viene richiamata immediatamente quando si verifica l'evento specificato. I trigger sono adatti per eventi discreti ed elaborazione in tempo reale. Quando crei un trigger utilizzando la console Lambda, la console interagisce con il servizio AWS corrispondente per configurare la notifica degli eventi su quel servizio. Il trigger viene effettivamente archiviato e gestito dal servizio che genera gli eventi, non da Lambda. Ecco alcuni esempi di servizi che utilizzano i trigger per richiamare le funzioni Lambda:
-
Amazon Simple Storage Service (Amazon S3): richiama una funzione quando un oggetto viene creato, eliminato o modificato in un bucket. Per ulteriori informazioni, consulta Tutorial: uso di un trigger Amazon S3 per richiamare una funzione Lambda.
-
Amazon Simple Notification Service (Amazon SNS): richiama una funzione quando un messaggio è pubblicato in un argomento SNS. Per ulteriori informazioni, consulta Tutorial: Uso di AWS Lambda con Amazon Simple Notification Service.
-
Gateway Amazon API: richiama una funzione quando viene effettuata una richiesta API a un endpoint specifico. Per ulteriori informazioni, consulta Richiamo di una funzione Lambda utilizzando un endpoint Amazon API Gateway.
Gli strumenti di mappatura dell'origine degli eventi sono risorse Lambda create e gestite all'interno del servizio Lambda. Gli strumenti di mappatura dell'origine degli eventi sono progettate per l'elaborazione di dati o messaggi in streaming ad alto volume dalle code. L'elaborazione dei record da un flusso o da una coda in batch è più efficiente rispetto all'elaborazione dei record singolarmente.
Comportamento di batching
Per impostazione predefinita, una mappatura delle origini eventi raggruppa i registri in un unico payload che Lambda invia alla funzione. Per ottimizzare il comportamento del batch, è possibile configurare una finestra di batch (MaximumBatchingWindowInSeconds) e una dimensione del batch (BatchSize). Una finestra di batch è il tempo massimo per la raccolta dei registri in un singolo payload. La dimensione del batch è il numero massimo di registri in un singolo batch. Lambda richiama la funzione in presenza dei tre criteri seguenti:
-
La finestra di dosaggio raggiunge il valore massimo. Il comportamento predefinito della finestra di batch varia in base alla specifica origine eventi.
Per le origini eventi Kinesis, DynamoDB e Amazon SQS: la finestra di batch di default è 0 secondi. Ciò significa che Lambda richiama la funzione non appena i record sono disponibili. Per impostare una finestra di batch, configura
MaximumBatchingWindowInSeconds
. È possibile impostare questo parametro su qualsiasi valore da compreso tra 0 e 300 secondi con incrementi di 1 secondo. Se si configura una la finestra di batch, la finestra successiva inizia non appena viene completato il precedente richiamo della funzione.Per le origini degli eventi di Amazon MSK, Apache Kafka autogestito, Amazon MQ e Amazon DocumentDB la finestra di batch predefinita è 500 ms. È possibile configurare
MaximumBatchingWindowInSeconds
su qualsiasi valore da 0 secondi a 300 secondi con incrementi di secondi. Una finestra di batch inizia non appena arriva il primo registro.Nota
Perché è possibile modificare
MaximumBatchingWindowInSeconds
solo in incrementi di secondi, non puoi tornare alla finestra di batch predefinita di 500 ms dopo averla modificata. Per ripristinare la finestra di batch predefinita, è necessario creare una nuova mappatura dell'origine eventi.
-
Le dimensioni del batch sono soddisfatte. La dimensione minima del batch è 1. La dimensione predefinita e massima del batch dipendono dall'origine eventi. Per ulteriori informazioni su questi valori, consulta la specifica BatchSize per l'operazione API
CreateEventSourceMapping
. -
La dimensione del payload raggiunge 6 MB. Tale limite non è modificabile.
Il diagramma seguente illustra queste tre configurazioni. Supponiamo che una finestra di batch inizi a t = 7
secondi. Nel primo scenario, la finestra di batch raggiunge il suo massimo di 40 secondi a t = 47
secondi dopo aver accumulato 5 registri. Nel secondo scenario, la dimensione del batch raggiunge 10 prima della scadenza della finestra di batch, quindi la finestra di batch termina in anticipo. Nel secondo scenario, il valore massimo del payload viene raggiunta prima della scadenza della finestra di batch, quindi la finestra di batch termina in anticipo.
Consigliamo di eseguire il test con dimensioni di batch e record diverse in modo che la frequenza di polling di ogni origine eventi sia regolata in base alla velocità con cui la funzione è in grado di completare l'attività. Il parametro BatchSize CreateEventSourceMapping controlla il numero massimo di record che può essere inviato alla funzione a ogni invocazione. Una dimensione di batch maggiore può spesso assorbire in modo più efficiente il costo associato all'invocazione in un set di record più grande, aumentando in tal modo il throughput.
Lambda non attende il completamento di alcuna estensione prima di inviare il batch successivo per l'elaborazione. In altre parole, le estensioni possono continuare a funzionare mentre Lambda elabora il successivo batch di record. Ciò può causare problemi di limitazione in caso di violazione delle impostazioni o dei limiti di simultaneità. Per rilevare se si tratta di un potenziale problema, monitora le tue funzioni e verifica se i parametri di simultaneità per lo strumento di mappatura dell'origine degli eventi sono superiori al previsto. A causa degli intervalli ridotti tra le invocazioni, Lambda potrebbe segnalare brevemente un utilizzo della simultaneità maggiore rispetto al numero di partizioni. Ciò può essere vero anche per le funzioni Lambda senza estensioni.
Per impostazione predefinita, se la funzione restituisce un errore, l'intera mappatura del batch viene rielaborato fino a quando la funzione non restituisce esito positivo o gli elementi nel batch scadono. Per garantire l'ordine di elaborazione, l'elaborazione della mappatura delle fonti eventi per gli shard interessati viene messa in pausa finché l'errore non viene risolto. Per le origini di flusso (DynamoDB e Kinesis), è possibile configurare il numero massimo di tentativi che Lambda effettua quando la funzione restituisce un errore. Gli errori di servizio o le limitazioni per cui il batch non raggiunge la funzione non vengono conteggiati ai fini dei tentativi ripetuti. È inoltre possibile configurare lo strumento di mappatura dell'origine degli eventi per inviare un record di invocazione a una destinazione quando elimina un batch di eventi.
Modalità assegnata
Gli strumenti di mappatura dell'origine degli eventi Lambda utilizzano i poller di eventi per interrogare l'origine eventi alla ricerca di nuovi messaggi. Per impostazione predefinita, Lambda gestisce la scalabilità automatica di questi poller in base al volume dei messaggi. Quando il traffico di messaggi aumenta, Lambda aumenta automaticamente il numero di poller di eventi per gestire il carico e li riduce quando il traffico diminuisce.
In modalità provisioning, è possibile ottimizzare il throughput dello strumento di mappatura dell'origine degli eventi definendo limiti minimi e massimi per il numero di poller di eventi assegnati. Lambda scala quindi lo strumento di mappatura dell'origine degli eventi tra il numero minimo e massimo di poller di eventi in modo reattivo. Questi poller di eventi con provisioning sono dedicati allo strumento di mappatura dell'origine degli eventi, migliorando la capacità di gestire picchi imprevedibili di eventi.
In Lambda, un poller di eventi è un'unità di calcolo in grado di gestire fino a 5 MBps di throughput. Come riferimento, supponiamo che l'origine eventi produca un payload medio di 1 MB e che la durata media della funzione sia di 1 secondo. Se il payload non subisce alcuna trasformazione (ad esempio il filtraggio), un singolo poller può supportare un throughput di 5 MBps e 5 invocazioni Lambda simultanee. L'utilizzo della modalità provisioning comporta costi aggiuntivi. Per le stime dei prezzi, consulta Prezzi di AWS Lambda
La modalità provisioning è supportata solo per origini eventi Amazon MSK e Apache Kafka autogestito. Mentre le impostazioni di simultaneità consentono di controllare la scalabilità della funzione, la modalità provisioning consente di controllare il throughput dello strumento di mappatura dell'origine degli eventi. Per garantire le massime prestazioni, potrebbe essere necessario regolare entrambe le impostazioni in modo indipendente. Per informazioni dettagliate sulla configurazione della modalità provisioning, consulta le sezioni seguenti:
Dopo aver configurato la modalità provisioning, puoi osservare l'utilizzo dei poller di eventi per il tuo carico di lavoro monitorando il parametro ProvisionedPollers
. Per ulteriori informazioni, consulta Parametri dello strumento di mappatura dell'origine degli eventi.
API della mappatura dell'origine eventi
Per gestire un'origine eventi con la AWS Command Line Interface (AWS CLI) o un SDK AWS