Configuración de orígenes de eventos de Amazon MSK para Lambda - AWS Lambda

Configuración de orígenes de eventos de Amazon MSK para Lambda

Para usar un clúster de Amazon MSK como origen de eventos para su función de Lambda, cree una asignación de orígenes de eventos que conecte los dos recursos. Esta página describe cómo crear una asignación de orígenes de eventos para Amazon MSK.

Esta página asume que ya ha configurado correctamente su clúster de MSK y la Amazon Virtual Private Cloud (VPC) en la que reside. Si necesita configurar el clúster o la VPC, consulte Configuración del clúster de Amazon MSK y la red de Amazon VPC para Lambda.

Utilizar un clúster de Amazon MSK como origen de eventos

Cuando agrega su clúster de Apache Kafka o Amazon MSK como desencadenador para su función de Lambda, el clúster se utiliza como origen de eventos.

Lambda lee los datos de eventos de los temas de Kafka que especifique como Topics en una solicitud de CreateEventSourceMapping, en función de la posición inicial que especifique. Después de un procesamiento exitoso, su tema de Kafka se compromete a su clúster de Kafka.

Lambda lee los mensajes secuencialmente para cada partición de tema de Kafka. Una sola carga de Lambda puede contener mensajes de varias particiones. Cuando hay más registros disponibles, Lambda continúa procesando registros en lotes, en función del valor de BatchSize que especifique en una solicitud de CreateEventSourceMapping, hasta que la función se ponga al día con el tema.

Después de que Lambda procese cada lote, confirma los desplazamientos de los mensajes en ese lote. Si su función devuelve un error para cualquiera de los mensajes de un lote, Lambda reintenta todo el lote de mensajes hasta que el procesamiento sea correcto o los mensajes caduquen. Puede enviar los registros con error en todos los reintentos a un destino en caso de error para su posterior procesamiento.

nota

Si bien las funciones de Lambda suelen tener un límite de tiempo de espera máximo de 15 minutos, las asignaciones de orígenes de eventos para Amazon MSK, Apache Kafka autoadministrado, Amazon DocumentDB y Amazon MQ para ActiveMQ y RabbitMQ solo admiten funciones con límites de tiempo de espera máximos de 14 minutos.

Creación de una asignación de orígenes de eventos para un origen de eventos de Amazon MSK

Para crear una asignación de orígenes de eventos, puede usar la consola de Lambda, la AWS Command Line Interface (CLI) o un AWS SDK.

nota

Al crear la asignación de orígenes de eventos, Lambda crea una ENI de hiperplano en la subred privada que contiene su clúster de MSK, lo que permite a Lambda establecer una conexión segura. Esta ENI de hiperplano utiliza la configuración de subredes y grupos de seguridad del clúster de MSK, no la de su función de Lambda.

Los siguientes pasos de la consola agregan un clúster de Amazon MSK como desencadenador para su función de Lambda. Internamente, esto crea un recurso de asignación de orígenes de eventos.

