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 |
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 |
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 ?