Réseaux privés avec VPC - AWS Lambda

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Réseaux privés avec VPC

Amazon Virtual Private Cloud (Amazon VPC) est un réseau virtuel dans le AWS cloud, dédié à votre AWS compte. Vous pouvez utiliser Amazon VPC pour créer un réseau privé pour des ressources telles que des bases de données, des instances de mémoire cache ou des services internes. Pour plus d’informations sur Amazon VPC, veuillez consulter la section Qu’est-ce qu’Amazon VPC ?

Une fonction Lambda s’exécute toujours dans un VPC appartenant au service Lambda. Lambda applique des règles d’accès réseau et de sécurité à ce VPC, le maintient et le surveille automatiquement. Si votre fonction Lambda doit accéder aux ressources du VPC de votre compte, configurez la fonction pour accéder au VPC. Lambda fournit des ressources gérées appelées ENI Hyperplane, que votre fonction Lambda utilise pour se connecter du VPC Lambda à un ENI (interface réseau Elastic) dans le VPC de votre compte.

Il n’y a pas de frais supplémentaires pour l’utilisation d’un VPC ou d’une ENI Hyperplane. Des frais sont facturés pour certains composants VPC, tels que les passerelles NAT. Pour de plus amples informations, veuillez consulter la Tarification Amazon VPC.

Eléments réseau VPC

Les réseaux Amazon VPC incluent les éléments réseau suivants :

  • Interface réseau Elastic : une interface réseau Elastic est un composant réseau logique dans un VPC qui représente une carte réseau virtuelle.

  • Sous-réseau : une plage d’adresses IP dans votre VPC. Vous pouvez ajouter AWS des ressources à un sous-réseau spécifique. Utilisez un sous-réseau public pour les ressources qui doivent être connectées à Internet et un sous-réseau privé pour les ressources qui ne doivent pas y être connectées.

  • Groupe de sécurité : utilisez des groupes de sécurité pour contrôler l'accès aux AWS ressources de chaque sous-réseau.

  • Liste de contrôle d’accès (ACL) : utilisez un service ACL réseau pour fournir une sécurité supplémentaire dans un sous-réseau. L’ACL du sous-réseau par défaut autorise tout le trafic entrant et sortant.

  • Table de routage : contient un ensemble de routes AWS utilisées pour diriger le trafic réseau vers votre VPC. Vous pouvez associer explicitement un sous-réseau à une table de routage particulière. Par défaut, le sous-réseau est associé à la table de routage principale.

  • Route : chaque route d’une table de routage spécifie une plage d’adresses IP et la destination où Lambda envoie le trafic pour cette plage. La route spécifie également une cible, à savoir la passerelle, l’interface réseau ou la connexion par laquelle le trafic est à envoyer.

  • Passerelle NAT : service de traduction d'adresses AWS réseau (NAT) qui contrôle l'accès à Internet depuis un sous-réseau privé VPC privé.

  • Points de terminaison VPC : vous pouvez utiliser un point de terminaison Amazon VPC pour créer une connectivité privée aux services hébergés dans AWS, sans avoir besoin d'un accès via Internet ou via un appareil NAT, une connexion VPN ou une connexion. AWS Direct Connect Pour plus d'informations, consultez AWS PrivateLink et points de terminaison VPC.

Astuce

Pour configurer votre fonction Lambda afin d’accéder à un VPC et à un sous-réseau, vous pouvez utiliser la console Lambda ou l’API.

Reportez-vous à la VpcConfig section CreateFunctionci-dessous pour configurer votre fonction. Consultez Associer des fonctions Lambda à un Amazon VPC dans votre Compte AWS les étapes détaillées.

Pour de plus amples informations sur les définitions de mise en réseau d’Amazon VPC, veuillez consulter la section Fonctionnement d’Amazon VPC dans le Guide du développeur Amazon VPC et dans la FAQ sur Amazon VPC.

Connexion des fonctions Lambda à votre VPC

Une fonction Lambda s’exécute toujours dans un VPC appartenant au service Lambda. Par défaut, les fonctions Lambda ne sont pas connectées aux VPC de votre compte. Lorsque vous connectez une fonction à un VPC de votre compte, la fonction n’a pas accès à Internet, sauf si votre VPC le lui fournit.

