Uso de Lambda con Apache Kafka autoadministrado - AWS Lambda

Uso de Lambda con Apache Kafka autoadministrado

nota

Si desea enviar datos a un destino que no sea una función de Lambda o enriquecer los datos antes de enviarlos, consulte Amazon EventBridge Pipes (Canalizaciones de Amazon EventBridge).

Lambda admite Apache Kafka como un origen de eventos. Apache Kafka es una plataforma de secuencia de eventos de código abierto que admite cargas de trabajo como canalizaciones de datos y análisis de streaming.

Puede utilizar el servicio Kafka administrado por AWS Amazon Managed Streaming for Apache Kafka (Amazon MSK) o un clúster de Kafka autoadministrado. Para conocer detalles sobre el uso de Lambda con Amazon MSK, consulte Uso de Lambda con Amazon MSK.

En este tema se describe cómo utilizar Lambda con un clúster de Kafka autoadministrado. En la terminología de AWS, un clúster autoadministrado incluye clústeres Kafka alojados que no son de AWS. Por ejemplo, puede alojar su clúster de Kafka con un proveedor de servicios en la nube, como Confluent Cloud.

Apache Kafka como origen de eventos funciona de manera similar a utilizar Amazon Simple Queue Service (Amazon SQS) o Amazon Kinesis. Lambda sondea internamente nuevos mensajes del origen de eventos y luego invoca sincrónicamente la función de Lambda objetivo. Lambda lee los mensajes en lotes y los proporciona a su función como carga de eventos. El tamaño máximo del lote se puede configurar (el valor predeterminado son 100 mensajes). Para obtener más información, consulte Comportamiento de procesamiento por lotes.

Para optimizar el rendimiento de la asignación de orígenes de eventos de Apache Kafka autoadministrado, configure el modo aprovisionado. En el modo aprovisionado, puede definir el número mínimo y máximo de sondeos de eventos asignados a su asignación de orígenes de eventos. Esto puede mejorar la capacidad de la asignación de orígenes de eventos para manejar picos de mensajes inesperados. Para obtener más información, consulte Modo aprovisionado.

aviso

Las asignaciones de orígenes de eventos de Lambda procesan cada evento al menos una vez, y puede producirse un procesamiento duplicado de registros. Para evitar posibles problemas relacionados con la duplicación de eventos, le recomendamos encarecidamente que haga que el código de la función sea idempotente. Para obtener más información, consulte ¿Cómo puedo hacer que mi función de Lambda sea idempotente? en el Centro de conocimientos de AWS.

Para los orígenes de eventos basados en Kafka, Lambda admite parámetros de control de procesamiento, como los plazos de procesamiento por lotes y el tamaño del lote. Para obtener más información, consulte Comportamiento de procesamiento por lotes.

Para ver un ejemplo de cómo utilizar Kafka autoadministrado como origen de eventos, consulte Uso de Apache Kafka autoalojado como origen de eventos para AWS Lambda en el blog de informática de AWS.

Evento de ejemplo

Lambda envía el lote de mensajes en el parámetro de evento cuando invoca su función de Lambda. La carga de eventos contiene una matriz de mensajes. Cada elemento de la matriz contiene detalles del tema Kafka y el identificador de partición Kafka, junto con una marca de tiempo y un mensaje codificado en 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 ] } ] } ] } }