

# Solução de problemas de erros do mapeamento da origem do evento do Kafka
<a name="with-kafka-troubleshoot"></a>

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](https://repost.aws/knowledge-center#AWS_Lambda).

## Erros de autenticação e autorização
<a name="kafka-permissions-errors"></a>

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**.

**Topics**
+ [

### O cluster falhou ao autorizar o Lambda
](#kafka-authorize-errors)
+ [

### SASL authentication failed (Falha na autenticação SASL)
](#kafka-sasl-errors)
+ [

### Server failed to authenticate Lambda (Falha ao autenticar o Lambda no servidor)
](#kafka-mtls-errors-server)
+ [

### Lambda failed to authenticate server (Falha ao autenticar o servidor no Lambda)
](#kafka-mtls-errors-lambda)
+ [

### Provided certificate or private key is invalid (O certificado ou a chave privada fornecida é inválida)
](#kafka-key-errors)

### O cluster falhou ao autorizar o Lambda
<a name="kafka-authorize-errors"></a>

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](esm-logging.md) 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)
<a name="kafka-sasl-errors"></a>

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](esm-logging.md) 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)
<a name="kafka-mtls-errors-server"></a>

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)
<a name="kafka-mtls-errors-lambda"></a>

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)
<a name="kafka-key-errors"></a>

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](esm-logging.md) 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
<a name="kafka-network-errors"></a>

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.

**Topics**
+ [

### Tempo limite de conexão devido à configuração do grupo de segurança
](#kafka-security-group-errors)
+ [

### Os endpoints do agente do Kafka não podem ser resolvidos
](#kafka-cluster-deleted-errors)

### Tempo limite de conexão devido à configuração do grupo de segurança
<a name="kafka-security-group-errors"></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](esm-logging.md) 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
<a name="kafka-cluster-deleted-errors"></a>

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](esm-logging.md) 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
<a name="services-event-errors"></a>

Quando você adicionar seu cluster do Apache Kafka como uma [fonte de eventos](invocation-eventsourcemapping.md) 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.