Lambda accède aux ressources de votre VPC à l’aide d’une ENI Hyperplane. Les ENI Hyperplane fournissent des fonctionnalités NAT depuis le VPC Lambda vers le VPC de votre compte à l’aide du NAT VPC-to-VPC (V2N). V2N fournit une connectivité entre le VPC Lambda et le VPC de votre compte, mais pas dans l’autre sens.

Lorsque vous créez une fonction Lambda (ou mettez à jour ses paramètres VPC), Lambda alloue une ENI Hyperplane à chaque sous-réseau dans la configuration VPC de votre fonction. Plusieurs fonctions Lambda peuvent partager une interface réseau, si elles partagent le même sous-réseau et le même groupe de sécurité.

Pour vous connecter à un autre AWS service, vous pouvez utiliser les points de terminaison VPC pour les communications privées entre votre VPC et les services pris en charge. AWS Une autre approche consiste à utiliser une passerelle NAT pour acheminer le trafic sortant vers un autre AWS service.

Pour accorder à votre fonction l’accès à Internet, acheminez le trafic sortant vers une passerelle NAT dans un sous-réseau public. La passerelle NAT possède une adresse IP publique et peut se connecter à Internet via la passerelle Internet du VPC. Pour plus d’informations, veuillez consulter Activer l'accès à Internet pour les fonctions Lambda connectées au VPC.

Sous-réseaux partagés

Le partage VPC permet à plusieurs AWS comptes de créer leurs ressources applicatives, telles que les instances Amazon EC2 et les fonctions Lambda, dans des clouds privés virtuels (VPC) partagés et gérés de manière centralisée. Dans ce modèle, le compte propriétaire du VPC (propriétaire) partage un ou plusieurs sous-réseaux avec d'autres comptes (participants) appartenant à la même organisation. AWS

Pour accéder aux ressources privées, connectez votre fonction à un sous-réseau partagé privé dans votre VPC. Le propriétaire du sous-réseau doit partager un sous-réseau avec vous avant que vous puissiez y connecter une fonction. Le propriétaire du sous-réseau peut également annuler le partage du sous-réseau ultérieurement, supprimant ainsi la connectivité. Pour plus d’informations sur le partage, l’annulation du partage et la gestion des ressources VPC dans les sous-réseaux partagés, consultez Comment partager votre VPC avec d’autres comptes dans le guide Amazon VPC.

ENI Hyperplane Lambda

L’ENI Hyperplane est une ressource réseau gérée, créée et gérée par le service Lambda. Plusieurs environnements d’exécution dans le VPC Lambda peuvent utiliser une ENI Hyperplane pour accéder en toute sécurité aux ressources à l’intérieur des VPC de votre compte. Les ENI Hyperplane fournissent des capacités NAT depuis le VPC Lambda vers le VPC de votre compte.

Pour chaque sous-réseau, Lambda crée une interface réseau pour chaque ensemble unique de groupes de sécurité. Les fonctions du compte qui partagent la même combinaison de sous-réseau et de groupe de sécurité utiliseront les mêmes interfaces réseau. Les connexions établies via la couche Hyperplane sont automatiquement suivies, même si la configuration du groupe de sécurité ne requiert pas de suivi autrement. Les paquets entrants provenant du VPC qui ne correspondent pas aux connexions établies sont déposés sur la couche Hyperplane. Pour plus d'informations, consultez la section Suivi des connexions des groupes de sécurité dans le guide de l'utilisateur Amazon EC2.

Étant donné que les fonctions de votre compte partagent les ressources du service ENI, le cycle de vie de l’ENI est plus complexe que celui des autres ressources Lambda. Les sections suivantes décrivent le cycle de vie du service ENI.

Création d’ENI

Lambda peut créer des ressources ENI Hyperplane pour une fonction compatible VPC nouvellement créée ou pour une modification de configuration VPC d’une fonction existante. La fonction reste en attente pendant que Lambda crée les ressources nécessaires. Lorsque l’ENI Hyperplane est prête, la fonction passe à l’état actif et l’ENI devient disponible pour l’utilisation. Lambda peut nécessiter plusieurs minutes pour créer une ENI Hyperplane.

Pour une fonction compatible VPC nouvellement créée, toutes les invocations ou autres actions d’API opérant sur la fonction échouent jusqu’à ce que l’état de la fonction passe à actif.