Cómo agregar un desencadenador Amazon MSK a su función de Lambda (consola)
  1. Abra la Página de función en la consola de Lambda.

  2. Elija el nombre de la función de Lambda a la que desea agregar el desencadenador de Amazon MSK.

  3. En Descripción general de la función, elija Agregar desencadenador.

  4. En Configuración del desencadenador, elija MSK.

  5. Para especificar los detalles de su clúster de Kafka, haga lo siguiente:

    1. Para clúster de MSK, seleccione su clúster.

    2. En Nombre del tema, ingrese el nombre del tema de Kafka del que se consumirán los mensajes.

    3. En ID de grupo de consumidores, ingrese el ID de un grupo de consumidores de Kafka al que unirse, si corresponde. Para obtener más información, consulte ID del grupo de consumidores personalizable.

  6. En Autenticación del clúster, lleve a cabo las configuraciones necesarias. Para obtener más información acerca de la autenticación del clúster, consulte Configuración de métodos de autenticación de clústeres.

    • Active Usar autenticación si desea que Lambda lleve a cabo la autenticación con su clúster de MSK al establecer una conexión. Se recomienda la autenticación.

    • Si usa la autenticación, en Método de autenticación, elija el método de autenticación que desee utilizar.

    • Si utiliza autenticación, en Clave de Secrets Manager, elija la clave de Secrets Manager que contiene las credenciales de autenticación necesarias para acceder al clúster.

  7. En Configuración del sondeador de eventos, lleve a cabo las configuraciones necesarias.

    • Elija Activar desencadenador para activar el desencadenador inmediatamente después de crearlo.

    • Elija si desea configurar el modo aprovisionado para su asignación de orígenes de eventos. Para obtener más información, consulte Modos de escalado del sondeo de eventos.

      • Si configura el modo aprovisionado, ingrese un valor para Sondeos de eventos mínimos, un valor para Sondeos de eventos máximos, o ambos valores.

    • En Posición inicial, elija cómo quiere que Lambda comience a leer desde su flujo. Para obtener más información, consulte Posiciones iniciales de flujos y sondeo.

  8. En Procesamiento en lotes, lleve a cabo las configuraciones necesarias. Para obtener más información acerca del procesamiento en lotes, consulte Comportamiento de procesamiento por lotes.

    1. Para el Tamaño del lote, establezca el número máximo de mensajes para recibir un solo lote.

    2. En Periodo del lote, ingrese el número máximo de segundos que Lambda emplea a fin de recopilar registros antes de invocar la función.

  9. En Filtrado, lleve a cabo las configuraciones necesarias. Para obtener más información sobre cómo filtrar, consulte Filtrado de eventos con un origen de eventos de Amazon MSK.

    • En Criterios de filtro, agregue definiciones de criterios de filtro para determinar si se debe procesar o no un evento.

  10. En Gestión de fallos, lleve a cabo las configuraciones necesarias. Para obtener más información sobre la gestión de fallos, consulte Capturar lotes descartados para un origen de eventos de Amazon MSK.

    • En Destino en caso de error, especifique el ARN de su destino en caso de error.

  11. En Etiquetas, ingrese las etiquetas que desee asociar a esta asignación de orígenes de eventos.

  12. Para crear el desencadenador, elija Add (Añadir).

También puede crear la asignación de orígenes de eventos mediante la AWS CLI con el comando create-event-source-mapping. El siguiente ejemplo crea una asignación de orígenes de eventos para asignar la función de Lambda my-msk-function al tema AWSKafkaTopic, empezando por el mensaje LATEST. Este comando también usa el objeto SourceAccessConfiguration para indicar a Lambda que utilice la autenticación SASL/SCRAM al conectarse al clúster.

aws lambda create-event-source-mapping \ --event-source-arn arn:aws:kafka:us-east-1:111122223333:cluster/my-cluster/fc2f5bdf-fd1b-45ad-85dd-15b4a5a6247e-2 \ --topics AWSKafkaTopic \ --starting-position LATEST \ --function-name my-kafka-function --source-access-configurations '[{"Type": "SASL_SCRAM_512_AUTH","URI": "arn:aws:secretsmanager:us-east-1:111122223333:secret:my-secret"}]'

Si el clúster usa la autenticación mTLS, incluya un objeto SourceAccessConfiguration que especifique CLIENT_CERTIFICATE_TLS_AUTH y un ARN de clave de Secrets Manager. Esto se muestra en el siguiente comando:

aws lambda create-event-source-mapping \ --event-source-arn arn:aws:kafka:us-east-1:111122223333:cluster/my-cluster/fc2f5bdf-fd1b-45ad-85dd-15b4a5a6247e-2 \ --topics AWSKafkaTopic \ --starting-position LATEST \ --function-name my-kafka-function --source-access-configurations '[{"Type": "CLIENT_CERTIFICATE_TLS_AUTH","URI": "arn:aws:secretsmanager:us-east-1:111122223333:secret:my-secret"}]'

Cuando el clúster utiliza la autenticación de IAM, no necesita un objeto SourceAccessConfiguration. Esto se muestra en el siguiente comando:

aws lambda create-event-source-mapping \ --event-source-arn arn:aws:kafka:us-east-1:111122223333:cluster/my-cluster/fc2f5bdf-fd1b-45ad-85dd-15b4a5a6247e-2 \ --topics AWSKafkaTopic \ --starting-position LATEST \ --function-name my-kafka-function

Configuración de métodos de autenticación de clústeres

Lambda necesita permiso para acceder a su clúster de Amazon MSK, recuperar registros y llevar a cabo otras tareas. Amazon MSK admite varios métodos para autenticarse con su clúster de MSK.

Acceso sin autenticar

