

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Résolution des erreurs de mappage des sources d’événements Kafka
<a name="with-kafka-troubleshoot"></a>

Les rubriques suivantes fournissent des conseils de dépannage pour les erreurs et les problèmes que vous pouvez rencontrer en utilisant Amazon MSK ou Apache Kafka autogéré avec Lambda.

Pour obtenir de l’aide supplémentaire en matière de résolution des problèmes, consultez le [Centre de connaissances AWS](https://repost.aws/knowledge-center#AWS_Lambda).

## Authentification et erreurs d’autorisation
<a name="kafka-permissions-errors"></a>

Si l'une des autorisations requises pour consommer les données du cluster Kafka est manquante, Lambda affiche l'un des messages d'erreur suivants dans le mappage des sources d'événements ci-dessous. **LastProcessingResult**

**Topics**
+ [Le cluster n’a pas pu autoriser Lambda](#kafka-authorize-errors)
+ [Échec de l’authentification SASL](#kafka-sasl-errors)
+ [Le serveur n’a pas réussi à authentifier Lambda](#kafka-mtls-errors-server)
+ [Lambda n’a pas réussi à authentifier le serveur](#kafka-mtls-errors-lambda)
+ [Le certificat ou la clé privée fournis n’est pas valide](#kafka-key-errors)

### Le cluster n’a pas pu autoriser Lambda
<a name="kafka-authorize-errors"></a>

Pour SASL/SCRAM ou mTLS, cette erreur indique que l'utilisateur fourni ne possède pas toutes les autorisations requises de la liste de contrôle d'accès (ACL) Kafka suivantes :
+ DescribeConfigs Cluster
+ Décrire un groupe
+ Lire le groupe
+ Décrire la rubrique
+ Lire la rubrique

Lorsque vous créez Kafka ACLs avec les `kafka-cluster` autorisations requises, spécifiez le sujet et le groupe en tant que ressources. Le nom de la rubrique doit correspondre à la rubrique dans le mappage des sources d’événements. Le nom du groupe doit correspondre à l’UUID du mappage des sources d’événements.

Une fois que vous avez ajouté les autorisations requises au rôle d’exécution, il peut y avoir un délai de plusieurs minutes avant que les modifications ne prennent effet.

Voici un exemple de journal au niveau du système ESM après avoir activé Logging [Config](esm-logging.md) pour ce problème :

```
{
    "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"
    }
}
```

### Échec de l’authentification SASL
<a name="kafka-sasl-errors"></a>

Pour SASL/SCRAM ou SASL/PLAIN, cette erreur indique que les informations de connexion fournies ne sont pas valides.

Pour le contrôle d’accès IAM, le rôle d’exécution ne dispose pas des autorisations `kafka-cluster:Connect` pour le cluster. Ajoutez cette autorisation au rôle et spécifiez l’Amazon Resource Name (ARN) du cluster en tant que ressource.

Cette erreur peut se produire de façon intermittente. Le cluster rejette les connexions une fois que le nombre de connexions TCP dépasse le Quota de service. Lambda fait marche arrière et tente de nouveau jusqu’à ce qu’une connexion soit réussie. Une fois que Lambda se connecte au cluster et interroge les enregistrements, le dernier résultat de traitement passe à `OK`.

Voici un exemple de journal ESM au niveau du système après avoir activé Logging [Config](esm-logging.md) pour ce problème lors de l'utilisation de l'authentification 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"
    }
}
```

### Le serveur n’a pas réussi à authentifier Lambda
<a name="kafka-mtls-errors-server"></a>

Cette erreur indique que l’agent Kafka n’a pas réussi à authentifier Lambda. Cette erreur se produit dans les conditions suivantes :
+ Vous n’avez pas fourni de certificat client pour l’authentification mTLS.
+ Vous avez fourni un certificat client, mais les courtiers ne sont pas configurés pour utiliser l’authentification mTLS.
+ Les courtiers Kafka ne font pas confiance à un certificat client.

### Lambda n’a pas réussi à authentifier le serveur
<a name="kafka-mtls-errors-lambda"></a>

Cette erreur indique que Lambda n’a pas réussi à authentifier l’agent Kafka. Cette erreur se produit dans les conditions suivantes :
+ Pour Apache Kafka autogéré : les agents Kafka utilisent des certificats autosignés ou une autorité de certification privée, mais n’ont pas fourni le certificat CA racine du serveur.
+ Pour Apache Kafka autogéré : le certificat CA racine du serveur ne correspond pas à l’autorité de certification racine qui a signé le certificat de l’agent.
+ La validation du nom d’hôte a échoué, car le certificat du courtier ne contient pas le nom DNS ou l’adresse IP du courtier comme autre nom de sujet.

### Le certificat ou la clé privée fournis n’est pas valide
<a name="kafka-key-errors"></a>

Cette erreur indique que le consommateur Kafka n’a pas pu utiliser le certificat ou la clé privée fournis. Assurez-vous que le certificat et la clé utilisent le format PEM et que le chiffrement par clé privée utilise un PBES1 algorithme.

Voici un exemple de journal au niveau du système ESM après avoir activé Logging [Config](esm-logging.md) pour ce problème :

```
{
    "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"
    }
}
```

## Erreurs de réseau et de connectivité
<a name="kafka-network-errors"></a>

Des problèmes de configuration réseau peuvent empêcher Lambda de se connecter à votre cluster Kafka. Les rubriques suivantes décrivent les erreurs réseau courantes.

**Topics**
+ [Délai de connexion dû à la configuration du groupe de sécurité](#kafka-security-group-errors)
+ [Les points de terminaison du courtier Kafka ne peuvent pas être résolus](#kafka-cluster-deleted-errors)

### Délai de connexion dû à la configuration du groupe de sécurité
<a name="kafka-security-group-errors"></a>

Si le groupe de sécurité associé à votre cluster Kafka n'autorise pas le trafic entrant en provenance de lui-même, Lambda ne peut pas se connecter au cluster. Assurez-vous que les règles entrantes du groupe de sécurité autorisent le trafic provenant du groupe de sécurité lui-même sur les ports du courtier Kafka.

Voici un exemple de journal au niveau du système ESM après avoir activé Logging [Config](esm-logging.md) pour ce problème :

```
{
    "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"
    }
}
```

Vous pouvez également consulter le journal Kafka Consumer INFO pour vérifier la connexion et la configuration du réseau. Le `brokerEndpoints` champ indique les adresses du courtier Kafka `securityProtocol` et `saslMechanism` (le cas échéant) indique la méthode d'authentification, et le `networkConfig` champ indique les adresses IP, le bloc CIDR du sous-réseau et les groupes de sécurité utilisés par le mappage des sources d'événements. Vérifiez que les groupes de sécurité répertoriés autorisent le trafic entrant requis :

```
{
    "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"
            ]
        }
    }
}
```

### Les points de terminaison du courtier Kafka ne peuvent pas être résolus
<a name="kafka-cluster-deleted-errors"></a>

Cette erreur indique que le cluster Kafka n'existe pas ou a été supprimé. Vérifiez que le cluster spécifié dans le mappage des sources d'événements existe et est dans un état actif.

Voici un exemple de journal au niveau du système ESM après avoir activé Logging [Config](esm-logging.md) pour ce problème :

```
{
    "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"
    }
}
```

## API de mappage des sources d’événements
<a name="services-event-errors"></a>

Lorsque vous ajoutez votre cluster Apache Kafka en tant que [source d’événement](invocation-eventsourcemapping.md) pour votre fonction Lambda, si votre fonction rencontre une erreur, votre consommateur Kafka cesse de traiter les registres. Les consommateurs d’une partition de rubrique sont ceux qui s’abonnent à vos registres et qui les lisent et traitent. Vos autres consommateurs Kafka peuvent continuer à traiter les registres, à condition qu’ils ne rencontrent pas la même erreur.

Afin d’identifier les raisons pour lesquelles un consommateur cesse son traitement, vérifiez le champ `StateTransitionReason` dans la réponse de `EventSourceMapping`. La liste suivante décrit les erreurs de source d’événement que vous pouvez recevoir :

**`ESM_CONFIG_NOT_VALID`**  
La configuration de mappage de source d’événement n’est pas valide.

**`EVENT_SOURCE_AUTHN_ERROR`**  
Lambda n’a pas pu authentifier la source d’événement.

**`EVENT_SOURCE_AUTHZ_ERROR`**  
Lambda ne dispose pas des autorisations requises pour accéder à la source d’événement.

**`FUNCTION_CONFIG_NOT_VALID`**  
La configuration de la fonction n’est pas valide.

**Note**  
Si vos registres d’événement Lambda dépassent la limite de taille autorisée de 6 Mo, il se peut qu’ils ne soient pas traités.