Comment puis-je accorder un accès Internet à ma fonction Lambda dans un VPC ?

Date de la dernière mise à jour : 22/07/2019

Je souhaite accorder un accès Internet à ma fonction AWS Lambda activée par Amazon Virtual Private Cloud (Amazon VPC). Comment faire ?

Brève description

Vous pourriez vouloir que votre fonction Lambda accède aux ressources de VPC privées (par exemple, une instance de base de données Relational Database Service [Amazon RDS] ou une instance Amazon Elastic Compute Cloud [Amazon EC2]). Pour configurer ceci, vous devez associer la fonction à un ou plusieurs sous-réseaux privés dans un VPC. Pour accorder un accès Internet à votre fonction, le VPC associé doit avoir une passerelle NAT (ou une instance NAT) dans un sous-réseau public.

La table de routage du sous-réseau déterminer si celui-ci est privé ou public. Un sous-réseau public dispose d'une route pointant vers une passerelle Internet, contrairement au sous-réseau privé.

Résolution

Si vous utilisez un VPC existant, commencez par l'étape Créer vos composants de VPC pour créer un sous-réseau public avec une passerelle NAT et un ou plusieurs sous-réseaux privés. Si votre VPC existant possède déjà un sous-réseau public avec une passerelle NAT et un ou plusieurs sous-réseaux privés, passez directement à l'étape Créer un rôle d'exécution Lambda pour Amazon VPC.

Si vous souhaitez créer un VPC pour cette configuration, utilisez l'assistant VPC, puis sélectionnez VPC with Public and Private Subnets (VPC avec des sous-réseaux publics et privés). (Dans la console Amazon VPC, vos sous-réseaux portent ainsi le nom de « Public subnet » [« Sous-réseau public »] et « Private subnet » [« Sous-réseau privé »].) Ensuite, passez directement à l'étape Créer un rôle d'exécution Lambda pour Amazon VPC.

Créer vos composants de VPC

  1. Créer deux sous-réseaux ou plus dans votre VPC. Au cours de la création, en regard de Name tag (Balise de nom), ajoutez un nom pour vous aider à identifier quel sous-réseau est public et quels sous-réseaux sont privés. Par exemple, nommez un des sous-réseaux Public Subnet (Sous-réseau public) et l'autre Private Lambda (Lambda privé) (ou Private Lambda 1 [Lambda privé 1], Private Lambda 2 [Lambda privé 2] et ainsi de suite, pour plusieurs sous-réseaux privés).
    Remarque : il est recommandé de créer plusieurs sous-réseaux privés dans différentes zones de disponibilité pour la redondance, et afin que Lambda puisse garantir une haute disponibilité pour votre fonction.
  2. Créez une passerelle Internet et attachez-la à votre VPC.
  3. Créez une passerelle NAT. Au cours de la création, pour Subnet (Sous-réseau), sélectionnez le sous-réseau que vous souhaitez rendre public. (Par exemple, Public Subnet [Sous-réseau public] si vous l'avez nommé ainsi précédemment.)

Créer et modifier les tables de routage de vos sous-réseaux

  1. Dans la console Amazon VPC, créez deux tables de routage personnalisées pour votre VPC.
    Conseil : au cours de la création, pour Name tag (Balise de nom), ajoutez un nom pour vous aider à identifier le sous-réseau auquel la table de routage est associée. Par exemple, nommez un sous-réseau Public Subnet (Sous-réseau public) et l'autre Private Lambda (Lambda privé).
  2. Associez la table de routage du sous-réseau public (Public subnet [Sous-réseau public]) au sous-réseau que vous souhaitez rendre public.
  3. Ajoutez une nouvelle route vers cette table de routage. Indiquez les informations suivantes :
    Dans le champ Destination, saisissez 0.0.0.0/0.
    Dans le champ Target (Cible), sélectionnez Internet Gateway (Passerelle Internet), puis l'ID (igw-…) de la passerelle Internet que vous avez créée.
    Sélectionnez Save routes (Enregistrer les routes). Le sous-réseau associé est désormais un sous-réseau public.
  4. Associez l'autre table de routage (Private Lambda [Lambda privé]) aux sous-réseaux privés.
  5. Ajoutez une nouvelle route vers cette table de routage. Indiquez les informations suivantes :
    Dans le champ Destination, saisissez 0.0.0.0/0.
    Pour Target (Cible), sélectionnez NAT Gateway (Passerelle NAT), puis l'ID (nat-…) de la passerelle NAT que vous avez créée. (Si vous utilisez une instance NAT, sélectionnez Network Interface [Interface réseau] à la place.)
    Sélectionnez Save routes (Enregistrer les routes).

Créer un rôle d'exécution Lambda pour Amazon VPC

  1. Dans la console AWS Identity and Access Management (IAM), dans le volet de navigation de gauche, sélectionnez Roles (Rôles).
  2. Dans le volet Roles (Rôles), sélectionnez Create role (Créer un rôle).
  3. Sur la page Create role (Créer un rôle), procédez comme suit :
    Dans la section Select type of trusted entity (Sélectionner le type d'entité de confiance), sélectionnez AWS service (Service AWS).
    Dans la section Choose the service that will use this role (Choisir le service qui utilisera ce rôle), sélectionnez Lambda.
    Sélectionnez Next: Permissions (Étape suivante : autorisations).
  4. Sous Attach permissions policies (Attacher les stratégies des autorisations), recherchez AWSLambdaVPCAccessExecutionRole. Sélectionnez la stratégie portant ce nom, puis sélectionnez Next: Tags (Étape suivante : balises).
  5. Vous pouvez ajouter des balises si vous le souhaitez, puis sélectionnez Next: Review (Étape suivante : vérification).
  6. Sous Review (Vérification), procédez comme suit :
    Pour Role name (Nom du rôle), saisissez un nom pour ce rôle d'exécution Lambda. Par exemple, lambda_vpc_basic_execution.
    (Facultatif) Pour le champ Role description (Description du rôle), modifiez la description selon vos préférences.
    Sélectionnez Create role (Créer un rôle).

Pour plus d'informations, consultez la section Rôle d'execution AWS Lambda.

Configurer votre fonction Lambda

  1. Dans la console Lambda, dans le volet de navigation de gauche, sélectionnez Functions (Fonctions).
  2. Sélectionnez le nom de la fonction que vous souhaitez connecter à votre VPC.
  3. Dans le volet Configuration, sous Execution role (Rôle d'exécution), pour le champ Existing role (Rôle existant), sélectionnez le rôle d'exécution IAM que vous avez créé (lambda_vpc_basic_execution).
  4. Dans le volet Configuration, sous Network (Réseau), procédez comme suit :
    Pour le champ Virtual Private Cloud (VPC), sélectionnez votre VPC.
    Pour le champ Subnets (Sous-réseaux), sélectionnez les sous-réseaux privés que vous avez créés. Identifiez-les par leurs ID de sous-réseau (ainsi que les noms, si vous les avez nommés).
    Pour le champ Security groups (Groupes de sécurité), sélectionnez un groupe de sécurité.
    Remarque : le groupe de sécurité par défaut autorise tout le trafic Internet sortant et s'avère être suffisant pour la plupart des cas d'utilisation. Pour plus d'informations, consultez la section Groupes de sécurité pour votre VPC.
  5. Sélectionnez Save (Enregistrer).