Comment puis-je résoudre les problèmes liés aux déclencheurs Lambda qui interrogent Amazon MSK et des clusters Apache Kafka autogérés ?
J'ai conçu ma fonction AWS Lambda pour traiter les enregistrements de mon cluster Amazon Managed Streaming for Apache Kafka (Amazon MSK) ou de mon cluster Apache Kafka autogéré. Cependant, le mappage des sources d'événements n'invoque pas ma fonction Lambda.
Brève description
Pour invoquer une fonction Lambda, le mappage des sources d'événements Apache Kafka doit pouvoir effectuer les actions suivantes :
- Communiquer avec le cluster.
- Interroger les enregistrements de la rubrique.
- Communiquer avec l'API Lambda Invoke.
- Communiquer avec l'API AWS Security Token Service (AWS STS).
Si les paramètres réseau, d'authentification ou d'autorisation d'un mappage de sources d'événements empêchent les actions précédentes, le mappage des sources d'événements ne peut pas invoquer la fonction. À la place, vous recevez un message d'erreur.
Résolution
Après avoir configuré une fonction Lambda avec un déclencheur Amazon MSK ou un déclencheur Kafka autogéré, Lambda crée automatiquement une nouvelle ressource de mappage de sources d'événements. Ce mappage de sources d'événements est une ressource distincte de la fonction Lambda. Le mappage des sources d'événements interroge les enregistrements du cluster Kafka et regroupe les enregistrements dans une charge utile. Puis, l'API Lambda Invoke est appelée pour fournir la charge utile à votre fonction Lambda à traiter. Pour résoudre les problèmes liés à l'échec des sondages, effectuez les étapes de dépannage suivantes pour chaque erreur que vous recevez.
Important : Les mappages de sources d'événements Lambda n'héritent pas de la configuration réseau du cloud privé virtuel (VPC) de la fonction Lambda. Cela vaut à la fois pour Amazon MSK et pour les déclencheurs Kafka autogérés. Un mappage de sources d'événements Amazon MSK utilise les configurations de sous-réseau et de groupe de sécurité que vous avez configurées sur le cluster MSK cible. Un déclencheur Kafka autogéré dispose d'un accès au réseau étendu (WAN) par défaut. Toutefois, vous pouvez également configurer l'accès réseau à un VPC sur le même compte AWS et dans la même région AWS. Étant donné que la configuration réseau est séparée, vous pouvez configurer votre fonction Lambda au sein d'un réseau qui ne présente pas de route vers le cluster Kafka.
Pour configurer un mappage de sources d'événements Amazon MSK afin d'interroger les enregistrements d'un cluster MSK entre comptes, configurez une connectivité privée multi-VPC. Notez que vous pouvez créer un déclencheur Kafka autogéré qui consomme à partir d'un cluster MSK d'un autre compte. Cependant, cette solution présente des inconvénients. Par exemple, vous ne pouvez pas utiliser l'authentification AWS Identity and Access Management (IAM) avec un déclencheur Kafka autogéré, même si le cluster cible est un cluster MSK. De plus, pour vous connecter au cluster MSK via une connexion d’appairage de VPC, vous devez configurer des solutions de contournement VPC. Pour un exemple d'architecture, consultez la section Comment Goldman Sachs crée une connectivité entre comptes vers ses clusters Amazon MSK avec AWS PrivateLink.
Remarque : Pour utiliser la connectivité multi-VPC, vérifiez que vous respectez les exigences.
Résoudre les problèmes de communication réseau entre le déclencheur et le cluster
Le mappage des sources d'événements envoie plusieurs requêtes différentes aux points de terminaison de l’agent de cluster pour effectuer une seule invocation de votre fonction Lambda. Avant une invocation, le mappage des sources d'événements demande aux points de terminaison de l’agent de cluster les informations de métadonnées du cluster et les enregistrements de la rubrique. Après une invocation réussie, le mappage des sources d'événements communique avec les points de terminaison de l’agent pour valider les enregistrements traités. Lorsque le mappage des sources d'événements envoie une requête aux points de terminaison de l’agent et ne reçoit pas de réponse, la requête expire. Si vous recevez le message d’erreur suivant :
« PROBLEM: Connection error. Please check your event source connection configuration. If your event source lives in a VPC, try setting up a new Lambda function or EC2 instance with the same VPC, Subnet, and Security Group settings. Connect the new device to the Kafka cluster and consume messages to ensure that the issue is not related to VPC or Endpoint configuration. If the new device is able to consume messages, please contact Lambda customer support for further investigation. »
Les requêtes de l’agent qui expirent peuvent survenir avant ou après que la requête n'atteigne le point de terminaison de l’agent. Les délais d'expiration pré-agent se produisent lorsque les paramètres du réseau et du groupe de sécurité bloquent les requêtes du mappage des sources d'événements envoyées aux points de terminaison de l’agent. Les requêtes expirées post-agent se produisent lorsque l’agent reçoit la requête de mappage des sources d'événements, mais qu'il ne peut pas la terminer.
Pour examiner une requête expirée post-agent, vérifiez le statut de l’agent au moment de l'échec. Si le cluster était hors ligne lorsque le problème est survenu, réactivez le mappage des sources d'événements lorsque le cluster sera de nouveau en ligne et disponible. Les requêtes expirées se produisent également lorsque l'espace disque du cluster est insuffisant, que le processeur est utilisé à 100 % ou lorsqu'un point de terminaison d’agent échoue. Pour résoudre ces problèmes, définissez la taille de lot du mappage des sources d'événements sur 1, puis réactivez le déclencheur. Notez que lorsque vous définissez la taille du lot sur une valeur plus élevée, le délai de réponse du cluster est plus long.
Pour résoudre les erreurs d’expiration de délai, examinez les journaux d'accès et les journaux système de l’agent pour plus d'informations.
Si la requête expire avant qu'elle n'atteigne le point de terminaison de l’agent, vérifiez votre configuration réseau.
Vérifiez la configuration réseau pour un mappage des sources d'événements Amazon MSK
Pour communiquer avec le cluster MSK, le mappage des sources d'événements Amazon MSK crée une interface réseau Elastic hyperplane dans chaque sous-réseau utilisé par le cluster. Le mappage des sources d'événements est une ressource détenue par Lambda. Cependant, le mappage des sources d'événements Amazon MSK n'utilise pas les paramètres VPC de la fonction Lambda. À la place, le mappage des sources d'événements utilise automatiquement les paramètres de sous-réseau et de groupe de sécurité configurés sur le cluster MSK cible. Le mappage des sources d'événements Amazon MSK crée ensuite une interface réseau au sein de chaque sous-réseau utilisé par le cluster MSK. Ces interfaces réseau utilisent le même groupe de sécurité que le cluster MSK.
Pour vérifier si vos groupes de sécurité autorisent le trafic et les ports requis, procédez comme suit :
- Pour répertorier tous les groupes de sécurité et les sous-réseaux utilisés par le cluster MSK, exécutez la commande de l’interface de ligne de commande AWS describe-cluster.
- Pour afficher toutes les règles entrantes et sortantes, exécutez la commande describe-security-groups sur les groupes de sécurité répertoriés dans la sortie de la commande describe-cluster.
- Configurez les règles dans les groupes de sécurité répertoriés pour autoriser le trafic entre le groupe de sécurité et le cluster MSK. Vous devez également autoriser le trafic via les ports d'authentification ouverts suivants utilisés par l’agent :
9092 pour le texte brut
9094 pour TLS
9096 pour SASL
9098 pour IAM
443 (règle sortante) pour toutes les configurations
Remarque : Si des erreurs surviennent lorsque vous exécutez des commandes de l'interface de la ligne de commande AWS (AWS CLI), consultez la section Résoudre des erreurs liées à l’AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l’AWS CLI.
Vérifiez la configuration réseau pour un mappage des sources d'événements Kafka autogéré
Par défaut, un mappage de sources d'événements Kafka autogéré peut accéder au WAN mais pas au VPC. Vous pouvez configurer manuellement l'accès au VPC à des sous-réseaux et à des groupes de sécurité spécifiques dans le cluster Kafka. Toutefois, le mappage des sources d'événements ne peut accéder aux clusters que si ces derniers se trouvent dans le compte qui contient la fonction Lambda. Vous pouvez créer un mappage de sources d'événements Kafka autogéré pour un cluster Kafka situé à l'un des emplacements suivants :
- Un centre de données sur site
- Un autre fournisseur de cloud
- Les agents Amazon MSK d'un cluster Kafka situé dans le VPC d'un autre compte
Résoudre les problèmes qui se produisent lors de l'initialisation, de l'interrogation ou de l'invocation
Si vous rencontrez des problèmes lors de l'initialisation, de l'interrogation ou de l'invocation, le message d'erreur suivant s'affiche :
« PROBLEM: Connection error. Your event source VPC must be able to connect to Lambda and STS, Secrets Manager (if event source authentication is required), and the OnFailure Destination (if one is configured). You can provide access by configuring PrivateLink or a NAT Gateway. For how to setup VPC endpoints/NAT gateway, please check https://aws.amazon.com/blogs/compute/setting-up-aws-lambda-with-an-apache-kafka-cluster-within-a-vpc/. »
L’erreur précédente se produit pour les raisons suivantes :
- Le mappage des sources d'événements est configuré dans un VPC et les appels émis vers l'API AWS STS échouent ou expirent.
- Le mappage des sources d'événements est configuré pour utiliser l'authentification du cluster Secrets Manager, mais les appels émis vers l'API Secrets Manager échouent ou expirent.
- Le mappage des sources d'événements peut accéder à votre cluster Kafka et interroger vos enregistrements avec succès, mais les appels émis vers l'API Lambda échouent ou arrivent à expiration.
- Vous avez configuré le mappage des sources d'événements avec une destination en cas d’échec, telle qu'Amazon Simple Storage Service (Amazon S3) ou Amazon Simple Notification Service (Amazon SNS). Cependant, lorsque les invocations de vos fonctions se terminent par une erreur, les appels émis vers l'API de la destination en cas d'échec échouent ou expirent.
Les problèmes précédents se produisent lorsque la configuration des groupes de sécurité ou des tables de routage ne permet pas à votre mappage de sources d'événements d'atteindre d'autres services. Ces services incluent AWS STS, Lambda ou AWS Secrets Manager. Pour configurer correctement les paramètres de votre VPC, suivez les étapes décrites dans la section Configuration d'AWS Lambda avec un cluster Apache Kafka au sein d'un VPC.
Pour résoudre ces problèmes liés à un mappage de sources d'événements Kafka autogéré, effectuez les actions suivantes :
- Créez un point de terminaison de VPC Lambda et un point de terminaison de VPC STS dans le VPC qui contient les sous-réseaux utilisés par le mappage des sources d'événements Kafka autogéré.
- Si vous avez configuré le mappage des sources d'événements avec un secret, créez un point de terminaison de VPC pour Secrets Manager.
- Si vous avez configuré le mappage des sources d'événements avec une destination en cas d’échec, créez un point de terminaison de VPC pour votre destination en cas d’échec. Amazon SNS ou Amazon S3 sont des exemples de destination.
- Configurez les points de terminaison de VPC avec un groupe de sécurité qui autorise le trafic entrant sur le port 443 à partir du groupe de sécurité du mappage des sources d'événements Kafka autogéré.
- Configurez le groupe de sécurité du mappage de sources d'événements Kafka autogéré pour autoriser le trafic sortant sur le port 443 vers le groupe de sécurité des points de terminaison de VPC.
Pour résoudre ces problèmes pour un mappage de sources d'événements Amazon MSK, effectuez les actions suivantes :
- Créez un point de terminaison de VPC Lambda et un point de terminaison de VPC STS dans le VPC qui contient le cluster MSK.
- Si le mappage des sources d'événements utilise un secret ou si le cluster utilise l'authentification IAM SASL, créez un point de terminaison de VPC pour Secrets Manager. Ce point de terminaison doit se trouver dans le VPC qui contient le cluster MSK.
- Si vous avez configuré le mappage des sources d'événements avec une destination en cas d’échec, créez un point de terminaison de VPC pour votre destination en cas d’échec. Amazon SNS ou Amazon S3 sont des exemples de destination. Ce point de terminaison de VPC doit se trouver dans le VPC qui contient le cluster MSK.
- Configurez les points de terminaison de VPC avec un groupe de sécurité qui autorise le trafic entrant sur le port 443 à partir du groupe de sécurité utilisé par le cluster MSK.
Important : Autorisez le trafic entrant en provenance du groupe de sécurité du cluster MSK, et non du groupe de sécurité de la fonction Lambda. - Configurez le groupe de sécurité du cluster MSK pour autoriser le trafic sortant sur le port 443 vers le groupe de sécurité des points de terminaison de VPC.
Résoudre les problèmes liés à votre stratégie VPC ou à votre rôle d'exécution
Vérifiez l’existence de problèmes liés au rôle d'exécution
Si votre stratégie de ressources de point de terminaison de VPC STS présente des problèmes de configuration, le message d'erreur suivant s'affiche :
« PROBLEM: Lambda failed to assume your function execution role. »
Pour résoudre ce problème, prenez les mesures suivantes :
- Assurez-vous que le principal du service lambda.amazonaws.com est répertorié comme un service approuvé dans la stratégie d’approbation du rôle IAM.
- Assurez-vous que la stratégie de point de terminaison de VPC STS autorise le principal du service Lambda à appeler le rôle sts:AssumeRole. Pour plus d'informations sur la configuration de votre VPC, consultez la section Configurer la sécurité réseau.
Si vous disposez d’une stratégie de point de terminaison de VPC restrictive pour votre point de terminaison de VPC Lambda, l'erreur suivante s'affiche :
« No VPC endpoint policy allows the lambda:InvokeFunction action »
Pour résoudre ces problèmes, assurez-vous que la stratégie de point de terminaison de VPC Lambda autorise le principal du service Lambda à appeler lambda:InvokeFunction.
Remarque : Vous pouvez configurer des destinations en cas d’échec vers une file d'attente Amazon Simple Queue Service (Amazon SQS), une rubrique Amazon SNS ou un compartiment Amazon S3. Lorsque vous utilisez ces destinations, assurez-vous que la stratégie de point de terminaison de VPC autorise les actions requises depuis le rôle d'exécution Lambda.
Vérifiez les problèmes d'accès aux secrets
Si vous rencontrez des problèmes d'accès au secret Secrets Manager, le message d'erreur suivant s'affiche :
« PROBLEM: Lambda is unable to call secretsmanager:GetSecretValue. Reason: User: Lambda execution role is not authorized to perform: secretsmanager:GetSecretValue on resource: Secret in Secrets Manager with an explicit deny in a VPC endpoint policy. »
Pour résoudre ce problème, assurez-vous que la stratégie de ressources de point de terminaison de VPC autorise le rôle d'exécution Lambda à appeler secretsmanager:GetSecretValue pour le secret. Pour obtenir les secrets de Secrets Manager, Lambda utilise votre rôle d'exécution, et non le principal du service Lambda.
Résoudre les problèmes liés à vos secrets
Vérifiez la configuration de votre secret
Si votre secret n'est pas dans un format pouvant être utilisé par le mappage des sources d'événements, le message d'erreur suivant s'affiche :
« PROBLEM: Certificate and/or private key must be in PEM format. »
Pour résoudre ce problème, assurez-vous que votre clé est au format .pem dans un fichier de certificat X.509. Pour vérifier que le format de votre certificat est correct, exécutez la commande suivante :
openssl x509 -in PEM FILE -text
Remarque : Remplacez PEM FILE par le nom de votre fichier .pem.
Assurez-vous également que le chiffrement par clé privée utilise un algorithme PBES1 et non un algorithme PBES2.
Pour plus d'informations, consultez la section Le certificat fourni ou la clé privée n'est pas valide pour Amazon MSK ou Configuration du secret du certificat client pour Kafka autogéré.
Vérifiez le format de vos valeurs secrètes
Si les tentatives de connexion au serveur échouent, le message d'erreur suivant s'affiche :
« PROBLEM: SASL authentication failed. »
Lorsqu'une rubrique Amazon MSK invoque une fonction Lambda, celle-ci peut accéder aux noms d'utilisateur et aux mots de passe que Secrets Manager sécurise avec SASL/SCRAM. Si Lambda ne reconnaît pas la validité de votre nom d'utilisateur et de votre mot de passe, l'erreur précédente s'affiche. Pour résoudre ce problème, connectez-vous à l’agent, puis consultez les journaux d'accès. Pour plus d'informations, consultez la section Authentification SASL/SCRAM pour Amazon MSK ou Authentification SASL/SCRAM pour Kafka autogéré.
Résoudre les problèmes liés aux paramètres du serveur de mappage des sources d'événements
Assurez-vous que le mappage des sources d'événements peut atteindre votre serveur DNS
Si votre mappage de sources d'événements ne peut pas traduire le nom d'hôte en adresse IP, le message d'erreur suivant s'affiche :
« PROBLEM: The provided Kafka broker endpoints cannot be resolved. »
Pour résoudre ce problème, assurez-vous que le mappage des sources d'événements peut atteindre le serveur DNS qui traduit le nom d'hôte. Si le nom d'hôte du terminal se trouve sur un réseau privé, configurez le mappage des sources d'événements pour utiliser un VPC avec des paramètres DNS capables de résoudre les noms d'hôte.
Vérifiez la configuration des paramètres de votre serveur de mappage de sources d'événements
Si le serveur est différent de celui que vous avez configuré dans les paramètres de mappage des sources d'événements, le message d'erreur suivant s'affiche :
« PROBLEM: Server failed to authenticate Lambda or Lambda failed to authenticate server. »
Pour résoudre ce problème, vérifiez que le nom d'hôte du serveur indiqué dans vos paramètres correspond au nom interne du serveur auquel vous vous connectez.
Vérifiez que le mappage des sources d'événements est autorisé à interroger les enregistrements de la rubrique du cluster
Si le mappage des sources d'événements n'a pas accès aux enregistrements de sondage, le message d'erreur suivant s'affiche :
« PROBLEM: Cluster failed to authorize Lambda. »
Pour résoudre ce problème, configurez les autorisations requises afin d’autoriser Lambda pour votre cluster MSK ou votre cluster Kafka autogéré.
Informations connexes
- Sujets
- ServerlessCompute
- Balises
- AWS Lambda
- Langue
- Français

Contenus pertinents
- demandé il y a 2 ans
- demandé il y a 3 mois
- demandé il y a 2 ans
AWS OFFICIELA mis à jour il y a 3 ans