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
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
Authentification et erreurs d’autorisation
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
Messages d’erreur
Le cluster n’a pas pu autoriser Lambda
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 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
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 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
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
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
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 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é
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.
Messages d’erreur
Délai de connexion dû à la configuration du groupe de sécurité
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 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
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 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
Lorsque vous ajoutez votre cluster Apache Kafka en tant que source d’événement 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.