Solución de errores de asignación de orígenes de eventos de Kafka
En los siguientes temas se proporcionan consejos para solucionar errores y problemas que puedan surgir cuando utilice Amazon MSK o Apache Kafka autoadministrado con Lambda.
Para obtener más ayuda con la solución de problemas, visite el Centro de conocimiento de AWS
Errores de autenticación y autorización
Si falta alguno de los permisos necesarios para consumir datos del clúster de Kafka, Lambda muestra uno de los siguientes mensajes de error en la asignación de orígenes de eventos en LastProcessingResult.
Mensajes de error
Error de autorización del clúster a Lambda
Para SASL/SCRAM o mTLS, este error indica que el usuario proporcionado no tiene todos los permisos de lista de control de acceso (ACL) de Kafka necesarios que se indican a continuación:
-
Clúster DescribeConfigs
-
Descripción del grupo
-
Grupo de lectura
-
Descripción del tema
-
Tema de lectura
Cuando crea las ACL de Kafka con los permisos de kafka-cluster necesarios, debe especificar el tema y el grupo como recursos. El nombre del tema debe coincidir con el tema de la asignación de origen de eventos. El nombre del grupo debe coincidir con el UUID de la asignación de origen de eventos.
Después de agregar los permisos necesarios al rol de ejecución, pueden pasar varios minutos hasta que los cambios surtan efecto.
El siguiente es un ejemplo de registro a nivel del sistema de la ESM después de habilitar la Configuración de registro para este problema:
{ "eventType": "ESM_PROCESSING_EVENT", "timestamp": 1734567890123, "resourceArn": "arn:aws:lambda:us-east-1:123456789012:event-source-mapping:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "eventSourceArn": "arn:aws:kafka:us-east-1:123456789012:cluster/my-kafka-cluster/12345678-abcd-1234-efgh-EXAMPLE11111-1", "eventProcessorId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111/0", "logLevel": "WARN", "error": { "errorMessage": "Not authorized to access topics: [my-topic]", "errorCode": "org.apache.kafka.common.errors.TopicAuthorizationException" } }
Error de autenticación de SASL
Para SASL/SCRAM o SASL/PLAIN, este error indica que las credenciales de inicio de sesión proporcionadas no son válidas.
Para el control de acceso de IAM, falta el permiso kafka-cluster:Connect para el clúster en el rol de ejecución. Agregue este permiso al rol y especifique el nombre de recurso de Amazon (ARN) del clúster como recurso.
Es posible que vea que este error se produce de forma intermitente. El clúster rechaza las conexiones después de que el número de conexiones TCP supere la Service Quotas. Lambda retrocede y vuelve a intentarlo hasta que una conexión tenga éxito. Después de que Lambda se conecte al clúster y sondee los registros, el último resultado de procesamiento cambia a OK.
El siguiente es un ejemplo de registro a nivel del sistema de la ESM después de habilitar la Configuración de registro para este problema cuando se utiliza la autenticación de IAM:
{ "eventType": "ESM_PROCESSING_EVENT", "timestamp": 1734567890456, "resourceArn": "arn:aws:lambda:us-east-1:123456789012:event-source-mapping:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222", "eventSourceArn": "arn:aws:kafka:us-east-1:123456789012:cluster/my-kafka-cluster/12345678-abcd-1234-efgh-EXAMPLE22222-1", "eventProcessorId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE22222/0", "logLevel": "WARN", "error": { "errorMessage": "[a1b2c3d4-5678-90ab-cdef-EXAMPLE22222]: Access denied", "errorCode": "org.apache.kafka.common.errors.SaslAuthenticationException" } }
El servidor no pudo autenticar Lambda
Este error indica que el agente de Kafka no ha podido autenticar Lambda. Este error puede producirse por cualquiera de las razones siguientes:
No proporcionó ningún certificado de cliente para la autenticación de mTLS.
Proporcionó un certificado de cliente, pero los agentes de Kafka no están configurados para utilizar la autenticación de mTLS.
Los agentes de Kafka no confían en el certificado de cliente.
Lambda no ha podido autenticar el servidor
Este error indica que Lambda no ha podido autenticar el agente de Kafka. Este error puede producirse por cualquiera de las razones siguientes:
En el caso de Apache Kafka autoadministrado: los agentes de Kafka utilizan certificados autofirmados o una entidad de certificación privada, pero no proporcionaron el certificado CA raíz del servidor.
En el caso de Apache Kafka autoadministrado: el certificado CA raíz del servidor no coincide con la CA raíz que firmó el certificado del agente.
No se pudo validar el nombre de host porque el certificado del agente no contiene el nombre DNS ni la dirección IP del agente como nombre alternativo de sujeto.
El certificado o la clave privada proporcionados no son válidos
Este error indica que el consumidor de Kafka no ha podido utilizar la clave privada ni el certificado proporcionados. Asegúrese de que el formato del certificado y la clave sea PEM, y de que el cifrado de clave privada utilice un algoritmo PBES1.
El siguiente es un ejemplo de registro a nivel del sistema de la ESM después de habilitar la Configuración de registro para este problema:
{ "eventType": "ESM_PROCESSING_EVENT", "timestamp": 1734567891234, "resourceArn": "arn:aws:lambda:us-east-1:123456789012:event-source-mapping:a1b2c3d4-5678-90ab-cdef-EXAMPLE44444", "eventSourceArn": "arn:aws:kafka:us-east-1:123456789012:cluster/my-kafka-cluster/12345678-abcd-1234-efgh-EXAMPLE44444-1", "eventProcessorId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE44444/0", "logLevel": "WARN", "error": { "errorMessage": "Invalid PEM keystore configs", "errorCode": "org.apache.kafka.common.errors.InvalidConfigurationException" } }
Errores de red y conectividad
Los problemas de configuración de la red pueden impedir que Lambda se conecte al clúster de Kafka. En los temas siguientes se describen los errores comunes relacionados con la red.
Mensajes de error
Tiempo de espera de conexión agotado debido a la configuración del grupo de seguridad
Si el grupo de seguridad asociado al clúster de Kafka no permite el tráfico entrante procedente de sí mismo, Lambda no podrá conectarse al clúster. Asegúrese de que las reglas de entrada del grupo de seguridad permitan el tráfico procedente del propio grupo de seguridad en los puertos del agente de Kafka.
El siguiente es un ejemplo de registro a nivel del sistema de la ESM después de habilitar la Configuración de registro para este problema:
{ "eventType": "ESM_PROCESSING_EVENT", "timestamp": 1734567892345, "resourceArn": "arn:aws:lambda:us-east-1:123456789012:event-source-mapping:a1b2c3d4-5678-90ab-cdef-EXAMPLE55555", "eventSourceArn": "arn:aws:kafka:us-east-1:123456789012:cluster/my-kafka-cluster/12345678-abcd-1234-efgh-EXAMPLE55555-1", "eventProcessorId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE55555/0", "logLevel": "WARN", "error": { "errorMessage": "Timeout expired while fetching topic metadata", "errorCode": "org.apache.kafka.common.errors.TimeoutException" } }
También puede consultar el registro de información para consumidores de Kafka para verificar la conexión y la configuración de la red. En el campo brokerEndpoints se muestran las direcciones de los agentes de Kafka; en el securityProtocol y saslMechanism, si corresponde, se muestra el método de autenticación; y en el campo networkConfig se muestran las direcciones IP, el bloque de CIDR de la subred y los grupos de seguridad utilizados en la asignación de orígenes de eventos. Verifique que los grupos de seguridad de la lista permitan el tráfico entrante necesario:
{ "eventType": "POLLER_STATUS_EVENT", "timestamp": 1734567892456, "resourceArn": "arn:aws:lambda:us-east-1:123456789012:event-source-mapping:a1b2c3d4-5678-90ab-cdef-11111EXAMPLE", "eventSourceArn": "arn:aws:kafka:us-east-1:123456789012:cluster/my-kafka-cluster/a1b2c3d4-5678-90ab-cdef-11111EXAMPLE-1", "eventProcessorId": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE/0", "logLevel": "INFO", "kafkaEventSourceConnection": { "brokerEndpoints": "boot-abcd1234.c2.kafka-serverless.us-east-1.amazonaws.com:9098", "consumerId": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE-0", "topics": [ "my-topic" ], "consumerGroupId": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE", "securityProtocol": "SASL_SSL", "saslMechanism": "AWS_MSK_IAM", "totalPartitionCount": 2, "assignedPartitionCount": 2, "partitionsAssignmentGeneration": 1, "assignedPartitions": [ "my-topic-0", "my-topic-1" ], "networkConfig": { "ipAddresses": [ "10.0.0.37" ], "subnetCidrBlock": "10.0.0.32/28", "securityGroups": [ "sg-0123456789abcdef0" ] } } }
Los puntos de conexión del agente de Kafka no se pueden resolver
Este error indica que el clúster de Kafka no existe o se ha eliminado. Verifique que el clúster especificado en la asignación de orígenes de eventos existe y se encuentra en un estado activo.
El siguiente es un ejemplo de registro a nivel del sistema de la ESM después de habilitar la Configuración de registro para este problema:
{ "eventType": "ESM_PROCESSING_EVENT", "timestamp": 1734567893456, "resourceArn": "arn:aws:lambda:us-east-1:123456789012:event-source-mapping:a1b2c3d4-5678-90ab-cdef-EXAMPLE66666", "eventSourceArn": "arn:aws:kafka:us-east-1:123456789012:cluster/my-kafka-cluster/12345678-abcd-1234-efgh-EXAMPLE66666-1", "eventProcessorId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE66666/0", "logLevel": "WARN", "error": { "errorMessage": "No resolvable bootstrap urls given in bootstrap.servers", "errorCode": "org.apache.kafka.common.config.ConfigException" } }
Errores de asignación de orígenes de eventos
Cuando agrega el clúster de Apache Kafka como un origen de eventos para su función de Lambda, si su función encuentra un error, su consumidor de Kafka deja de procesar registros. Los consumidores de una partición de tema son aquellos que se suscriben, leen y procesan sus registros. Sus otros consumidores de Kafka pueden continuar procesando registros, siempre que no encuentren el mismo error.
Para determinar la causa de un consumidor detenido, compruebe el StateTransitionReason campo en la respuesta de EventSourceMapping. En la siguiente lista se describen los errores de origen de eventos que puede recibir:
ESM_CONFIG_NOT_VALID-
La configuración de asignación de orígenes de eventos no es válida.
EVENT_SOURCE_AUTHN_ERROR-
Lambda no pudo autenticar el origen de eventos.
EVENT_SOURCE_AUTHZ_ERROR-
Lambda no tiene los permisos necesarios para acceder al origen de eventos.
FUNCTION_CONFIG_NOT_VALID-
La configuración de la función no es válida.
nota
Si los registros de eventos de Lambda superan el límite de tamaño permitido de 6 MB, pueden no procesarse.