Usar o Lambda com o Apache Kafka autogerenciado - AWS Lambda

Usar o Lambda com o Apache Kafka autogerenciado

nota

Se você deseja enviar dados para um destino que não seja uma função do Lambda ou enriquecer os dados antes de enviá-los, consulte Amazon EventBridge Pipes (Pipes do Amazon EventBridge).

O Lambda suportaApache Kafkacomo umOrigem do evento. O Apache Kafka é uma plataforma de streaming de eventos de código aberto que suporta cargas de trabalho, como pipelines de dados e análises de streaming.

Você pode usar o serviço do Kafka gerenciado pela AWS Amazon Managed Streaming for Apache Kafka (Amazon MSK) ou um cluster do Kafka autogerenciado. Para obter detalhes sobre o uso do Lambda com o Amazon MSK, consulte Usar o Lambda com o Amazon MSK.

Este tópico descreve como usar o Lambda com um cluster Kafka autogerenciado. Na terminologia da AWS, um cluster autogerenciado inclui clusters do Kafka não hospedados pela AWS. Por exemplo, você pode hospedar seu cluster Kafka com um provedor de nuvem, como Confluent Cloud.

O Apache Kafka como uma fonte de eventos opera de forma semelhante ao uso do Amazon Simple Queue Service (Amazon SQS) ou do Amazon Kinesis. O Lambda pesquisa internamente por novas mensagens da origem do evento e, em seguida, chama de forma síncrona a função do Lambda de destino. O Lambda lê as mensagens em lotes e fornece estas para a sua função como uma carga de eventos. O tamanho máximo do lote é configurável (o padrão é 100 mensagens). Para ter mais informações, consulte Comportamento de lotes.

Para otimizar o throughput do mapeamento da origem de eventos do Apache Kafka autogerenciado, configure o modo provisionado. No modo provisionado, você pode definir o número mínimo e máximo de pesquisadores de eventos alocados para o mapeamento da origem de eventos. Isso pode melhorar a capacidade do mapeamento da origem de eventos para lidar com picos inesperados de mensagens. Para obter mais informações, consulte modo provisionado.

Atenção

Os mapeamentos da origem do evento do Lambda processam cada evento ao menos uma vez, podendo haver o processamento duplicado de registros. Para evitar possíveis problemas relacionados a eventos duplicados, é altamente recomendável tornar o código da função idempotente. Para saber mais, consulte Como tornar minha função do Lambda idempotente no Centro de Conhecimentos da AWS.

Para fontes de eventos baseadas em Kafka, o Lambda oferece suporte a parâmetros de controle de processamento, como janelas de lotes e tamanho do lote. Para ter mais informações, consulte Comportamento de lotes.

Para obter um exemplo de como usar o Kafka autogerenciado como uma fonte de eventos, consulteUsar o Apache Kafka auto-hospedado como uma fonte de eventos para o AWS Lambda no blog AWSCompute.

Evento de exemplo

O Lambda envia o lote de mensagens no parâmetro de evento quando ele invoca sua função do Lambda. O payload do evento contém uma matriz de mensagens. Cada item da matriz contém detalhes do tópico do Kafka e do identificador de partição do Kafka, juntamente com um carimbo de data/hora e uma mensagem codificada em base64.

{ "eventSource": "SelfManagedKafka", "bootstrapServers":"b-2.demo-cluster-1.a1bcde.c1.kafka.us-east-1.amazonaws.com:9092,b-1.demo-cluster-1.a1bcde.c1.kafka.us-east-1.amazonaws.com:9092", "records":{ "mytopic-0":[ { "topic":"mytopic", "partition":0, "offset":15, "timestamp":1545084650987, "timestampType":"CREATE_TIME", "key":"abcDEFghiJKLmnoPQRstuVWXyz1234==", "value":"SGVsbG8sIHRoaXMgaXMgYSB0ZXN0Lg==", "headers":[ { "headerKey":[ 104, 101, 97, 100, 101, 114, 86, 97, 108, 117, 101 ] } ] } ] } }