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à.
Elaborazione di messaggi Amazon MSK con Lambda
Nota
Se desideri inviare dati a una destinazione diversa da una funzione Lambda o arricchire i dati prima di inviarli, consulta Pipe di Amazon EventBridge.
Argomenti
- Aggiunta di Amazon MSK come origine eventi
- Parametri di configurazione di Amazon MSK
- Creazione di strumenti di mappatura dell'origine degli eventi multi-account
- Utilizzo di un cluster Amazon MSK come origine eventi
- Posizioni di partenza di polling e flussi
- Parametri di Amazon CloudWatch
- Comportamento di scalabilità del throughput dei messaggi per gli strumenti di mappatura dell'origine degli eventi Amazon MSK
Aggiunta di Amazon MSK come origine eventi
Per creare una mappatura dell'origine eventi, aggiungi il cluster Amazon MSK come trigger della funzione Lambda utilizzando la console Lambda, un SDK AWS
Questa sezione descrive come creare una mappatura dell'origine eventi utilizzando la console Lambda e AWS CLI.
Prerequisiti
-
Un cluster Amazon MSK e un argomento Kafka. Per ulteriori informazioni, consulta Nozioni di base per l'uso di Amazon MSK nella Guida per gli sviluppatori di Amazon Managed Streaming for Apache Kafka.
-
Un ruolo di esecuzione con l'autorizzazione di accedere alle risorse AWS utilizzate dal cluster MSK.
ID gruppo di consumer personalizzabile
Quando configuri Kafka come origine eventi, puoi specificare un ID gruppo di consumer. Questo ID gruppo di consumer è un identificatore esistente per il gruppo di consumer Kafka a cui desideri che la tua funzione Lambda aderisca. Puoi utilizzare questa funzione per migrare senza problemi qualsiasi configurazione di elaborazione dei record Kafka in corso da altri utenti a Lambda.
Se specifichi l'ID gruppo di consumer e sono presenti altri sondaggi attivi all'interno di quel gruppo di consumer, Kafka distribuisce i messaggi a tutti i consumer. In altre parole, Lambda non riceve tutti i messaggi relativi all'argomento Kafka. Se desideri che Lambda gestisca tutti i messaggi dell'argomento, disattiva tutti gli altri sondaggi in quel gruppo di consumer.
Inoltre, se specifichi un ID gruppo di consumer e Kafka trova un gruppo di consumer esistente valido con lo stesso ID, Lambda ignora il parametro StartingPosition
per la mappatura dell'origine eventi. Inizia invece ad elaborare i record in base alla compensazione impegnata del gruppo di consumer. Se specifichi un ID gruppo di consumer e Kafka non riesce a trovare un gruppo di consumer esistente, Lambda configura l'origine eventi con la StartingPosition
specificata.
L'ID gruppo di consumer deve essere univoco tra tutte le origini eventi Kafka. Dopo aver creato una mappatura dell'origine eventi Kafka con l'ID gruppo di consumer specificato, non sarà più possibile aggiornare questo valore.
Aggiunta di un trigger Amazon MSK (console)
Segui questi passaggi per aggiungere il cluster Amazon MSK e un argomento Kafka come trigger per la funzione Lambda.
Per aggiungere un trigger Amazon MSK alla funzione Lambda (console)
-
Aprire la pagina Functions (Funzioni)
della console Lambda. -
Scegliere il nome della funzione Lambda.
-
In Panoramica delle funzioni, scegliere Aggiungi trigger.
-
In Trigger configuration (Configurazione trigger), effettua le operazioni seguenti:
-
Seleziona il tipo di trigger MSK.
-
Per MSK cluster (Cluster MSK) seleziona il cluster.
-
Per Batch Size (Dimensione batch), immettere il numero massimo di messaggi da recuperare in un singolo batch.
-
Per Batch window (Finestra batch), immetti il tempo massimo in secondi per la raccolta dei registri da parte di Lambda prima di richiamare la funzione.
-
Per Topic name (Nome argomento) immetti un nome per l'argomento Kafka.
-
(Facoltativo) Per Consumer group ID (ID gruppo di consumer), inserisci l'ID di un gruppo di consumer Kafka a cui aderire.
-
(Facoltativo) Per Posizione di inizio, scegli Più recente per iniziare a leggere il flusso dal record più recente, Orizzonte di taglio per iniziare dal primo record disponibile o In corrispondenza del timestamp per specificare un timestamp da cui iniziare la lettura.
-
(Facoltativo) Per Authentication (Autenticazione), scegli la chiave segreta per l'autenticazione con i broker nel cluster MSK.
-
Per creare il trigger in uno stato disabilitato per il test (scelta consigliata), deselezionare Enable trigger (Abilita trigger). Oppure, per attivare immediatamente il trigger, selezionareAbilita trigger.
-
-
Per creare il trigger, scegli Add (Aggiungi).
Aggiunta di un trigger Amazon MSK (AWS CLI)
Utilizza i seguenti comandi AWS CLI di esempio per creare e visualizzare un trigger Amazon MSK per la funzione Lambda.
Creazione di un trigger utilizzando AWS CLI
Esempio — Creazione di uno strumento di mappatura dell'origine degli eventi per cluster che utilizzano l'autenticazione IAM
Nell'esempio seguente viene utilizzato il comando create-event-source-mappingmy-kafka-function
a un argomento Kafka denominato AWSKafkaTopic
. La posizione iniziale dell'argomento è impostata su LATEST
. Quando il cluster utilizza l'autenticazione basata sui ruoli IAM, non è necessario un oggetto SourceAccessConfiguration. Esempio:
aws lambda create-event-source-mapping \ --event-source-arn
arn:aws:kafka:us-east-1:111122223333:cluster/my-cluster/fc2f5bdf-fd1b-45ad-85dd-15b4a5a6247e-2
\ --topicsAWSKafkaTopic
\ --starting-positionLATEST
\ --function-namemy-kafka-function
Esempio — Creazione di uno strumento di mappatura dell'origine degli eventi per cluster che utilizzano l'autenticazione SASL/SCRAM
Se il cluster utilizza l'autenticazione SASL/SCRAM, è necessario includere un oggetto SourceAccessConfiguration che specifica SASL_SCRAM_512_AUTH
e l'ARN di un segreto di Secrets Manager.
aws lambda create-event-source-mapping \ --event-source-arn
arn:aws:kafka:us-east-1:111122223333:cluster/my-cluster/fc2f5bdf-fd1b-45ad-85dd-15b4a5a6247e-2
\ --topicsAWSKafkaTopic
\ --starting-positionLATEST
\ --function-namemy-kafka-function
--source-access-configurations'[{"Type": "SASL_SCRAM_512_AUTH","URI": "arn:aws:secretsmanager:us-east-1:111122223333:secret:my-secret"}]'
Esempio — Creazione di uno strumento di mappatura dell'origine degli eventi per cluster che utilizzano l'autenticazione mTLS
Se il cluster utilizza l'autenticazione mTLS, è necessario includere un oggetto SourceAccessConfiguration che specifica CLIENT_CERTIFICATE_TLS_AUTH
e l'ARN di un segreto di Secrets Manager.
aws lambda create-event-source-mapping \ --event-source-arn
arn:aws:kafka:us-east-1:111122223333:cluster/my-cluster/fc2f5bdf-fd1b-45ad-85dd-15b4a5a6247e-2
\ --topicsAWSKafkaTopic
\ --starting-positionLATEST
\ --function-namemy-kafka-function
--source-access-configurations'[{"Type": "CLIENT_CERTIFICATE_TLS_AUTH","URI": "arn:aws:secretsmanager:us-east-1:111122223333:secret:my-secret"}]'
Per ulteriori informazioni, consultare la documentazione di riferimento dell'API CreateEventSourceMapping.
Visualizzazione dello stato utilizzando AWS CLI
Nell'esempio seguente viene utilizzato il comando get-event-source-mapping
aws lambda get-event-source-mapping \ --uuid
6d9bce8e-836b-442c-8070-74e77903c815
Parametri di configurazione di Amazon MSK
Tutti i tipi di origine eventi Lambda condividono le stesse operazioni API CreateEventSourceMapping e UpdateEventSourceMapping. Tuttavia, solo alcuni dei parametri si applicano ad Amazon MSK.
Parametro | Obbligatorio | Predefinito | Note |
---|---|---|---|
AmazonManagedKafkaEventSourceConfig |
N |
Contiene il campo ConsumerGroupId, che per impostazione predefinita è un valore univoco. |
Può essere impostato solo su Create |
BatchSize |
N |
100 |
Massimo: 10.000. |
DestinationConfig |
N |
N/D |
Acquisizione di batch scartati per un'origine eventi Amazon MSK |
Abilitato |
N |
True |
|
EventSourceArn |
Y |
N/D |
Può essere impostato solo su Create |
FilterCriteria |
N |
N/D |
|
FunctionName |
Y |
N/D |
|
KMSKeyArn |
N |
N/D |
|
MaximumBatchingWindowInSeconds |
N |
500 ms |
|
ProvisionedPollersConfig |
N |
|
|
SourceAccessConfigurations |
N |
Nessuna credenziale |
Credenziali di autenticazione SASL/SCRAM o CLIENT_CERTIFICATE_TLS_AUTH (MutualTLS) per la tua origine eventi |
StartingPosition |
Y |
N/D |
AT_TIMESTAMP, TRIM_HORIZON o LATEST Può essere impostato solo su Create |
StartingPositionTimestamp |
N |
N/D |
Richiesto solo se StartingPosition è impostato su AT_TIMESTAMP |
Tag |
N |
N/D |
Utilizzo di tag negli strumenti di mappatura dell'origine degli eventi |
Argomenti |
Y |
N/D |
Nome argomento Kafka Può essere impostato solo su Create |
Creazione di strumenti di mappatura dell'origine degli eventi multi-account
È possibile utilizzare la connettività privata multi-VPC per connettere una funzione Lambda a un cluster MSK assegnato in un altro Account AWS. La connettività multi-VPC utilizza AWS PrivateLink, che mantiene tutto il traffico all'interno della rete AWS.
Nota
Non è possibile creare strumenti di mappatura dell'origine degli eventi multi-account per i cluster MSK serverless.
Per creare uno strumento di mappatura dell'origine degli eventi multi-account, è necessario innanzitutto configurare la connettività multi-VPC per il cluster MSK. Quando crei lo strumento di mappatura dell'origine degli eventi, utilizza l'ARN della connessione VPC gestita anziché l'ARN del cluster, come illustrato negli esempi seguenti. L'operazione CreateEventSourceMapping varia anche a seconda del tipo di autenticazione utilizzato dal cluster MSK.
Esempio — Creazione di uno strumento di mappatura dell'origine degli eventi multi-account per cluster che utilizzano l'autenticazione IAM
Quando il cluster utilizza l'autenticazione basata sui ruoli IAM, non è necessario un oggetto SourceAccessConfiguration. Esempio:
aws lambda create-event-source-mapping \ --event-source-arn arn:aws:kafka:
us-east-1:111122223333
:vpc-connection/444455556666/my-cluster-name/51jn98b4-0a61-46cc-b0a6-61g9a3d797d5-7
\ --topics AWSKafkaTopic \ --starting-position LATEST \ --function-name my-kafka-function
Esempio — Creazione di uno strumento di mappatura dell'origine degli eventi multi-account per cluster che utilizzano l'autenticazione SASL/SCRAM
Se il cluster utilizza l'autenticazione SASL/SCRAM, è necessario includere un oggetto SourceAccessConfiguration che specifica SASL_SCRAM_512_AUTH
e l'ARN di un segreto di Secrets Manager.
Esistono due modi per utilizzare i segreti per lo strumento di mappatura dell'origine degli eventi Amazon MSK multi-account con l'autenticazione SASL/SCRAM:
-
Crea un segreto nell'account della funzione Lambda e sincronizzalo con il segreto del cluster. Crea una rotazione per mantenere sincronizzati i due segreti. Questa opzione consente di controllare il segreto dall'account della funzione.
-
Utilizza il segreto associato al cluster MSK. Questo segreto deve consentire l'accesso multi-account all'account della funzione Lambda. Per ulteriori informazioni, consulta la pagina Permissions to AWS Secrets Manager secrets for users in a different account.
aws lambda create-event-source-mapping \ --event-source-arn arn:aws:kafka:
us-east-1:111122223333
:vpc-connection/444455556666/my-cluster-name/51jn98b4-0a61-46cc-b0a6-61g9a3d797d5-7
\ --topics AWSKafkaTopic \ --starting-position LATEST \ --function-name my-kafka-function \ --source-access-configurations'[{"Type": "SASL_SCRAM_512_AUTH","URI": "arn:aws:secretsmanager:us-east-1:444455556666:secret:my-secret"}]'
Esempio — Creazione di uno strumento di mappatura dell'origine degli eventi multi-account per cluster che utilizzano l'autenticazione mTLS
Se il cluster utilizza l'autenticazione mTLS, è necessario includere un oggetto SourceAccessConfiguration che specifica CLIENT_CERTIFICATE_TLS_AUTH
e l'ARN di un segreto di Secrets Manager. Il segreto può essere archiviato nell'account del cluster o nell'account della funzione Lambda.
aws lambda create-event-source-mapping \ --event-source-arn arn:aws:kafka:
us-east-1:111122223333
:vpc-connection/444455556666/my-cluster-name/51jn98b4-0a61-46cc-b0a6-61g9a3d797d5-7
\ --topics AWSKafkaTopic \ --starting-position LATEST \ --function-name my-kafka-function \ --source-access-configurations'[{"Type": "CLIENT_CERTIFICATE_TLS_AUTH","URI": "arn:aws:secretsmanager:us-east-1:444455556666:secret:my-secret"}]'
Utilizzo di un cluster Amazon MSK come origine eventi
Quando aggiungi il cluster Apache Kafka o Amazon MSK come trigger per la funzione Lambda, il cluster viene utilizzato come origine eventi.
Lambda legge i dati dell'evento dagli argomenti Kafka specificati come Topics
in una richiesta CreateEventSourceMapping, in base al StartingPosition
specificato. Dopo che l'elaborazione è avvenuta con successo, l'argomento Kafka viene salvato nel cluster Kafka.
Se specifichi StartingPosition
come LATEST
, Lambda inizia a leggere a partire dall'ultimo messaggio in ogni partizione appartenente all'argomento. Poiché ci può essere un certo ritardo dopo la configurazione del trigger prima che Lambda inizi a leggere i messaggi, Lambda non legge alcun messaggio prodotto durante questo periodo.
Lambda legge i messaggi in sequenza per ogni partizione dell'argomento Kafka. Un singolo payload Lambda può contenere messaggi provenienti da più partizioni. Quando sono disponibili più registri, Lambda continua a elaborare i registri in batch, in base al valore BatchSize
specificato in una richiesta CreateEventSourceMapping fino a quando la funzione non raggiunge l'argomento.
Dopo che Lambda ha elaborato ogni batch, esegue il commit degli offset dei messaggi in quel batch. Se la funzione restituisce un errore per uno qualunque dei messaggi in un batch, Lambda ritenta l'intero batch di messaggi fino a quando l'elaborazione riesce o i messaggi scadono. È possibile inviare i record per i quali tutti i nuovi tentativi falliscono a una destinazione in errore per un'elaborazione successiva.
Nota
Sebbene le funzioni Lambda abbiano di solito un timeout massimo di 15 minuti, le mappature dell'origine degli eventi per Amazon MSK, Apache Kafka autogestito, Amazon DocumentDB e Amazon MQ per ActiveMQ e RabbitMQ supportano soltanto funzioni con timeout massimi di 14 minuti. Questa limitazione garantisce che lo strumento di mappatura dell'origine degli eventi possa gestire correttamente errori di funzioni e nuovi tentativi.
Posizioni di partenza di polling e flussi
Tieni presente che il polling dei flussi durante la creazione e gli aggiornamenti dello strumento di mappatura dell'origine degli eventi alla fine è coerente.
-
Durante la creazione dello strumento di mappatura dell'origine degli eventi, potrebbero essere necessari alcuni minuti per l'avvio degli eventi di polling dal flusso.
-
Durante gli aggiornamenti dello strumento di mappatura dell'origine degli eventi, potrebbero essere necessari alcuni minuti per l'avvio degli eventi di polling dal flusso.
Questo comportamento implica che se specifichi LATEST
come posizione iniziale del flusso, lo strumento di mappatura dell'origine degli eventi potrebbe perdere eventi durante la creazione o gli aggiornamenti. Per non perdere alcun evento, specifica la posizione iniziale del flusso come TRIM_HORIZON
o AT_TIMESTAMP
.
Parametri di Amazon CloudWatch
Lambda emette il parametro OffsetLag
mentre la funzione elabora i registri. Il valore di questo parametro è la differenza di offset tra l'ultimo registro scritto nell'argomento dell'origine eventi Kafka e l'ultimo registro elaborato da Lambda. Puoi utilizzare OffsetLag
per stimare la latenza tra il momento in cui un registro viene aggiunto e il momento in cui il gruppo di consumer lo elabora.
Una tendenza in aumento in OffsetLag
può indicare problemi con i sondaggi nel gruppo di consumer della funzione. Per ulteriori informazioni, consulta Utilizzo dei parametri di CloudWatch Logs con Lambda.
Comportamento di scalabilità del throughput dei messaggi per gli strumenti di mappatura dell'origine degli eventi Amazon MSK
Puoi scegliere tra due modalità di comportamento di dimensionamento del throughput dei messaggi per lo strumento di mappatura dell'origine degli eventi Amazon MSK:
Modalità predefinita (on demand)
Quando si crea inizialmente un'origine eventi Amazon MSK, Lambda assegna un numero predefinito di poller di eventi per elaborare tutte le partizioni dell'argomento Kafka. Lambda aumenta o diminuisce automaticamente il numero di poller di eventi in base al carico di messaggi.
In un intervallo di un minuto, Lambda valuta il ritardo dell'offset di tutte le partizioni dell'argomento. Se il ritardo dell'offset è troppo alto, lo shard sta ricevendo messaggi più velocemente di quanto Lambda possa elaborarli. Se necessario, Lambda aggiunge o rimuove i poller di eventi dall'argomento. Questo processo di dimensionamento automatico di aggiunta o rimozione dei poller degli eventi avviene entro tre minuti dalla valutazione.
Se la funzione Lambda di destinazione è limitata, Lambda riduce il numero di poller di eventi. Questa operazione riduce il carico di lavoro sulla funzione riducendo il numero di messaggi che i poller di eventi possono recuperare e inviare alla funzione.
Configurazione della modalità provisioning
Per i carichi di lavoro in cui è necessario ottimizzare il throughput dello strumento di mappatura dell'origine degli eventi, è possibile utilizzare la modalità provisioning. In modalità provisioning, vengono definiti i limiti minimi e massimi per la quantità di poller di eventi assegnati. Questi poller di eventi con provisioning sono dedicati allo strumento di mappatura dell'origine degli eventi e possono gestire picchi di messaggi imprevisti tramite una scalabilità automatica reattiva. Ti consigliamo di utilizzare la modalità provisioning per i carichi di lavoro Kafka che hanno requisiti di prestazioni rigorosi.
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
Nota
Quando si utilizza la modalità provisioning, non è necessario creare endpoint AWS PrivateLink VPC o concedere le autorizzazioni associate come parte della configurazione di rete.
In modalità provisioning, l'intervallo di valori accettati per il numero minimo di poller di event (MinimumPollers
) è compreso tra 1 e 200, inclusi. L'intervallo di valori accettati per il numero massimo di poller di eventi (MaximumPollers
) è compreso tra 1 e 2.000, inclusi. MaximumPollers
deve essere maggiore o uguale a MinimumPollers
. Inoltre, per mantenere l'elaborazione ordinata all'interno delle partizioni, Lambda limita a MaximumPollers
il numero di partizioni indicato nell'argomento.
Per ulteriori informazioni sulla scelta dei valori minimi e massimi appropriati di poller di eventi, consulta Best practice e considerazioni sull'utilizzo della modalità provisioning.
È possibile configurare la modalità fornita per lo strumento di mappatura dell'origine degli eventi Amazon MSK utilizzando la console o l'API Lambda.
Per configurare la modalità provisioning per uno strumento di mappatura dell'origine degli eventi Amazon MSK esistente (console)
-
Aprire la pagina Functions (Funzioni)
della console Lambda. -
Scegli la funzione con lo strumento di mappatura dell'origine degli eventi Amazon MSK per cui desideri configurare la modalità provisioning.
-
Scegli la scheda Configurazione, quindi scegli Trigger.
-
Scegli lo strumento di mappatura dell'origine degli eventi Amazon MSK per cui desideri configurare la modalità provisioning, quindi scegli Modifica.
-
In Configurazione dello strumento di mappatura dell'origine degli eventi, scegli Configura la modalità provisioning.
-
Per Numero minimo di poller di eventi, inserisci un valore compreso tra 1 e 200. Se non si specifica un valore, Lambda assegna il valore predefinito 1.
-
Per Numero massimo di poller di eventi, inserisci un valore compreso tra 1 e 2.000. Questo valore deve essere maggiore o uguale al valore specificato in Numero minimo di poller di eventi. Se non si specifica un valore, Lambda assegna il valore predefinito 200.
-
-
Seleziona Salva.
È possibile configurare la modalità provisioning a livello di codice utilizzando l'oggetto ProvisionedPollerConfig in EventSourceMappingConfiguration. Ad esempio, il seguente comando UpdateEventSourceMapping della CLI configura un valore di MinimumPollers
pari a 5 e un valore di MaximumPollers
pari a 100.
aws lambda update-event-source-mapping \ --uuid a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 \ --provisioned-poller-config '{"MinimumPollers": 5, "MaximumPollers": 100}'
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.
Per disabilitare la modalità provisioning e tornare alla modalità predefinita (on demand), puoi utilizzare il seguente comando UpdateEventSourceMapping della CLI:
aws lambda update-event-source-mapping \ --uuid a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 \ --provisioned-poller-config '{}'
Best practice e considerazioni sull'utilizzo della modalità provisioning
La configurazione ottimale dei poller di eventi minimi e massimi per lo strumento di mappatura dell'origine degli eventi dipende dai requisiti delle prestazioni dell'applicazione. Ti consigliamo di iniziare con i poller di eventi minimi di default per definire il profilo delle prestazioni. Modifica la configurazione in base ai modelli di elaborazione dei messaggi osservati e al profilo delle prestazioni desiderato.
Per carichi di lavoro con picchi di traffico e requisiti delle prestazioni rigorosi, aumenta il numero minimo di poller di eventi per gestire picchi improvvisi di messaggi. Per determinare il numero minimo di poller di eventi richiesti, considera i messaggi al secondo del carico di lavoro e la dimensione media del payload e utilizza la capacità effettiva di trasmissione di un singolo poller di eventi (fino a 5 Mbps) come riferimento.
Per mantenere l'elaborazione ordinata all'interno di uno shard, Lambda limita il numero massimo di poller di eventi al numero di shard nell'argomento. Inoltre, il numero massimo di poller di eventi a cui lo strumento di mappatura dell'origine degli eventi può scalare dipende dalle impostazioni di simultaneità della funzione.
Quando attivi la modalità provisioning, aggiorna le impostazioni di rete per rimuovere gli endpoint VPC AWS PrivateLink e le autorizzazioni associate.