Elaborazione dei MSK messaggi Amazon con Lambda - AWS Lambda

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

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 SDKan o ().AWS Command Line InterfaceAWS CLI Tieni presente che quando aggiungi Amazon MSK come trigger, Lambda presuppone VPC le impostazioni del MSK cluster Amazon, non le impostazioni della funzione Lambda. VPC

Questa sezione descrive come creare una mappatura dell'origine eventi utilizzando la console Lambda e AWS CLI.

Prerequisiti

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)
  1. Aprire la pagina Funzioni della console Lambda.

  2. Scegliere il nome della funzione Lambda.

  3. In Panoramica delle funzioni, scegliere Aggiungi trigger.

  4. In Configurazione trigger, effettua le operazioni seguenti:

    1. Scegli il tipo di trigger MSK.

    2. Per MSKcluster, seleziona il tuo cluster.

    3. Per Batch Size (Dimensione batch), immettere il numero massimo di messaggi da recuperare in un singolo batch.

    4. 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.

    5. Per Topic name (Nome argomento) immetti un nome per l'argomento Kafka.

    6. (Facoltativo) Per Consumer group ID (ID gruppo di consumer), inserisci l'ID di un gruppo di consumer Kafka a cui aderire.

    7. (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.

    8. (Facoltativo) Per l'autenticazione, scegli la chiave segreta per l'autenticazione con i broker del cluster. MSK

    9. Per creare il trigger in uno stato disabilitato per il test (scelta consigliata), deselezionare Abilita trigger. Oppure, per attivare immediatamente il trigger, selezionareAbilita trigger.

  5. 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 \ --topics AWSKafkaTopic \ --starting-position LATEST \ --function-name my-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 \ --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: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 \ --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: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

Controlla quali eventi Lambda invia alla tua funzione

MaximumBatchingWindowInSeconds

N

500 ms

Comportamento di batching

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

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

Quando aggiungi un MSK cluster Apache Kafka o Amazon come trigger per la tua funzione Lambda, il cluster viene utilizzato 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.