Ma fonction AWS Lambda reçoit des erreurs relatives aux délais d'expiration lorsque je tente d'accéder à une instance de base de données Amazon Relational Database Service (Amazon RDS). Comment résoudre ces erreurs ?
Solution
Résoudre les erreurs intermittentes et temporaires relatives aux délais d'expiration
Capturer les événements de la fonction Lambda et les relancer dans le cadre de la gestion des erreurs de votre fonction
Pour obtenir plus d'informations, consultez la section Gestion des erreurs et tentatives automatiques dans AWS Lambda.
Vérification des erreurs de DNS
Vérifiez si le système de noms de domaine (DNS) présente des erreurs. S'il y a des erreurs de DNS, corrigez-les. Ensuite, relancez la requête de DNS à l'aide d'un backoff exponentiel. Pour plus d'informations, consultez Nouvelles tentatives après erreur et backoff exponentiel dans AWS.
Remarque : assurez-vous que vous êtes en mesure de résoudre les points de terminaison entrants et sortants avant de relancer la requête de DNS.
Résolution des erreurs de délai de connexion cohérents
Vérification des journaux Amazon CloudWatch Logs de la fonction Lambda
Si vous ne l'avez pas encore fait, accordez des autorisations de journalisation CloudWatch à votre fonction Lambda. Ensuite, examinez les journaux de votre fonction pour identifier les erreurs de délai de connexion spécifiques.
Pour plus d'informations, consultez Surveillance et dépannage des applications Lambda.
Vérification de la configuration du VPC
Pour les bases de données privées, effectuez l'une des opérations suivantes, en fonction de votre cas d'utilisation :
Placez votre fonction Lambda dans le même Amazon Virtual Private Cloud (Amazon VPC) que la base de données.
-ou-
Créez une connexion d'appairage de VPC entre le VPC Amazon incluant votre fonction et celui qui comporte votre base de données.
Pour les bases de données publiques, procédez comme suit :
(Pour les fonctions dans un Amazon VPC) Acheminez le trafic public via une passerelle de traduction d'adresses réseau (NAT) ou une instance NAT. Pour plus d'informations, consultez Comment accorder l'accès à Internet à une fonction Lambda connectée à un Amazon VPC ?
Remarque : si la base de données est accessible publiquement et qu'elle ne comporte aucune restriction basée sur l'adresse IP, suivez les instructions contenues dans le Didacticiel : Configuration d'une fonction Lambda pour accéder à Amazon RDS dans un VPC Amazon.
Vérifier les règles du groupe de sécurité
Pour les bases de données privées, procédez comme suit :
Ajoutez une règle entrante à votre groupe de sécurité de base de données, qui autorise le trafic à partir de la plage CIDR des sous-réseaux ou du groupe de sécurité du VPC.
Pour les bases de données publiques, procédez comme suit :
Ajoutez une règle entrante à votre groupe de sécurité de base de données, qui autorise le trafic à partir de la passerelle NAT ou de l'instance NAT du VPC.
Mettre à jour le gestionnaire de la fonction Lambda
Mettez à jour le code de votre fonction Lambda de sorte que la fonction ouvre la connexion de base de données hors du gestionnaire de fonction et n'interrompe pas ladite connexion.
Remarque : en raison de la façon dont Lambda réutilise les conteneurs, Lambda ne réinitialise pas le code qui est hors d'un gestionnaire de fonction lorsque le conteneur est réutilisé. Il est recommandé de créer la connexion que vous envisagez de réutiliser en dehors du gestionnaire afin qu'elle soit toujours disponible à chaque appel suivant. Assurez-vous de confirmer qu'il existe une connexion valide avant de tenter de l'utiliser. S'il n'y a pas de connexion valide, créez-en une avant de continuer.
Connexion à l'aide d'une instance EC2
En guise de test, lancez une instance Amazon Elastic Compute Cloud (Amazon EC2) avec la même configuration Amazon VPC que votre fonction Lambda. Essayez ensuite de vous connecter à l'instance de base de données Amazon RDS à partir de l'instance EC2.
Si vous ne parvenez pas à vous connecter à la base de données, suivez les instructions contenues dans Résolution des problèmes de réseaux dans Lambda.
-ou-
Si vous ne parvenez pas à vous connecter à la base de données, suivez les instructions contenues dans Comment puis-je résoudre les problèmes de connexion à mon instance de base de données Amazon RDS ?
Utiliser le proxy Amazon RDS
Créez un point de terminaison de proxy Amazon Relational Database Service (Amazon RDS) pour votre base de données RDS afin de gérer le trafic à l'aide de votre fonction Lambda. Pour plus d'informations, consultez Utilisation du proxy Amazon RDS avec AWS Lambda.
Remarque : désormais, la prise en charge du proxy Amazon RDS pour MySQL et PostgreSQL est généralement disponible.
Informations connexes
Configuration de l'accès à une base de données pour une fonction Lambda
Utilisation d'AWS Lambda avec Amazon RDS
Comment puis-je résoudre les problèmes de connectivité à une instance Amazon RDS qui utilise le sous-réseau public ou privé d'un VPC ?