Usar o Lambda com o Apache Kafka autogerenciado
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 do Kafka com um provedor de nuvem, como Confluent Cloud
Este capítulo explica como usar um cluster do Apache Kafka autogerenciado como origem do evento para a função do Lambda. O processo geral de integração do Apache Kafka autogerenciado com o Lambda envolve as seguintes etapas:
-
Configuração de cluster e rede: primeiro, configure seu cluster do Apache Kafka autogerenciado com a configuração de rede correta para permitir que o Lambda acesse seu cluster.
-
Configuração do mapeamento da origem do evento: depois, crie o recurso de mapeamento da origem do evento de que o Lambda precisa para se conectar ao cluster Apache Kafka à função com segurança.
-
Configuração da função e das permissões: por fim, certifique-se de que a função esteja configurada corretamente e tenha as permissões exigidas em seu perfil de execução.
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 obter 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
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 obter mais informações, consulte Comportamento de lotes.
Para obter um exemplo de como usar o Kafka autogerenciado como uma fonte de eventos, consulte Usar o Apache Kafka auto-hospedado como uma fonte de eventos para o AWS Lambda
Tópicos
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 ] } ] } ] } }