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

Dernière mise à jour : 11/08/2022

Je veux que ma fonction AWS Lambda se connecte à une instance Amazon Relational Database Service (Amazon RDS). Comment puis-je configurer les paramètres réseau pour le faire ?

Brève description

Remarque : les informations et étapes suivantes font référence aux instances Amazon RDS. Toutefois, la solution s'applique également à tout point de terminaison ou base de données situé dans un cloud privé virtuel (VPC).

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 VPC
  • Une fonction Lambda et une instance RDS dans différents VPC

Pour des raisons de sécurité, c'est une bonne pratique de garder votre instance RDS dans un VPC. Pour les bases de données publiques, utilisez un service de base de données NoSQL tel qu'Amazon DynamoDB.

Une fonction Lambda qui se trouve en dehors d'un VPC ne peut pas accéder à une instance RDS qui se trouve dans un VPC.

    Pour plus d'informations sur la configuration des paramètres réseau d'une fonction Lambda, consultez Configuration d'une fonction Lambda pour accéder aux ressources d'un VPC. Si les paramètres réseau sont incorrects, la fonction Lambda expire et affiche un message d'erreur Task timed out (Tâche expirée).

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

    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 inter-domaines sans classe (CIDR) du VPC et la cible est local (locale). Pour plus d'informations, consultez Concepts liés aux 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 possède 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 l'un à l'autre.

    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 possède 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 voulez 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. Vous pouvez toutefois modifier ces paramètres par défaut.

    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, confirmez que la connexion d'appairage de 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 précédentes de l'étape trois de la section Une fonction Lambda et une instance RDS dans le même VPC. L'origine du CIDR du sous-réseau de la fonction Lambda se trouve dans un autre VPC.


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


    Avez-vous besoin d'aide pour une question technique ou de facturation ?