Comment configurer une fonction Lambda pour se connecter à une instance RDS ?

Dernière mise à jour : 05/01/2021

Je veux que ma fonction AWS Lambda se connecte à une instance de service de base de données relationnelle (RDS). Comment puis-je configurer les paramètres réseau pour le faire ?

Brève description

Pour connecter une fonction Lambda à une instance RDS, les configurations réseau de chacune doivent être définies pour permettre la connexion.

Il existe différents paramètres de configuration pour chacun des types de connexion suivants :

  • Une fonction Lambda et une instance RDS dans le même cloud privé virtuel (VPC)
  • Une fonction Lambda et une instance RDS dans différents VPC
  • Une fonction Lambda et une instance RDS publique

Pour plus d'informations sur la configuration des paramètres réseau d'une fonction Lambda, consultez Configuration de l'accès VPC avec la console Lambda. Pour connecter une fonction Lambda à un cluster de base de données Aurora, utilisez l'API de données pour Aurora sans serveur.

Remarque : si les paramètres réseau sont incorrects, la fonction Lambda expirera et affiche un message d'erreur Tâche expiré.

Résolution

Important : assurez-vous de modifier chaque paramètre Plage de ports, Sourceet Destination fournis dans les exemples suivants pour qu'ils correspondent à vos propres configurations réseau. Le protocole de contrôle de transmission (TCP) est le protocole requis pour chaque type de configuration de réseau.

Une fonction Lambda et une instance RDS dans le même VPC

Utilisez les configurations réseau suivantes lors de la connexion d'une fonction Lambda à une instance RDS dans le même VPC.

Remarque : tous les sous-réseaux d'un VPC contiennent par défaut une route locale. La destination est le routage interdomaine sans classe (CIDR) du VPC et la cible est locale. Pour plus d'informations, consultez Tables de routage.

1.    Pour les groupes de sécurité, utilisez l'un des paramètres réseau suivants :

Pour les instances attachées au même groupe de sécurité, faites du groupe de sécurité la source de la règle entrante et la destination de la règle sortante.

Par exemple, si la fonction Lambda et l'instance RDS sont toutes deux dans le groupe de sécurité sg-abcd1234, chaque instance aurait les règles entrantes et sortantes suivantes.

Exemple de règle entrante pour les instances attachées au même groupe de sécurité

Type Protocole Plage de ports Source
TCP personnalisé TCP 3306 sg-abcd1234

Exemple de règle sortante pour les instances attachées au même groupe de sécurité

Type Protocole Plage de ports Destination
TCP personnalisé TCP 3306 sg-abcd1234

-ou-

Pour les instances de différents groupes de sécurité, assurez-vous que les deux groupes de sécurité autorisent l'accès les uns aux autres.

Par exemple, si la fonction Lambda se trouve dans le groupe de sécurité sg-1234 et que l'instance RDS est dans sg-abcd, chaque groupe aurait les règles suivantes :

Exemple de règle sortante pour une fonction Lambda dans un groupe de sécurité différent de l'instance RDS à laquelle vous souhaitez la connecter

Type Protocole Plage de ports Destination
TCP personnalisé TCP 3306 sg-abcd

Exemple de règle entrante pour une instance RDS dans un groupe de sécurité différent de la fonction Lambda à laquelle vous souhaitez la connecter

Type Protocole Plage de ports Source
TCP personnalisé TCP 3306 sg-1234
Important : assurez-vous que les règles autorisent une connexion TCP sur le port de la base de données.

2.    Pour les listes de contrôle d'accès réseau (NACL), assurez-vous que les règles entrantes et sortantes permettent la communication entre la fonction Lambda et l'instance RDS.    

Remarque : par défaut, les NACL autorisent tout le trafic entrant et sortant. Toutefois, ces paramètres par défaut peuvent être modifiés.

Lors de la configuration des NACL, procédez comme suit :

Assurez-vous que les NACL pour chaque sous-réseau associé à l'instance RDS et à la fonction Lambda autorisent la connexion TCP sortante aux CIDR des sous-réseaux de l'autre instance.

Remarque : l'exemple suivant utilise quatre exemples de sous-réseaux étiquetés par leur CIDR :
Pour les sous-réseaux de la fonction Lambda, 172.31.1.0/24 et 172.31.0.0/28.
Pour les sous-réseaux de l'instance RDS, 172.31.10.0/24 et 172.31.64.0/20.

Exemples de règles sortantes pour les NACL d'une fonction Lambda

Type Protocole Plage de ports Destination Autoriser/refuser
TCP personnalisé TCP 3306 172.31.10.0/24 Autoriser
TCP personnalisé TCP 3306 172.31.64.0/20 Autoriser