Si ningún cliente accede al clúster a través de Internet, puede utilizar el acceso no autenticado.

Autenticación SASL/SCRAM

Lambda admite autenticación simple y autenticación de capa de seguridad/mecanismo de autenticación de respuesta por desafío saltado (SASL/SCRAM), con cifrado de seguridad de la capa de transporte (TLS) y la función hash SHA-512. Para que Lambda se conecte al clúster, las credenciales de autenticación (nombre de usuario y contraseña) se almacenan en un secreto de Secrets Manager. Haga referencia a este secreto al configurar la asignación de orígenes de eventos.

Para obtener más información sobre Secrets Manager, consulte Sign-in credentials authentication with Secrets Manager en la Guía para desarrolladores de Amazon Managed Streaming para Apache Kafka.

nota

Amazon MSK no admite la autenticación SASL/PLAIN.

Autenticación TLS mutua

TLS mutua (mTLS) proporciona autenticación bidireccional entre el cliente y el servidor. El cliente envía un certificado al servidor para que el servidor verifique el cliente. El servidor también envía un certificado al cliente para que el cliente verifique el servidor.

Para las integraciones de Amazon MSK con Lambda, el clúster de MSK actúa como servidor y Lambda actúa como cliente.

  • Para que Lambda verifique el clúster de MSK, configure un certificado de cliente como secreto en Secrets Manager y haga referencia a este certificado en la configuración de asignación de orígenes de eventos. El certificado de servidor debe estar firmado por una entidad de certificación que esté en el almacén de confianza del servidor.

  • El clúster de MSK también envía un certificado de servidor a Lambda. El certificado de servidor debe estar firmado por una entidad de certificación que esté en el almacén de confianza de AWS.

Amazon MSK no admite certificados de servidor autofirmados. Todos los agentes de Amazon MSK utilizan certificados públicos firmados por CA de Amazon Trust Services, en los que Lambda confía de forma predeterminada.

El secreto CLIENT_CERTIFICATE_TLS_AUTH requiere un campo de certificado y un campo de clave privada. Para una clave privada cifrada, el secreto requiere una contraseña de clave privada. El certificado y la clave privada deben estar en formato PEM.

nota

Lambda admite los algoritmos de cifrado de claves privadas PBES1 (pero no PBES2).

El campo de certificado debe contener una lista de certificados y debe comenzar por el certificado de cliente, seguido de cualquier certificado intermedio, y finalizar con el certificado raíz. Cada certificado debe comenzar en una nueva línea con la siguiente estructura:

-----BEGIN CERTIFICATE----- <certificate contents> -----END CERTIFICATE-----

Secrets Manager admite secretos de hasta 65 536 bytes, que supone suficiente espacio para cadenas de certificados largas.

El formato de la clave privada debe ser PKCS #8, con la siguiente estructura:

-----BEGIN PRIVATE KEY----- <private key contents> -----END PRIVATE KEY-----

Para una clave privada cifrada, utilice la siguiente estructura:

-----BEGIN ENCRYPTED PRIVATE KEY----- <private key contents> -----END ENCRYPTED PRIVATE KEY-----

El siguiente ejemplo muestra el contenido de un secreto para la autenticación de mTLS mediante una clave privada cifrada. Para una clave privada cifrada, incluya la contraseña de la clave privada en el secreto.

{ "privateKeyPassword": "testpassword", "certificate": "-----BEGIN CERTIFICATE----- MIIE5DCCAsygAwIBAgIRAPJdwaFaNRrytHBto0j5BA0wDQYJKoZIhvcNAQELBQAw ... j0Lh4/+1HfgyE2KlmII36dg4IMzNjAFEBZiCRoPimO40s1cRqtFHXoal0QQbIlxk cmUuiAii9R0= -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIFgjCCA2qgAwIBAgIQdjNZd6uFf9hbNC5RdfmHrzANBgkqhkiG9w0BAQsFADBb ... rQoiowbbk5wXCheYSANQIfTZ6weQTgiCHCCbuuMKNVS95FkXm0vqVD/YpXKwA/no c8PH3PSoAaRwMMgOSA2ALJvbRz8mpg== -----END CERTIFICATE-----", "privateKey": "-----BEGIN ENCRYPTED PRIVATE KEY----- MIIFKzBVBgkqhkiG9w0BBQ0wSDAnBgkqhkiG9w0BBQwwGgQUiAFcK5hT/X7Kjmgp ... QrSekqF+kWzmB6nAfSzgO9IaoAaytLvNgGTckWeUkWn/V0Ck+LdGUXzAC4RxZnoQ zp2mwJn2NYB7AZ7+imp0azDZb+8YG2aUCiyqb6PnnA== -----END ENCRYPTED PRIVATE KEY-----" }

