AWS Elastic IP globale pour un VPC

30/05/2020

Introduction

Utiliser une adresse IP statique (Elastic IP) avec votre fonction Lambda en créant et configurant un nouveau VPC.

Cas d’utilisation

Sur un logiciel de distribution de flux d’annonces, on a décidé d’utiliser les événements S3 avec Lambda pour détecter lorsqu’un fichier est déposé dans un bucket S3.
Lorsqu’un fichier est détecté, on a besoin d’accéder à la base de données pour aller chercher des informations concernant ce fichier.
La base de données à une restriction d’IP, et on ne peut pas savoir ou assigner une IP à une fonction Lambda, mais on peut choisir le VPC utilisé par la fonction.

Pour gérer ce souci, j’ai crée et configuré un nouveau VPC pour qu’il utilise une et une seule IP statique que j’ai crée via EC2 Elastic IP.
Une fois que le VPC est configuré, il suffit juste de l’utiliser dans la fonction Lambda, et la fonction Lambda utilisera toujours cette même adresse IP statique.

Mise en place

AWS Elastic IP

Créer un VPC

Il faut créer un VPC si vous n’en avez aucun.

Dans la page de création d’un VPC vous devez renseigner les champs suivants:

Nom: nommez votre VPC

Bloc d’adresse CIDR IPv4: Plage d’adresses IPv4 à utiliser pour votre VPC dans un format CIDR.
Voici un convertisseur d’adresses CIDR en IPv4 pour vous aider: https://www.ipaddressguide.com/cidr
Exemple: 10.0.0.0/16 => 10.0.0.0 → 10.0.255.255 (65536 total IPs)

Bloc d’adresse CIDR IPv6: Possibilité d’associer un bloc d’adresse CIDR IPv6 fourni par Amazon au VPC. (optionnel)

Location: Vous avez la possibilité pour les instances exécutes sur ce VPC soient sur du matériel dédié.
Si vous n’avez pas de besoin particulier pour cela, vous pouvez le laisser a “Par défaut“

Créer une nouvelle passerelle Internet

Comme vous l’avez sûrement déjà deviné cette passerelle va permettre au VPC d’accéder a l’Internet.

Pour créer la passerelle Internet, il faut juste la nommer et appuyer sur Créer.
Une fois que cette passerelle est créée, il faut l’attacher au VPC.
Pour faire cela, il faut cocher la passerelle que vous venez de creer, et en appuyant sur le bouton “Actions”, vous verrez plusieurs options apparaître, il faut choisir “Associer au VPC“ et ensuite choisir le VPC a qui vous voulez associer la passerelle.

Créations des Sous-réseaux

Il nous faut un Sous-réseau qu’on va utiliser en tant que public et un ou plusieurs qu’on va utiliser en tant que privée.
La fonction Lambda sera exécuté dans le Sous-réseau privée, du coup selon vos besoins, il recommande de créer plusieurs Sous-réseaux privées par région.

Pour créer un Sous-réseau il faut renseigner les champs suivants:

Balise Nom: Nommez votre Sous-réseau
VPC: Associez le avec votre VPC récemment crée.
Zone de disponibilité: La région dans laquelle va se trouver le sous-réseau.
Bloc d’adresse CIDR IPv4: Plage d’adresses IPv4 à utiliser pour votre Sous-réseau dans un format CIDR.
Attention: Les tailles de bloc doivent être comprises entre un masque réseau en /16 et un masque réseau en /28, et peuvent être identiques à la taille du Sous-réseau.
Exemple: 10.0.11.0/24 = 10.0.11.0 → 10.0.11.255 (256 total IPs)

Une fois que vous avez crée le sous-réseau publique, il faut créer celui qui sera privée.
Vous pouvez créer le Sous-réseau privée en entrant un nom, en choisissant le VPC, la zone de disponibilite et enfin le bloc d’adresse CIDR IPv4 qui doit différer de celui du publique tout en restant entre la plage d’adresses du VPC.
Exemple: 10.0.2.0/24, 10.0.21.0/24, 10.0.22.0/24

Création d’une adresse Elastic IP

Pour créer une adresse ip Elastic IP, vous devez vous rendre dans le menu “Adresses IP Elastic“ et puis créer une adresse en appuyant sur le bouton “Allouer une nouvelle adresse“, rien de plus simple !

Création d’une passerelle NAT

Pour créer une passerelle NAT c’est très simple, vous allez dans le menu “Passerelles NAT“ et faut créer la passerelle en choisissant le Sous-réseau publique et l’adresse Elastic IP crées récemment.

Créations des tables de routage

Il faut maintenant créer 2 tables de routage, une pour le sous-réseau publique et une pour le ou les sous-réseaux privées.

Pour créer une table de routage, vous devez renseigner les champs suivants:
Balise Nom: nommez la table Ex: lambda-public-routes
VPC: Choisissez le VPC crée récemment

Une fois que vous avez créée la table, il faut l’associer au sous-réseau correspondant.
Pour faire cela vous devez cocher la table créée et appuyez sur “modifier des associations de sous-réseau“ depuis le menu déroulant du bouton “Actions

Une fois dans le menu, choisissez le sous-réseau correspondant et cliquez sur Enregistrer.
Attention, n’oubliez pas que vous devez créer 2 tables de routage, une pour le sous-réseau publique et une autre pour le ou les sous-réseaux privées.

Ajout des routes dans les tables de routage

Une fois que vous avez créer et associe les 2 tables de routages avec les sous-réseaux correspondants, il faut maintenant ajouter une route dans les 2 tables.
Vous pouvez modifier les routes d’une table en la cochant et en choisissant “modifier des routes“ depuis le menu déroulant du bouton “Actions”, cela va vous la page suivante:

ensuite vous devez ajouter une route dans les 2 tables de routage que vous avez crées.
Dans la table de routage qui est associé aux sous-réseaux privées, vous devez ajouter une route dont le champ “Destination“ est égal a “0.0.0.0/0“ et le champ “Cible“ est égal a la Passerelle NAT que vous avez crée récemment.

Et puis vous devez faire la même chose dans la table de routage qui est associe au sous-réseau publique mais dans le champ “Cible“ vous devez choisir la Passerelle Internet que vous avez crée récemment.

Et voila, le VPC est désormais prêt a être utilisé, il faut maintenant que votre fonction Lambda utilise ce VPC et le(s) sous-réseau(x) privée(s).

Utilisation du VPC dans Lambda

Dans un premier temps il faut choisir le VPC qu’on vient de mettre en place dans la page d’édition de la fonction Lambda.

Une fois que vous avez choisi le VPC, vous verrez apparaître les champs “Sous-réseaux“ et “Groupes de sécurité.“
Dans le champ “Sous-réseaux“ vous devez choisir le ou les sous-réseaux privées que vous avez crées récemment.

Et maintenant vous n’avez qu’a sauvegarder la fonction Lambda.
Attention: pour que tout cela fonctionne, vous devez donner les permissions nécessaires au rôle de la fonction Lambda.
Vous pouvez voir les permissions du rôle de la fonction en cliquant sur le lien “Affichez le rôle ******“ affiche sur l’image suivante:

Posted in AWSTags:
Write a comment