Elaborazione di messaggi Apache Kafka autogestiti 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 di messaggi Apache Kafka autogestiti con Lambda

Aggiunta di un cluster Kafka come origine eventi

Per creare una mappatura dell'origine degli eventi, aggiungi il tuo cluster Kafka come trigger della funzione Lambda utilizzando la console Lambda, an o (). AWS SDKAWS Command Line InterfaceAWS CLI

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

Prerequisiti

  • Un cluster Apache Kafka autogestito. Lambda supporta la versione 0.10.1.0 e successive di Apache Kafka.

  • Un ruolo di esecuzione con autorizzazione ad accedere alle AWS risorse utilizzate dal cluster Kafka autogestito.

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 del gruppo di consumer specificato, non sarà più possibile aggiornare questo valore.

Aggiunta di un cluster Kafka autogestito (console)

Segui questi passaggi per aggiungere il cluster Apache Kafka autogestito e un argomento Kafka come trigger per la funzione Lambda.

Per aggiungere un trigger Apache Kafka alla 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. Scegliere il tipo di trigger Apache Kafka.

    2. Per Server di bootstrap, inserisci l'indirizzo composto dalla coppia host e porta di un broker Kafka nel cluster, quindi scegli Aggiungi. Ripeti la procedura per ogni broker Kafka del cluster.

    3. Per Nome argomento, inserisci il nome dell'argomento Kafka utilizzato per memorizzare i record nel cluster.

    4. (Facoltativo) In Dimensioni batch, inserisci il numero massimo di record da ricevere in un singolo batch.

    5. Per Finestra batch, immetti il tempo massimo in secondi per la raccolta dei registri da parte di Lambda prima di richiamare la funzione.

    6. (Facoltativo) Per 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 VPC, scegli Amazon VPC per il tuo cluster Kafka. Quindi, scegli le VPCsottoreti e i gruppi di sicurezza. VPC

      Questa impostazione è obbligatoria se solo gli utenti all'interno del tuo account VPC accedono ai tuoi broker.

    9. (Facoltativo) Per Autenticazione, scegli Aggiungi e quindi esegui le seguenti operazioni:

      1. Scegli il protocollo di accesso o di autenticazione dei broker Kafka del cluster.

        • Se il tuo broker Kafka utilizza PLAIN l'autenticazioneSASL/, scegli _. BASIC AUTH

        • Se il tuo broker utilizzaSASL/SCRAMauthentication, scegli uno dei protocolli SASL_ SCRAM.

        • Se stai configurando la mia TLS autenticazione, scegli il AUTH protocollo CLIENT_ _ CERTIFICATE _ TLS _.

      2. Per TLS l'autenticazioneSASL/SCRAMo m, scegli la chiave segreta di Secrets Manager che contiene le credenziali per il tuo cluster Kafka.

    10. (Facoltativo) Per la crittografia, scegliete il segreto Secrets Manager contenente il certificato CA principale utilizzato dai broker Kafka per la TLS crittografia, se i broker Kafka utilizzano certificati firmati da una CA privata.

      Questa impostazione si applica alla TLS crittografia perSASL/SCRAMoSASL/PLAINe all'autenticazione m. TLS

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

Aggiunta di un cluster Kafka autogestito (AWS CLI)

Usa i seguenti AWS CLI comandi di esempio per creare e visualizzare un trigger Apache Kafka autogestito per la tua funzione Lambda.

Utilizzo SASL di/SCRAM

Se gli utenti Kafka accedono ai tuoi broker Kafka su Internet, specifica il segreto di Secrets Manager che hai creato per/authentication. SASL SCRAM 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

aws lambda create-event-source-mapping \ --topics AWSKafkaTopic \ --source-access-configuration Type=SASL_SCRAM_512_AUTH,URI=arn:aws:secretsmanager:us-east-1:111122223333:secret:MyBrokerSecretName \ --function-name arn:aws:lambda:us-east-1:111122223333:function:my-kafka-function \ --self-managed-event-source '{"Endpoints":{"KAFKA_BOOTSTRAP_SERVERS":["abc3.xyz.com:9092", "abc2.xyz.com:9092"]}}'

Usando un VPC

Se solo gli utenti Kafka compresi nel tuo account VPC accedono ai tuoi broker Kafka, devi specificare le tue VPC sottoreti e il gruppo di sicurezza. VPC 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

aws lambda create-event-source-mapping \ --topics AWSKafkaTopic \ --source-access-configuration '[{"Type": "VPC_SUBNET", "URI": "subnet:subnet-0011001100"}, {"Type": "VPC_SUBNET", "URI": "subnet:subnet-0022002200"}, {"Type": "VPC_SECURITY_GROUP", "URI": "security_group:sg-0123456789"}]' \ --function-name arn:aws:lambda:us-east-1:111122223333:function:my-kafka-function \ --self-managed-event-source '{"Endpoints":{"KAFKA_BOOTSTRAP_SERVERS":["abc3.xyz.com:9092", "abc2.xyz.com:9092"]}}'

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 dh38738e-992b-343a-1077-3478934hjkfd7

Parametri di configurazione Apache Kafka gestiti dal cliente

Tutti i tipi di sorgenti di eventi Lambda condividono CreateEventSourceMappingle UpdateEventSourceMappingAPIstesse operazioni. Tuttavia, solo alcuni dei parametri si applicano ad Apache Kafka.

Parametro Obbligatorio Predefinito Note

BatchSize

N

100

Massimo: 10.000

Abilitato

N

Abilitato

nessuno

FunctionName

Y

N/D

nessuno

FilterCriteria

N

N/D

Controlla quali eventi Lambda invia alla tua funzione

MaximumBatchingWindowInSeconds

N

500 ms

Comportamento di batching

SelfManagedEventSource

Y

N/D

Elenco dei broker Kafka. Può essere impostato solo su Create

SelfManagedKafkaEventSourceConfig

N

Contiene il ConsumerGroupId campo che per impostazione predefinita è un valore univoco.

Può essere impostato solo su Create

SourceAccessConfigurations

N

Nessuna credenziale

VPCinformazioni o credenziali di autenticazione per il cluster

Per SASL _PLAIN, imposta su _ BASIC AUTH

StartingPosition

Y

N/D

AT_ TIMESTAMPHORIZON, TRIM _ 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

Può essere impostato solo su Create

Aggiunta di un cluster Kafka come origine 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 elabora i record da una o più partizioni tematiche di Kafka specificate dall'utente e invia un JSON payload alla funzione. 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.

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

Scalabilità automatica dell'origine eventi Kafka

Quando si crea inizialmente un'origine eventi Apache Kafka, Lambda assegna un consumatore per elaborare tutte le partizioni dell'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 è sovraccarica, 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 del proprio argomento Kafka, è possibile visualizzare i parametri dei consumer Apache Kafka, come consumer_lag e consumer_offset. Per controllare quante invocazioni di funzioni si verificano in parallelo, è inoltre possibile monitorare i parametri di concorrenza per la funzione.

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.