Para obtener más información sobre mTLS para Amazon MSK e instrucciones sobre cómo generar un certificado de cliente, consulte Mutual TLS client authentication for Amazon MSK en la Guía para desarrolladores de Amazon Managed Streaming para Apache Kafka.

Autenticación de IAM

Puede utilizar AWS Identity and Access Management (IAM) para autenticar la identidad de los clientes que se conectan al clúster de MSK. Con la autenticación de IAM, Lambda confía en los permisos del rol de ejecución de la función para conectarse al clúster, recuperar registros y llevar a cabo otras acciones necesarias. Para ver un ejemplo de política que contenga los permisos necesarios, consulte Create authorization policies for the IAM role en la Guía para desarrolladores de Amazon Managed Streaming para Apache Kafka.

Si la autenticación de IAM está activa en el clúster de MSK y no proporciona ningún secreto, Lambda utilizará de forma automática la autenticación de IAM.

Para obtener más información acerca de la autenticación de IAM en Amazon MSK, consulte IAM access control.

Cómo Lambda elige un agente de arranque

Lambda elige un agente de arranque en función de los métodos de autenticación disponibles en el clúster y de si proporciona un secreto para la autenticación. Si proporciona un secreto para mTLS o SASL/SCRAM, Lambda elige de forma automática ese método de autenticación. Si no proporciona ningún secreto, Lambda selecciona el método de autenticación más seguro que esté activo en el clúster. El siguiente es el orden de prioridad en el que Lambda selecciona un agente, de la autenticación más segura a la menos segura:

  • mTLS (secreto proporcionado para mTLS)

  • SASL/SCRAM (secreto proporcionado para SASL/SCRAM)

  • SASL IAM (no se proporciona secreto y la autenticación de IAM está activa)

  • TLS no autenticada (no se proporciona secreto y la autenticación de IAM no está activa)

  • Texto sin formato (no se proporciona secreto y tanto la autenticación de IAM como la TLS no autenticada no están activas)

nota

Si Lambda no puede conectarse al tipo de agente más seguro, no intentará conectarse a un tipo de agente diferente (menos seguro). Si quiere que Lambda elija un tipo de agente más débil, desactive todos los métodos de autenticación más seguros del clúster.

ID del grupo de consumidores personalizable

Al configurar Kafka como origen de eventos, puede especificar un ID de grupo de consumidores. Este ID de grupo de consumidores es un identificador existente para el grupo de consumidores de Kafka al que desea que se una la función de Lambda. Puede utilizar esta característica para migrar sin problemas cualquier configuración de procesamiento de registro de Kafka en curso de otros consumidores a Lambda.

Kafka distribuye mensajes entre todos los consumidores de un grupo de consumidores. Si especifica un ID de grupo de consumidores que tenga otros consumidores activos, Lambda recibirá solo una parte de los mensajes del tema de Kafka. Si desea que Lambda gestione todos los mensajes del tema, desactive los demás consumidores de ese grupo de consumidores.

Además, si especifica un ID de grupo de consumidores y Kafka encuentra un grupo de consumidores existente válido con el mismo ID, Lambda ignora el parámetro StartingPosition para la asignación de orígenes de eventos. En cambio, Lambda comienza a procesar los registros de acuerdo con la compensación comprometida del grupo de consumidores. Si especifica un ID de grupo de consumidores y Kafka no puede encontrar un grupo de consumidores existente, Lambda configura el origen de eventos con el StartingPosition especificado.

El ID del grupo de consumidores que especifique debe ser único entre todos los orígenes de eventos de Kafka. Tras crear una asignación de orígenes de eventos de Kafka con el ID de grupo de consumidores especificado, no puede actualizar este valor.

Posiciones iniciales de flujos y sondeo