Dans le cas d’un changement de configuration VPC d’une fonction existante, toutes les invocations de fonction continuent d’utiliser l’ENI Hyperplane associée à l’ancienne configuration du sous-réseau et du groupe de sécurité jusqu’à ce que l’état de la fonction passe à actif.

Si une fonction Lambda reste inactive pendant 30 jours, Lambda récupère les ENI Hyperplane inutilisés et définit l'état de la fonction sur inactif. L’invocation suivante amène Lambda à réactiver la fonction inactive. L’invocation échoue, et la fonction entre en état d’attente jusqu’à ce que Lambda achève la création ou l’allocation d’une ENI Hyperplane.

Pour de plus amples informations sur les états de fonction, veuillez consulter États de la fonction Lambda.

Gestion des ENI

Lambda utilise les autorisations du rôle d’exécution de votre fonction pour créer et gérer les interfaces réseau. Lambda crée une ENI Hyperplane lorsque vous définissez une combinaison unique de sous-réseau et groupe de sécurité pour une fonction activée par VPC dans un compte. Lambda réutilise l’ENI Hyperplane pour d’autres fonctions activées par VPC dans votre compte qui utilisent la même combinaison de sous-réseau et de groupe de sécurité.

Aucun quota n’est appliqué au nombre de fonctions Lambda pouvant utiliser la même ENI Hyperplane. Cependant, chaque ENI Hyperplane prend en charge jusqu’à 65 000 connexions/ports. Si le nombre de connexions dépasse 65 000, Lambda crée une nouvelle ENI Hyperplane pour fournir des connexions supplémentaires.

Lorsque vous mettez à jour la configuration de votre fonction pour accéder à un autre VPC, Lambda met fin à la connectivité à l’ENI Hyperplane dans le VPC précédent. Le processus de mise à jour de la connectivité à un nouveau VPC peut prendre plusieurs minutes. Pendant ce temps, les invocations à la fonction continuent d’utiliser le VPC précédent. Une fois la mise à jour terminée, les nouvelles invocations commencent à utiliser l’ENI Hyperplane dans le nouveau VPC. À ce stade, la fonction Lambda n’est plus connectée au VPC précédent.

Suppression d’ENI

Lorsque vous mettez à jour une fonction pour supprimer sa configuration VPC, Lambda peut prendre jusqu’à 20 minutes pour supprimer l’ENI Hyperplane associée. Lambda ne supprime l’ENI que si aucune autre fonction (ou version de fonction publiée) n’utilise cette ENI Hyperplane.

Lambda s’appuie sur les permissions du rôle d’exécution de la fonction pour supprimer l’ENI Hyperplane. Si vous supprimez le rôle d’exécution avant que Lambda ne supprime l’ENI Hyperplane, Lambda ne pourra pas la supprimer. Vous pouvez effectuer la suppression manuellement.

Lambda ne supprime pas les interfaces réseau qui sont utilisées par des fonctions ou des versions de fonctions dans votre compte. Vous pouvez utiliser le service Lambda ENI Finder pour identifier les fonctions ou les versions de fonctions qui utilisent une ENI Hyperplane. Pour toutes les fonctions ou versions de fonctions dont vous n’avez plus besoin, vous pouvez supprimer la configuration du VPC afin que Lambda supprime l’ENI Hyperplane.

Connexions

Lambda prend en charge deux types de connexions : TCP (Transmission Control Protocol) et UDP (User Datagram Protocol).

Lorsque vous créez un VPC, Lambda crée automatiquement un ensemble d’options DHCP et les associe au VPC. Vous pouvez configurer vos propres options DHCP définies pour votre VPC. Pour de plus amples informations, veuillez consulter la section Options DHCP Amazon VPC.

Amazon fournit un serveur DNS (le résolveur Amazon Route 53) pour votre VPC. Pour de plus amples informations, veuillez consulter la section Prise en charge du DNS dans votre VPC.

Prise en charge d’IPv6

Lambda prend en charge les connexions entrantes vers les points de terminaison publics à double pile de Lambda et les connexions sortantes vers les sous-réseaux VPC à double pile via IPv6.

Entrant

Pour invoquer votre fonction via IPv6, utilisez les points de terminaison publics à double pile de Lambda. Les points de terminaison à double pile prennent en charge à la fois IPv4 et IPv6. Les points de terminaison à double pile de Lambda utilisent la syntaxe suivante :

