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 dei MSK messaggi Amazon con Lambda
Argomenti
- Aggiungere Amazon MSK come fonte di eventi
- Parametri MSK di configurazione Amazon
- Creazione di strumenti di mappatura dell'origine degli eventi multi-account
- Utilizzo di un MSK cluster Amazon come origine di eventi
- Posizioni di partenza di polling e flussi
- CloudWatch Metriche Amazon
- Scalabilità automatica della fonte di MSK eventi Amazon
Aggiungere Amazon MSK come fonte di eventi
Per creare una mappatura delle sorgenti degli eventi, aggiungi Amazon MSK come trigger della funzione Lambda utilizzando la console Lambda, AWS SDK
Questa sezione descrive come creare una mappatura dell'origine eventi utilizzando la console Lambda e AWS CLI.
Prerequisiti
-
Un MSK cluster Amazon e un argomento su Kafka. Per ulteriori informazioni, consulta Getting Started Using Amazon MSK nella Amazon Managed Streaming for Apache Kafka Developer Guide.
-
Un ruolo di esecuzione con autorizzazione ad accedere alle AWS risorse utilizzate dal clusterMSK.
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.
Aggiungere un MSK trigger Amazon (console)
Segui questi passaggi per aggiungere il tuo MSK cluster Amazon e un argomento di Kafka come trigger per la tua funzione Lambda.
Per aggiungere un MSK trigger Amazon alla tua funzione Lambda (console)
-
Aprire la pagina Funzioni
della console Lambda. -
Scegliere il nome della funzione Lambda.
-
In Panoramica delle funzioni, scegliere Aggiungi trigger.
-
In Configurazione trigger, effettua le operazioni seguenti:
-
Scegli il tipo di trigger MSK.
-
Per MSKcluster, seleziona il tuo 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 l'autenticazione, scegli la chiave segreta per l'autenticazione con i broker del cluster. MSK
-
Per creare il trigger in uno stato disabilitato per il test (scelta consigliata), deselezionare Abilita trigger. Oppure, per attivare immediatamente il trigger, selezionareAbilita trigger.
-
-
Per creare il trigger, scegli Aggiungi.
Aggiungere un MSK trigger Amazon (AWS CLI)
Usa i seguenti AWS CLI comandi di esempio per creare e visualizzare un MSK trigger Amazon per la tua funzione Lambda.
Creazione di un trigger utilizzando il AWS CLI
Esempio — Crea una mappatura dell'origine degli eventi per il cluster che utilizza l'autenticazione IAM
L'esempio seguente utilizza il create-event-source-mapping
AWS CLI comando per mappare una funzione Lambda denominata my-kafka-function
a un argomento di Kafka denominato. AWSKafkaTopic
La posizione iniziale dell'argomento è impostata su LATEST
. Quando il cluster utilizza l'autenticazione IAM basata sui ruoli, 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 — Crea una mappatura delle sorgenti degli eventi per il cluster che utilizza/authentication SASL SCRAM
Se il cluster utilizza SCRAMl'autenticazioneSASL/, è necessario includere un SourceAccessConfigurationoggetto che specifica SASL_SCRAM_512_AUTH
e un segreto ARN 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 — Crea una mappatura delle sorgenti degli eventi per un cluster che utilizza l'autenticazione m TLS
Se il cluster utilizza TLSl'autenticazione m, è necessario includere un SourceAccessConfigurationoggetto che specifica CLIENT_CERTIFICATE_TLS_AUTH
e un segreto ARN 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 CreateEventSourceMappingAPIdi riferimento.
Visualizzazione dello stato utilizzando il AWS CLI
L'esempio seguente utilizza il get-event-source-mapping
AWS CLI comando per descrivere lo stato della mappatura dell'origine degli eventi creata.
aws lambda get-event-source-mapping \ --uuid
6d9bce8e-836b-442c-8070-74e77903c815
Parametri MSK di configurazione Amazon
Tutti i tipi di sorgenti di eventi Lambda condividono CreateEventSourceMappingle UpdateEventSourceMappingAPIstesse operazioni. Tuttavia, solo alcuni parametri si applicano ad AmazonMSK.
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 |
Abilitato |
N |
Abilitato |
nessuno |
EventSourceArn |
Y |
N/D |
Può essere impostato solo su Create |
FunctionName |
Y |
N/D |
nessuno |
FilterCriteria |
N |
N/D |
|
MaximumBatchingWindowInSeconds |
N |
500 ms |
|
SourceAccessConfigurations |
N |
Nessuna credenziale |
SASL/SCRAMo CLIENT _ _ CERTIFICATE TLS _ AUTH (reciprocheTLS) credenziali di autenticazione per l'origine dell'evento |
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 |
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à VPCmulti-privata per connettere una funzione Lambda a un cluster MSK fornito in un altro. Account AWS Utilizza la VPC connettività multipla AWS PrivateLink, che mantiene tutto il traffico all'interno della rete. AWS
Nota
Non è possibile creare mappature delle sorgenti degli eventi tra account per cluster serverless. MSK
Per creare una mappatura delle sorgenti degli eventi tra account, devi prima configurare la connettività multipla per il cluster. VPC MSK Quando create la mappatura delle sorgenti degli eventi, utilizzate la VPC connessione gestita ARN anziché il clusterARN, come illustrato negli esempi seguenti. L'CreateEventSourceMappingoperazione varia anche a seconda del tipo di autenticazione utilizzato dal MSK cluster.
Esempio — Crea una mappatura della sorgente degli eventi tra account per il cluster che utilizza l'autenticazione IAM
Quando il cluster utilizza l'autenticazione IAM basata sui ruoli, 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 — Crea una mappatura delle sorgenti degli eventi tra account per il cluster che utilizza/authentication SASL SCRAM
Se il cluster utilizza SCRAMl'autenticazioneSASL/, è necessario includere un SourceAccessConfigurationoggetto che specifica SASL_SCRAM_512_AUTH
e un segreto ARN di Secrets Manager.
Esistono due modi per utilizzare i segreti per le mappature delle sorgenti di MSK eventi Amazon tra più account con SASL l'autenticazione/: 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.
-
Usa 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 — Crea una mappatura delle sorgenti degli eventi tra account per un cluster che utilizza l'autenticazione m TLS
Se il cluster utilizza TLSl'autenticazione m, è necessario includere un SourceAccessConfigurationoggetto che specifica CLIENT_CERTIFICATE_TLS_AUTH
e un segreto ARN 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 MSK cluster Amazon come origine di 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 tematica di 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 che non superano tutti i tentativi di riprova a una destinazione in caso di errore per un'elaborazione successiva.
Nota
Sebbene le funzioni Lambda abbiano in genere un limite di timeout massimo di 15 minuti, le mappature delle sorgenti degli eventi per Amazon, Apache Kafka, MSK Amazon DocumentDB e Amazon MQ per ActiveMQ e RabbitMQ supportano solo funzioni con limiti di 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 Visualizza le metriche per le funzioni Lambda.
Scalabilità automatica della fonte di MSK eventi Amazon
Quando crei inizialmente un'origine di MSK eventi Amazon, Lambda assegna un consumatore all'elaborazione di tutte le partizioni nell'argomento Kafka. Ogni consumatore ha più processori in esecuzione in parallelo per gestire carichi di lavoro più elevati. Inoltre, Lambda aumenta o diminuisce automaticamente il numero di consumatori in base al carico di lavoro. Per preservare l'ordinamento dei messaggi in ogni partizione, il numero massimo di consumatori è un consumatore per ogni partizione dell'argomento.
Ogni minuto, Lambda valuta il ritardo dell'offset del consumatore di tutte le partizioni dell'argomento. Se il ritardo è troppo alto, la partizione sta ricevendo messaggi più velocemente di quanto Lambda possa elaborarli. Se necessario, Lambda aggiunge o rimuove i consumer dall'argomento. Il processo di dimensionamento di aggiunta o rimozione dei consumatori avviene entro tre minuti dalla valutazione.
Se la funzione Lambda di destinazione è limitata, Lambda riduce il numero di consumer. Questa operazione riduce il carico di lavoro sulla funzione riducendo il numero di messaggi che i consumer possono recuperare e inviare alla funzione.
Per monitorare il throughput dell'argomento Kafka, visualizza il parametro del ritardo dell'offset che Lambda emette mentre la funzione elabora i registri.
Per controllare quante chiamate di funzioni si verificano in parallelo, è inoltre possibile monitorare i parametri di concorrenza per la funzione.