El parámetro StartingPosition indica a Lambda cuándo debe empezar a leer los mensajes del flujo. Existen tres opciones entre las que elegir:

  • Más reciente: Lambda comienza a leer justo después del registro más reciente del tema de Kafka.

  • Recortar horizonte: Lambda comienza a leer a partir del último registro sin recortar en el tema de Kafka. Este también es el registro más antiguo del tema.

  • En la marca de tiempo: Lambda comienza a leer a partir de una posición definida por una marca de tiempo, en segundos de tiempo Unix. Use el parámetro StartingPositionTimestamp para especificar la marca de tiempo.

El sondeo de flujos durante la creación y la actualización de la asignación de orígenes de eventos es, en última instancia, coherente:

  • Durante la creación de la asignación de orígenes de eventos, es posible que se demore varios minutos en iniciar el sondeo de los eventos del flujo.

  • Durante las actualizaciones de la asignación de orígenes de eventos, es posible que se demore hasta 90 segundos en detener y reiniciar el sondeo de los eventos del flujo.

Este comportamiento significa que, si especifica LATEST como posición inicial del flujo, la asignación de orígenes de eventos podría omitir eventos durante una creación o actualización. Para asegurarse de que no se omita ningún evento, especifique TRIM_HORIZON o AT_TIMESTAMP.

Modos de escalado del sondeo de eventos

Puede elegir entre dos modos de escalado del sondeo de eventos para su asignación de orígenes de eventos de Kafka:

Modo bajo demanda (predeterminado)

Cuando crea inicialmente un origen de eventos de Amazon MSK, Lambda asigna una cantidad predeterminada de sondeos de eventos para procesar todas las particiones en el tema de Kafka. Lambda reduce o escala verticalmente de forma automática el número de sondeos de eventos en función de la carga de mensajes.

En intervalos de un minuto, Lambda evalúa el retraso de inicio de todas las particiones del tema. Si el retraso es demasiado alto, la partición recibe mensajes más rápido de lo que Lambda puede procesarlos. Si es necesario, Lambda agrega o elimina a los sondeos de eventos del tema. Este proceso de escalado automático para agregar o eliminar sondeos de eventos se produce dentro de los tres minutos posteriores a la evaluación.

Si su función de Lambda de destino está limitada, Lambda reduce la cantidad de sondeos de eventos. Esta acción reduce la carga de trabajo de la función al reducir el número de mensajes que los sondeos de eventos pueden recuperar y enviar a la función.

Modo aprovisionado

Para las cargas de trabajo en las que necesite afinar el rendimiento de su asignación de orígenes de eventos, puede utilizar el modo aprovisionado. En el modo aprovisionado, usted define los límites mínimos y máximos para la cantidad de sondeos de eventos aprovisionados. Estos sondeos de eventos aprovisionados están dedicados a la asignación de orígenes de eventos y pueden gestionar los picos de mensajes inesperados mediante un ajuste de escalado automático adaptable. Recomendamos que utilice el modo aprovisionado para las cargas de trabajo de Kafka que tengan requisitos de rendimiento estrictos.

En Lambda, un sondeo de eventos es una unidad de cómputo capaz de gestionar hasta 5 MBps de rendimiento. Como referencia, supongamos que el origen de eventos produce una carga útil media de 1 MB y que la duración media de la función es de 1 segundo. Si la carga útil no sufre ninguna transformación (como un filtrado), un único sondeo puede admitir un rendimiento de 5 MBps y 5 invocaciones de Lambda simultáneas. El uso del modo aprovisionado conlleva costos adicionales. Para obtener estimaciones de precios, consulte Precios de AWS Lambda.

En el modo aprovisionado, el rango de valores aceptados para el número mínimo de sondeos de eventos (MinimumPollers) oscila entre 1 y 200, inclusive. El rango de valores aceptados para el número máximo de sondeos de eventos (MaximumPollers) está comprendido entre 1 y 2000, inclusive. MaximumPollers debe ser mayor o igual que MinimumPollers. Además, para mantener el procesamiento ordenado dentro de las particiones, Lambda limita el número de MaximumPollers al número de particiones del tema.

Para obtener más información sobre cómo elegir los valores de sondeos de eventos mínimos y máximos adecuados, consulte Prácticas recomendadas y consideraciones al usar el modo aprovisionado.

Puede configurar el modo aprovisionado para la asignación de orígenes de eventos de Amazon MSK mediante la consola o la API de Lambda.

