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à.
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 autorizzazione ad accedere alle AWS risorse 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)
Usa i seguenti AWS CLI comandi di esempio per creare e visualizzare un trigger Amazon MSK per la tua funzione Lambda.
Creazione di un trigger utilizzando il AWS CLI
Esempio — Creazione di uno strumento di mappatura dell'origine degli eventi per cluster che utilizzano l'autenticazione IAM
L'esempio seguente utilizza il create-event-source-mappingmy-kafka-function
a un argomento di 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 SourceAccessConfigurationoggetto che specifica e un ARN segreto di SASL_SCRAM_512_AUTH
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 SourceAccessConfigurationoggetto che specifica CLIENT_CERTIFICATE_TLS_AUTH
e un ARN 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, consulta la documentazione di riferimento dell'CreateEventSourceMappingAPI.
Visualizzazione dello stato utilizzando il AWS CLI
L'esempio seguente utilizza il 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 sorgenti di eventi Lambda condividono le stesse operazioni CreateEventSourceMappinge quelle dell'UpdateEventSourceMappingAPI. Tuttavia, solo alcuni dei parametri si applicano ad Amazon MSK.
Parametro | Obbligatorio | Predefinito | Note |
---|---|---|---|
AmazonManagedKafkaEventSourceConfig |
N |
Contiene il ConsumerGroupId campo, 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 |
Obbligatorio 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. Utilizza la connettività multi-VPC AWS PrivateLink, che mantiene tutto il traffico all'interno della AWS rete.
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'CreateEventSourceMappingoperazione 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 SourceAccessConfigurationoggetto che specifica e un ARN segreto di SASL_SCRAM_512_AUTH
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 Autorizzazioni ai AWS Secrets Manager segreti per gli utenti di un account diverso.
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 SourceAccessConfigurationoggetto che specifica CLIENT_CERTIFICATE_TLS_AUTH
e un ARN 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 degli eventi dagli argomenti di Kafka specificati Topics
in una CreateEventSourceMappingrichiesta, in base a ciò che specifichi. StartingPosition
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ù record, Lambda continua a elaborare i record in batch, in base al BatchSize
valore specificato in una CreateEventSourceMappingrichiesta, finché 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 qualsiasi dei messaggi di un batch, Lambda ritenta l'intero batch di messaggi fino a quando l'elaborazione non 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
Anche se le funzioni Lambda generalmente prevedono un timeout massimo di 15 minuti, gli strumenti di mappatura dell'origine degli eventi per Amazon MSK, Apache Kafka autogestito, Amazon DocumentDB e Amazon MQ per ActiveMQ e RabbitMQ supportano solo 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
.
CloudWatch Metriche Amazon
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 delle CloudWatch metriche 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 un dimensionamento automatico reattivo. Ti consigliamo di utilizzare la modalità provisioning per i carichi di lavoro Kafka che hanno requisiti di prestazioni rigorosi.
In Lambda, un event poller è un'unità di calcolo in grado di gestire fino al 5% del throughput. MBps 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 5 MBps velocità effettiva e 5 invocazioni Lambda simultanee. L'utilizzo della modalità provisioning comporta costi aggiuntivi. Per le stime dei prezzi, consulta Prezzi di AWS Lambda
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 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à di provisioning a livello di codice utilizzando l'oggetto presente in. ProvisionedPollerConfig EventSourceMappingConfiguration Ad esempio, il seguente comando UpdateEventSourceMappingCLI configura un MinimumPollers
valore di 5 e un MaximumPollers
valore di 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 (su richiesta), puoi utilizzare il seguente comando CLI UpdateEventSourceMapping:
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 i poller di eventi minimi richiesti, considera i messaggi al secondo del carico di lavoro e la dimensione media del payload e utilizza la capacità di throughput di un singolo event poller (fino a 5) come riferimento. MBps
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à provisioned, aggiorna le impostazioni di rete per rimuovere gli endpoint AWS PrivateLink VPC e le autorizzazioni associate.