Comment résoudre les erreurs relatives aux délais d'expiration de Lambda lorsque je tente d'accéder à une instance de base de données Amazon RDS ?

Date de la dernière mise à jour : 19/04/2021

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 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 Amazon VPC.

Vérification des 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.