Cómo configurar el modo aprovisionado para una asignación de orígenes de eventos de Amazon MSK existente (consola)
  1. Abra la página de Funciones en la consola de Lambda.

  2. Elija la función para la asignación de orígenes de eventos de Amazon MSK para la que desee configurar el modo aprovisionado.

  3. Elija Configuración y, a continuación, seleccione Desencadenadores.

  4. Elija la asignación de orígenes de eventos de Amazon MSK para la que desee configurar el modo aprovisionado y, a continuación, seleccione Editar.

  5. En Configuración de la asignación de orígenes de eventos, elija Configurar el modo aprovisionado.

    • En Número mínimo de sondeos de eventos, introduzca un valor entre 1 y 200. Si no especifica un valor, Lambda asigna el valor predeterminado de 1.

    • En Número máximo de sondeos de eventos, introduzca un valor entre 1 y 2000. Este valor debe ser mayor o igual que su valor para Número mínimo de sondeos de eventos. Si no especifica un valor, Lambda asigna el valor predeterminado de 200.

  6. Seleccione Save.

Puede configurar el modo aprovisionado por programación mediante el objeto ProvisionedPollerConfig de su EventSourceMappingConfiguration. Por ejemplo, el siguiente comando de la CLI UpdateEventSourceMapping configura un valor MinimumPollers de 5 y un valor MaximumPollers de 100.

aws lambda update-event-source-mapping \ --uuid a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 \ --provisioned-poller-config '{"MinimumPollers": 5, "MaximumPollers": 100}'

Tras configurar el modo aprovisionado, puede observar el uso de los sondeos de eventos para su carga de trabajo supervisando la métrica ProvisionedPollers. Para obtener más información, consulte Métricas de asignación de orígenes de eventos.

Para deshabilitar el modo aprovisionado y volver al modo predeterminado (bajo demanda), puede usar el siguiente comando de la CLI UpdateEventSourceMapping:

aws lambda update-event-source-mapping \ --uuid a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 \ --provisioned-poller-config '{}'

Prácticas recomendadas y consideraciones al usar el modo aprovisionado

La configuración óptima de los sondeos de eventos mínimos y máximos para la asignación de orígenes de eventos depende de los requisitos de rendimiento de la aplicación. Recomendamos que lea los sondeos de eventos mínimos predeterminados para establecer una línea de base del perfil de rendimiento. Ajuste la configuración en función de los patrones de procesamiento de mensajes observados y del perfil de rendimiento deseado.

En el caso de cargas de trabajo con un tráfico intenso y necesidades de rendimiento estrictas, aumente el número mínimo de sondeos de eventos para administrar los picos repentinos de mensajes. Para determinar los sondeos de eventos mínimos necesarios, tenga en cuenta los mensajes de su carga de trabajo por segundo y el tamaño medio de la carga útil y utilice la capacidad de rendimiento de un único sondeo de eventos (hasta 5 MBps) como referencia.

Para mantener el procesamiento ordenado dentro de una partición, Lambda limita el número máximo de sondeos de eventos al número de particiones del tema. Además, el número máximo de sondeos de eventos a los que se puede escalar la asignación de orígenes de eventos depende de la configuración de simultaneidad de la función.

Al activar el modo aprovisionado, actualiza la configuración de la red para eliminar los puntos de conexión de VPC AWS PrivateLink y los permisos asociados.

Creación de asignaciones de orígenes de eventos entre cuentas

Puede utilizar la conectividad privada de varias VPC para conectar una función de Lambda a un clúster de MSK aprovisionado en otra Cuenta de AWS. La conectividad de varias VPC utiliza AWS PrivateLink, que mantiene todo el tráfico dentro de la red de AWS.

nota

No puede crear asignaciones de orígenes de eventos entre cuentas para clústeres de MSK sin servidor.

Para crear una asignación de orígenes de eventos entre cuentas, primero debe configurar la conectividad de múltiples VPC para el clúster de MSK. Al crear la asignación de orígenes de eventos, utilice el ARN de conexión de VPC administrada en lugar del ARN del clúster, como se muestra en los siguientes ejemplos. La operación CreateEventSourceMapping también varía según el tipo de autenticación que utilice el clúster de MSK.

ejemplo — Creación de una asignación de orígenes de eventos entre cuentas para un clúster que utilice la autenticación de IAM

Cuando el clúster utiliza la autenticación basada en roles de IAM, no se necesita un objeto SourceAccessConfiguration. Ejemplo:

aws lambda create-event-source-mapping \ --event-source-arn arn:aws:kafka:us-east-1:111122223333:vpc-connection/444455556666/my-cluster-name/51jn98b4-0a61-46cc-b0a6-61g9a3d797d5-7 \ --topics AWSKafkaTopic \ --starting-position LATEST \ --function-name my-kafka-function
ejemplo — Creación de una asignación de orígenes de eventos entre cuentas para un clúster que utilice la autenticación SASL/SCRAM

Si el clúster usa la autenticación SASL/SCRAM, debe incluir un objeto SourceAccessConfiguration que especifique SASL_SCRAM_512_AUTH y un ARN secreto de Secrets Manager.

Hay dos formas de utilizar los secretos para las asignaciones de orígenes de eventos entre cuentas de Amazon MSK con autenticación SASL/SCRAM:

aws lambda create-event-source-mapping \ --event-source-arn arn:aws:kafka:us-east-1:111122223333:vpc-connection/444455556666/my-cluster-name/51jn98b4-0a61-46cc-b0a6-61g9a3d797d5-7 \ --topics AWSKafkaTopic \ --starting-position LATEST \ --function-name my-kafka-function \ --source-access-configurations '[{"Type": "SASL_SCRAM_512_AUTH","URI": "arn:aws:secretsmanager:us-east-1:444455556666:secret:my-secret"}]'
ejemplo — Creación de una asignación de orígenes de eventos entre cuentas para un clúster que utilice la autenticación mTLS

Si el clúster usa la autenticación mTLS, debe incluir un objeto SourceAccessConfiguration que especifique CLIENT_CERTIFICATE_TLS_AUTH y un ARN secreto de Secrets Manager. El secreto se puede almacenar en la cuenta del clúster o en la cuenta de la función de Lambda.

aws lambda create-event-source-mapping \ --event-source-arn arn:aws:kafka:us-east-1:111122223333:vpc-connection/444455556666/my-cluster-name/51jn98b4-0a61-46cc-b0a6-61g9a3d797d5-7 \ --topics AWSKafkaTopic \ --starting-position LATEST \ --function-name my-kafka-function \ --source-access-configurations '[{"Type": "CLIENT_CERTIFICATE_TLS_AUTH","URI": "arn:aws:secretsmanager:us-east-1:444455556666:secret:my-secret"}]'

Todos los parámetros de configuración de orígenes de eventos de Amazon MSK

Todos los tipos de origen de eventos Lambda comparten las mismas operaciones CreateEventSourceMapping y UpdateEventSourceMapping de la API. Sin embargo, solo algunos de los parámetros se aplican a Amazon MSK, como se muestra en la siguiente tabla.

Parámetro Obligatorio Predeterminado/a Notas

AmazonManagedKafkaEventSourceConfig

N

Contiene el campo ConsumerGroupId, que se establece de forma predeterminada en un valor único.

Solo se puede establecer en Crear

BatchSize

N

100

Máximo: 10 000

DestinationConfig

N

N/A

Capturar lotes descartados para un origen de eventos de Amazon MSK

Habilitado

N

True

EventSourceArn

Y

N/A

Solo se puede establecer en Crear

FilterCriteria

N

N/A

Controle qué eventos envía Lambda a la función

FunctionName

Y

N/A

KMSKeyArn

N

N/A

Cifrado de los criterios de filtro

MaximumBatchingWindowInSeconds

N

500 ms

Comportamiento de procesamiento por lotes

ProvisionedPollersConfig

N

MinimumPollers: si no se especifica, el valor predeterminado es 1.

MaximumPollers: si no se especifica, el valor predeterminado es 200.

Modo aprovisionado

SourceAccessConfigurations

N

Sin credenciales

Credenciales de autenticación de SASL/SCRAM o CLIENT_CERTIFICATE_TLS_AUTH (MutualTLS) para el origen de eventos

StartingPosition

Y

N/A

AT_TIMESTAMP, TRIM_HORIZON o LATEST

Solo se puede establecer en Crear

StartingPositionTimestamp

N

N/A

Obligatorio si StartingPosition se establece en AT_TIMESTAMP

Etiquetas

N

N/A

Uso de etiquetas en asignaciones de orígenes de eventos

Temas

Y

N/A

Nombre del tema de Kafka

Solo se puede establecer en Crear