Comment puis-je configurer une fonction Lambda pour qu’elle se connecte à une instance RDS ?

Lecture de 8 minute(s)
0

J’aimerais que ma fonction AWS Lambda se connecte à une instance Amazon Relational Database Service (Amazon RDS).

Brève description

Remarque : les informations et étapes décrites ci-dessous concernent les instances Amazon RDS. Cette résolution s’applique également à tout point de terminaison ou base de données situé dans un cloud privé virtuel (VPC).

Vous devez définir les configurations de mise en réseau afin d’autoriser la connexion d’une fonction Lambda à une instance RDS.

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

  • Une fonction Lambda et une instance RDS au sein du même VPC
  • Une fonction Lambda et une instance RDS sur différents VPC

Pour des raisons de sécurité, il est recommandé de conserver votre instance RDS dans un VPC. Utilisez un service NoSQL tel qu’Amazon DynamoDB pour les bases de données publiques.

Une fonction Lambda située en dehors d’un VPC ne peut pas accéder à une instance RDS située dans un VPC.

Pour en savoir plus sur la configuration des paramètres réseau d’une fonction Lambda, consultez la page Configuration d’une fonction Lambda pour accéder aux ressources dans un VPC. En cas de configuration réseau incorrecte, la fonction Lambda échouera et affichera un message d’erreur de type Task timed out.

Pour connecter une fonction Lambda à un cluster de base de données Amazon Aurora, utilisez l’API de données pour Aurora sans serveur.

Résolution

Important : vous devez modifier tous les paramètres Plage de ports, Source et Destination fournis dans les exemples suivants conformément à vos propres configurations réseau. Le protocole TCP (Transmission Control Protocol) est le protocole requis pour chaque type de configuration réseau.

Une fonction Lambda et une instance RDS au sein du même VPC

Utilisez les configurations réseau suivantes pour connecter une fonction Lambda à une instance RDS au sein du même VPC.

Remarque : par défaut, tous les sous-réseaux d’un VPC contiennent une route locale. La destination est le routage inter-domaines sans classe (CIDR) du VPC et la cible est locale. Pour en savoir plus, consultez la page Concepts liés aux tables de routage.

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

Lorsque les instances sont rattachées au même groupe de sécurité, ce dernier doit être la source de la règle entrante. Définissez le groupe de sécurité comme destination de la règle sortante.

Par exemple, si la fonction Lambda et l’instance RDS figurent toutes deux dans le groupe de sécurité sg-abcd1234, chaque instance est soumise aux règles entrantes et sortantes suivantes.

Exemple de règle entrante applicable aux instances rattachées au même groupe de sécurité

TypeProtocolePlage de portsSource
TCP personnaliséTCP3306sg-abcd1234

Exemple de règle sortante applicable aux instances rattachées au même groupe de sécurité

TypeProtocolePlage de portsDestination
TCP personnaliséTCP3306sg-abcd1234

-ou-

Lorsque les instances appartiennent à des groupes de sécurité différents, vérifiez que ceux-ci s’autorisent un accès mutuel.

Par exemple, si la fonction Lambda se trouve dans le groupe de sécurité sg-1234 et l’instance RDS dans sg-abcd, les règles suivantes seront appliquées à chaque groupe :

Exemple de règle sortante applicable à une fonction Lambda appartenant à un groupe de sécurité différent de celui de l’instance RDS à laquelle vous souhaitez la connecter

TypeProtocolePlage de portsDestination
TCP personnaliséTCP3306sg-abcd

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

TypeProtocolePlage de portsSource
TCP personnaliséTCP3306sg-1234

Important : assurez-vous que les règles autorisent une connexion TCP sur le port de la base de données.

2.    Vérifiez que les règles entrantes et sortantes autorisent la communication entre la fonction Lambda et l’instance RDS pour les listes de contrôle d’accès au réseau (NACL).

Remarque : par défaut, les NACL autorisent tout le trafic entrant et sortant. Il est toutefois possible de modifier ces paramètres par défaut.