protocol://lambda.us-east-1.api.aws

Vous pouvez également utiliser les URL des fonctions Lambda pour appeler des fonctions via IPv6. Les points de terminaison URL de fonction ont le format suivant :

https://url-id.lambda-url.us-east-1.on.aws
Sortant

Votre fonction peut se connecter à des ressources dans des sous-réseaux VPC à double pile via IPv6. Cette option est désactivée par défaut. Pour autoriser le trafic IPv6 sortant, utilisez la console ou l'--vpc-config Ipv6AllowedForDualStack=trueoption associée à la fonction ou à la commande create-function. update-function-configuration

Note

Pour autoriser le trafic IPv6 sortant dans un VPC, tous les sous-réseaux connectés à la fonction doivent être des sous-réseaux à double pile. Lambda ne prend pas en charge les connexions IPv6 sortantes pour les sous-réseaux IPv6 uniquement dans un VPC, les connexions IPv6 sortantes pour les fonctions qui ne sont pas connectées à un VPC, ou les connexions IPv6 entrantes utilisant des points de terminaison VPC (AWS PrivateLink).

Vous pouvez mettre à jour votre code de fonction pour vous connecter explicitement aux ressources du sous-réseau via IPv6. L’exemple Python suivant ouvre un connecteur logiciel et se connecte à un serveur IPv6.

Exemple — Connexion au serveur IPv6
def connect_to_server(event, context): server_address = event['host'] server_port = event['port'] message = event['message'] run_connect_to_server(server_address, server_port, message) def run_connect_to_server(server_address, server_port, message): sock = socket.socket(socket.AF_INET6, socket.SOCK_STREAM, 0) try: # Send data sock.connect((server_address, int(server_port), 0, 0)) sock.sendall(message.encode()) BUFF_SIZE = 4096 data = b'' while True: segment = sock.recv(BUFF_SIZE) data += segment # Either 0 or end of data if len(segment) < BUFF_SIZE: break return data finally: sock.close()

Sécurité

AWS fournit des groupes de sécurité et des ACL réseau pour renforcer la sécurité de votre VPC. Les groupes de sécurité contrôlent le trafic entrant et sortant de vos ressources, et les ACL de réseau contrôlent le trafic entrant et sortant de vos sous-réseaux. Les groupes de sécurité offrent un contrôle d’accès suffisant pour la plupart des sous-réseaux. Vous pouvez utiliser les ACL réseau si vous souhaitez ajouter une couche de sécurité supplémentaire à votre VPC. Pour de plus amples informations, veuillez consulter la section Confidentialité du trafic inter-réseau dans Amazon VPC. Chaque sous-réseau que vous créez est automatiquement associé à l’ACL réseau par défaut de votre VPC. Vous pouvez modifier cette association, mais aussi le contenu de l’ACL réseau par défaut.

Pour connaître les bonnes pratiques de sécurité générales, veuillez consulter les Bonnes pratiques de sécurité VPC. Pour plus de détails sur la façon dont vous pouvez utiliser IAM pour gérer l’accès à l’API et aux ressources Lambda, veuillez consulter les autorisations AWS Lambda.

Vous pouvez utiliser des clés de condition spécifiques de Lambda pour les paramètres du VPC afin de fournir des contrôles d’autorisation supplémentaires pour vos fonctions Lambda. Pour de plus amples informations sur les clés de condition VPC, veuillez consulter la section Utilisation des clés de condition IAM pour les paramètres du VPC.

Note

Les fonctions Lambda peuvent être invoquées à partir de l’Internet public ou de points de terminaison AWS PrivateLink. Vous pouvez accéder aux URL de votre fonction via l’Internet public uniquement. Bien que les fonctions Lambda soient compatibles AWS PrivateLink, les URL des fonctions ne le sont pas.

Observabilité

Vous pouvez utiliser les journaux de flux VPC pour capturer des informations sur le trafic IP entrant et sortant des interfaces réseau dans votre VPC. Vous pouvez publier les données du journal Flow sur Amazon CloudWatch Logs ou Amazon S3. Une fois que vous avez créé un journal de flux, vous pouvez extraire et afficher ses données dans la destination choisie.

Remarque : lorsque vous attachez une fonction à un VPC, les messages du CloudWatch journal n'utilisent pas les routes VPC. Lambda les envoie en utilisant le routage normal des journaux.