Important : les mêmes règles sortantes doivent également être appliquées aux NACL des sous-réseaux de l'instance RDS, mais avec la destination définie comme CIDR des sous-réseaux Lambda.

Assurez-vous que les NACL de chaque sous-réseau ont également une règle entrante sur les ports éphémères sur la plage CIDR des sous-réseaux de l'autre instance.

Exemples de règles entrantes pour les NACL d'une fonction Lambda

Type Protocole Plage de ports Source Autoriser/refuser
TCP personnalisé TCP 1024-65535 172.31.10.0/24 Autoriser
TCP personnalisé TCP 1024-65535 172.31.64.0/20 Autoriser

Important : les mêmes règles entrantes doivent être appliquées aux NACL des sous-réseaux de l'instance RDS, mais avec la source définie comme CIDR des sous-réseaux Lambda.

Une fonction Lambda et une instance RDS dans différents VPC

Tout d'abord, connectez les deux VPC à l'aide de l'appairage de VPC. Ensuite, utilisez les configurations réseau suivantes pour connecter la fonction Lambda d'un VPC à l'instance RDS dans l'autre :

Important : assurez-vous que la résolution DNS (Domain Name Server) de la connexion d'appairage du VPC est activée.

1.    Pour la table de routage, vérifiez que la connexion d'appairage du VPC a réussi en recherchant les éléments suivants :
Pour la Destination, recherchez le CIDR du VPC appairé.
Pour la cible, recherchez la connexion d'appairage.

Remarque : l'exemple suivant inclut deux exemples de sous-réseaux étiquetés par leur CIDR :

Pour le VPC appairé, 172.31.0.0/16. Pour la connexion d'appairage, pcx-01234abcd.

Exemple de table de routage pour une fonction Lambda et une instance RDS dans différents VPC

Destination Cible
172.31.0.0/16 pcx-01234abcd
10.0.0.0/16 local

2.    Pour les groupes de sécurité, utilisez les paramètres réseau suivants :

Pour le groupe de sécurité de la fonction Lambda, assurez-vous que le trafic est autorisé à entrer et sortir du CIDR du VPC de l'instance RDS.

Remarque : l'exemple suivant inclut deux exemples de sous-réseaux étiquetés par leur CIDR :
Pour l'instance RDS, 172.31.0.0/16
Pour la fonction Lambda, 10.0.0.0/16

Exemple de règle sortante pour une fonction Lambda dans un VPC différent de l'instance RDS

Type Protocole Plage de ports Destination
TCP personnalisé TCP 3306 172.31.0.0/16
Pour le groupe de sécurité de l'instance RDS, assurez-vous que le trafic est autorisé à entrer et sortir du CIDR du groupe de sécurité de la fonction Lambda.

Exemple de règle entrante pour une instance RDS dans un VPC différent de la fonction Lambda

Type Protocole Plage de ports Source
TCP personnalisé TCP 3306 10.0.0.0/16

3.    Pour les NACL, suivez les procédures de l'étape 3 d'Une fonction Lambda et une instance RDS dans le même VPC, ci-dessus. L'origine du sous-réseau CIDR de la fonction Lambda se trouve dans un autre VPC.

Une fonction Lambda et une instance RDS publique

1.    Assurez-vous que le routage DNS est activé sur le VPC.

2.    Utilisez l'une des configurations réseau suivantes :

Pour les fonctions Lambda dans le même VPC que l'instance RDS publique, consultez Une fonction Lambda et une instance RDS dans le même VPC, ci-dessus.

Remarque : la fonction Lambda ne nécessite pas d'accès à Internet. Elle résout le RDS en utilisant son adresse IP privée.

-ou-

Pour les fonctions Lambda et les instances RDS publiques dans différents VPC, consultez Une fonction Lambda et une instance RDS dans différents VPC, ci-dessus.

Remarque : les fonctions Lambda qui ne sont pas dans un VPC disposent automatiquement d'un accès Internet et peuvent résoudre l'adresse IP d'une instance RDS publique.

3.    Assurez-vous que ce qui suit est vrai pour vos configurations RDS publiques : Les sous-réseaux attachés à l'instance RDS sont publics (route par défaut vers IGW). Toutes les NACL autorisent tous les accès entrants et sortants. Les groupes de sécurité autorisent toutes les connexions entrantes.

Remarque : si l'accès NACL doit être restreint, assurez-vous que la NACL autorise toujours la connexion vers et depuis les plages CIDR VPC ou EC2 de Lambda. Assurez-vous que la connexion sortante est définie sur le port de la base de données et que la connexion entrante est définie sur les ports éphémères (1024-65535). Si l'accès entrant d'un groupe de sécurité doit être restreint, assurez-vous que le groupe autorise toujours l'accès entrant à partir des plages CIDR VPC ou EC2 de Lambda.


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?