Pour chaque sous-réseau associé à l’instance RDS et à la fonction Lambda, configurez les NACL de manière à autoriser la connexion TCP sortante aux CIDR des sous-réseaux de l’autre instance.

Remarque : l’exemple suivant inclut quatre exemples de sous-réseaux étiquetés par leurs CIDR :
Sous-réseaux de la fonction Lambda : 172.31.1.0/24 et 172.31.0.0/28.
Sous-réseaux de l’instance RDS : 172.31.10.0/24 et 172.31.64.0/20.

Exemple de règles sortantes applicables aux NACL des sous-réseaux d’une fonction Lambda

TypeProtocolePlage de portsDestinationAutoriser/Refuser
TCP personnaliséTCP3306172.31.10.0/24Autoriser
TCP personnaliséTCP3306172.31.64.0/20Autoriser

Important : appliquez les mêmes règles sortantes aux NACL des sous-réseaux de l’instance RDS. Toutefois, la destination définie doit correspondre aux CIDR des sous-réseaux de la fonction Lambda.

Vérifiez que les NACL de chaque sous-réseau disposent bien d’une règle entrante sur les ports éphémères sur la plage CIDR des sous-réseaux de l’autre instance.

Exemple de règles entrantes applicables aux NACL des sous-réseaux d’une fonction Lambda

TypeProtocolePlage de portsSourceAutoriser/Refuser
TCP personnaliséTCP1024-65535172.31.10.0/24Autoriser
TCP personnaliséTCP1024-65535172.31.64.0/20Autoriser

Important : appliquez les mêmes règles entrantes aux NACL des sous-réseaux de l’instance RDS. Toutefois, la source doit correspondre aux CIDR des sous-réseaux de la fonction Lambda.

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

Avant toute chose, utilisez l’appairage de VPC pour connecter les deux VPC. Appliquez ensuite les configurations réseau suivantes pour connecter la fonction Lambda d’un VPC à l’instance RDS de l’autre :

Important : vous devez activer le système de nom de domaine (DNS) pour la connexion d’appairage de VPC.

1.    Pour la table de routage, confirmez le succès de la connexion d’appairage de VPC :
Pour la Destination, recherchez le CIDR du VPC appairé.
Pour la Cible, recherchez la connexion d’appairage.

Remarque : dans la figure ci-après, deux VPC sont présentés à titre d’exemple :

CIDR du VPC source (fonction Lambda) : 10.0.0.0/16

CIDR du VPC appairé (instance RDS) : 172.31.0.0/16

Connexion d’appairage : pcx-01234abcd

Exemple de table de routage pour un VPC source associé à la fonction Lambda

DestinationCible
172.31.0.0/16pcx-01234abcd
10.0.0.0/16locale

Exemple de table de routage pour un VPC appairé avec une instance RDS

DestinationCible
10.0.0.0/16pcx-01234abcd
172.31.0.0/16locale

Pour en savoir plus, consultez la page Mise à jour de vos tables de routage pour une connexion d’appairage de VPC.

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 :
Instance RDS : 172.31.0.0/16
Fonction Lambda : 10.0.0.0/16

Exemple de règle sortante applicable à une fonction Lambda située dans un VPC différent de celui de l’instance RDS

TypeProtocolePlage de portsDestination
TCP personnaliséTCP3306172.31.0.0/16

Pour le groupe de sécurité de l’instance RDS, autorisez le trafic à entrer et à sortir du CIDR du groupe de sécurité de la fonction Lambda.

Exemple de règle entrante applicable à une instance RDS située dans un VPC différent de celui de la fonction Lambda

TypeProtocolePlage de portsSource
TCP personnaliséTCP330610.0.0.0/16

3.    Pour les NACL, suivez les procédures détaillées à l’étape 3 de la section Une fonction Lambda et une instance RDS au sein du même VPC. L’origine du sous-réseau CIDR de la fonction Lambda se trouve dans un VPC différent.

Remarque : comme alternative à l’appairage de VPC, vous pouvez utiliser AWS PrivateLink pour accéder à Amazon RDS via les VPC. Cette solution fonctionne pour les VPC et les comptes AWS situés dans la même région AWS.


AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an