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
Argomenti
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 SDK
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)
-
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:
-
Scegliere il tipo di trigger Apache Kafka.
-
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.
-
Per Nome argomento, inserisci il nome dell'argomento Kafka utilizzato per memorizzare i record nel cluster.
-
(Facoltativo) In Dimensioni batch, inserisci il numero massimo di record da ricevere in un singolo batch.
-
Per Finestra batch, immetti il tempo massimo in secondi per la raccolta dei registri da parte di Lambda prima di richiamare la funzione.
-
(Facoltativo) Per 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 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.
-
(Facoltativo) Per Autenticazione, scegli Aggiungi e quindi esegui le seguenti operazioni:
-
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 _.
-
-
Per TLS l'autenticazioneSASL/SCRAMo m, scegli la chiave segreta di Secrets Manager che contiene le credenziali per il tuo cluster Kafka.
-
-
(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
-
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.
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-mappingmy-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-mappingmy-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 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 |
|
MaximumBatchingWindowInSeconds |
N |
500 ms |
|
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
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.