Solução de problemas de erros do mapeamento da origem do evento do Kafka
Os tópicos a seguir fornecem orientação para a solução de erros e problemas que você pode encontrar usando o Amazon MSK ou o Apache Kafka autogerenciado no Lambda.
Para obter mais ajuda com a solução de problemas, visite o Centro de Conhecimento da AWS
Erros de autenticação e autorização
Se alguma das permissões necessárias para consumir dados do cluster do Kafka estiver ausente, o Lambda exibirá uma das mensagens a seguir de erro no mapeamento da fonte de eventos em LastProcessingResult.
Mensagens de erro
O cluster falhou ao autorizar o Lambda
Para SASL/SCRAM ou mTLS, esse erro indica que o usuário fornecido não tem todas estas permissões da lista de controle de acesso (ACL) do Kafka necessárias:
-
Cluster DescribeConfigs
-
Descrever grupo
-
Ler grupo
-
Descrever tópico
-
Ler tópico
Ao criar ACLs do Kafka com as permissões necessárias do kafka-cluster, especifique o tópico e o grupo como recursos. O nome do tópico deve corresponder ao tópico no mapeamento da fonte de eventos. O nome do grupo deve corresponder ao UUID do mapeamento da fonte de eventos.
Depois de adicionar as permissões necessárias à função de execução, poderá levar vários minutos para que as alterações entrem em vigor.
A seguir está um exemplo de log no nível do sistema ESM após ativar a Configuração de registro para esse 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" } }
SASL authentication failed (Falha na autenticação SASL)
Em SASL/SCRAM ou SASL/PLAIN, esse erro indica que as credenciais de login fornecidas não são válidas.
Para controle de acesso do IAM, o perfil de execução não tem a permissão kafka-cluster:Connect para o cluster. Adicione essa permissão à função e especifique o nome do recurso da Amazon (ARN) do cluster como recurso.
É possível que esse erro ocorra de modo intermitente. O cluster rejeitará conexões depois que o número de conexões de TCP exceder a cota de serviço. O Lambda recua e tenta novamente até que uma conexão seja bem-sucedida. Depois que o Lambda se conecta ao cluster e sonda por registros, o último resultado de processamento é alterado para OK.
A seguir está um exemplo de log no nível do sistema ESM após ativar a Configuração de registro para esse problema ao usar a autenticação 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" } }
Server failed to authenticate Lambda (Falha ao autenticar o Lambda no servidor)
Esse erro indica que o agente do Kafka não conseguiu autenticar o Lambda. Esse erro pode ocorrer por estes motivos:
Você não forneceu um certificado de cliente para autenticação mTLS.
Você forneceu um certificado de cliente, mas os agentes do Kafka não estão configurados para usar a autenticação mTLS.
Um certificado de cliente não é confiável para os agentes do Kafka.
Lambda failed to authenticate server (Falha ao autenticar o servidor no Lambda)
Esse erro indica que o Lambda não conseguiu autenticar o agente do Kafka. Esse erro pode ocorrer por estes motivos:
Para Apache Kafka autogerenciado: os agentes do Kafka usam certificados autoassinados ou uma CA privada, mas não fornecem o certificado CA raiz do servidor.
Para Apache Kafka autogerenciado: o certificado CA raiz do servidor não corresponde à CA raiz que assinou o certificado do agente.
A validação do nome de host falhou porque o certificado do agente não contém o nome DNS ou o endereço IP do agente como nome alternativo do assunto.
Provided certificate or private key is invalid (O certificado ou a chave privada fornecida é inválida)
Esse erro indica que o consumidor do Kafka não pôde usar o certificado fornecido ou a chave privada. Verifique se o certificado e a chave usam o formato PEM e que a criptografia de chave privada usa um algoritmo PBES1.
A seguir está um exemplo de log no nível do sistema ESM após ativar a Configuração de registro para esse 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" } }
Erros de rede e conectividade
Problemas de configuração de rede podem impedir que o Lambda se conecte ao seu cluster Kafka. Os tópicos a seguir descrevem erros comuns relacionados à rede.
Mensagens de erro
Tempo limite de conexão devido à configuração do grupo de segurança
Se o grupo de segurança associado ao seu cluster Kafka não permitir tráfego de entrada de si mesmo, o Lambda não poderá se conectar ao cluster. Certifique-se de que as regras de entrada do grupo de segurança permitam o tráfego do próprio grupo de segurança nas portas do agente do Kafka.
A seguir está um exemplo de log no nível do sistema ESM após ativar a Configuração de registro para esse 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" } }
Você também pode verificar o log de informações do consumidor do Kafka para verificar a conexão e a configuração da rede. O campo brokerEndpoints mostra os endereços do agente do Kafka, securityProtocol e saslMechanism (se aplicável) mostram o método de autenticação e o campo networkConfig mostra os endereços IP, o bloco CIDR da sub-rede e os grupos de segurança usados pelo mapeamento da origem do evento. Verifique se os grupos de segurança listados permitem o tráfego de entrada necessário:
{ "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" ] } } }
Os endpoints do agente do Kafka não podem ser resolvidos
Esse erro indica que o cluster do Kafka não existe ou foi excluído. Verifique se o cluster especificado no mapeamento da origem do evento existe e está em um estado ativo.
A seguir está um exemplo de log no nível do sistema ESM após ativar a Configuração de registro para esse 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" } }
Erros de mapeamento da fonte de eventos
Quando você adicionar seu cluster do Apache Kafka como uma fonte de eventos para sua função do Lambda, se ela encontrar um erro, o consumidor do Kafka interrompe o processamento de registros. Os consumidores de uma partição de tópico são aqueles que se inscrevem, leem e processam seus registros. Seus outros consumidores do Kafka podem continuar processando registros, desde que não encontrem o mesmo erro.
Para determinar a causa de um consumidor parado, verifique o campo StateTransitionReason na resposta do EventSourceMapping. A lista a seguir descreve os erros de origem do evento que você pode receber:
ESM_CONFIG_NOT_VALID-
A configuração do mapeamento da fonte de eventos não é válida.
EVENT_SOURCE_AUTHN_ERROR-
O Lambda não conseguiu autenticar a fonte de eventos.
EVENT_SOURCE_AUTHZ_ERROR-
O Lambda não tem as permissões necessárias para acessar a fonte de eventos.
FUNCTION_CONFIG_NOT_VALID-
A configuração da função não é válida.
nota
Se os registros de eventos do Lambda excederem o limite de tamanho permitido de 6 MB, eles poderão ficar sem processamento.