Passer au contenu

Comment accorder un accès Internet à une fonction Lambda connectée à Amazon VPC ?

Lecture de 6 minute(s)
0

Je souhaite accorder un accès Internet à ma fonction AWS Lambda dotée d’une connexion à un Amazon Virtual Private Cloud (Amazon VPC).

Brève description

Par défaut, les fonctions Lambda s'exécutent dans un VPC géré par Lambda qui dispose d'un accès Internet. Même lorsque vous associez une fonction Lambda à un sous-réseau public, elle ne peut pas se connecter à Internet car la fonction comporte une adresse IP privée.

Pour donner à votre fonction Lambda un accès Internet aux ressources d'un VPC de votre compte AWS, ajoutez une passerelle NAT ou une instance NAT. La configuration limite la fonction aux ressources du VPC, sauf si celui-ci dispose d'un accès Internet.

Remarque : Vous pouvez également utiliser les points de terminaison de VPC d’interface pour vous connecter aux services AWS pris en charge à partir d’une connexion Amazon VPC sans accès Internet.

Résolution

Vérifiez que les ressources suivantes accordent un accès Internet sortant à votre fonction Lambda :

Si l’une des ressources répertoriées ci-dessus ne permet pas à votre fonction Lambda d’accéder à Internet, vous devez la reconfigurer pour accorder à votre fonction un accès Internet. Vous pouvez exécuter AWSSupport-TroubleshootLambdaInternetAccess ou bien accorder manuellement un accès à Internet.

Utiliser le dossier d'exploitation AWSSupport-TroubleshootLambdaInternetAccess

Prérequis

Avant de démarrer le dossier d’exploitation, assurez-vous que votre utilisateur ou rôle Gestion des identités et des accès AWS (AWS IAM) dispose des autorisations requises. Pour plus d'informations, consultez la section Autorisations IAM requises de la rubrique AWSSupport-TroubleshootLambdaInternetAccess.

Procédez comme suit :

  1. Ouvrez la console Systems Manager.
  2. Dans le volet de navigation, développez Outils de gestion des modifications, puis sélectionnez Automatisation.
  3. Sélectionnez Exécuter le dossier d'exploitation.
  4. Choisissez l'onglet Appartenant à Amazon, puis recherchez TroubleshootLambdaInternetAccess.
  5. Choisissez la carte AWSSupport-TroubleshootLambdaInternetAccess.
    Remarque : Ne choisissez pas le nom de l'automatisation.
  6. Sélectionnez Suivant.
  7. Sélectionnez Exécuter.

Examinez la sortie du dossier d'exploitation pour déterminer la cause de la perte d'accès à Internet par votre fonction Lambda et comment résoudre le problème.

Accorder manuellement l'accès à Internet

Créer un sous-réseau public et un sous-réseau privé dans Amazon VPC

Créez un sous-réseau privé pour votre fonction Lambda et un sous-réseau public pour votre passerelle NAT. Dans le champ Identification de nom, saisissez un nom pour chaque sous-réseau qui l'identifie comme public ou privé. Par exemple, utilisez Sous-réseau public, Lambda privé 1 et Lambda privé 2.

Remarque : Il est recommandé de créer plusieurs sous-réseaux privés dans différentes zones de disponibilité. Cette action crée une redondance et permet à Lambda de maintenir une disponibilité élevée pour votre fonction.

Utiliser une passerelle Internet pour ajouter un accès Internet au sous-réseau

Créez une passerelle Internet. Puis, attachez-le à votre VPC.

Créer une passerelle NAT

Créez une passerelle NAT. Dans Sous-réseau, choisissez le sous-réseau que vous souhaitez rendre public. Par exemple, sélectionnez Sous-réseau public.

(Facultatif) Testez la configuration de votre passerelle NAT.

Créer deux tables de routage personnalisées

Remarque : Lorsqu'une fonction Lambda d'un VPC envoie des requêtes, elle sélectionne de manière aléatoire un sous-réseau associé. Si la fonction utilise un sous-réseau incorrectement configuré, un message d'erreur s'affiche. Pour éviter ce problème, assurez-vous d'utiliser la même configuration pour tous les sous-réseaux utilisés par votre fonction.

Pour configurer vos tables de routage personnalisées, procédez comme suit :

  1. Créez une table de routage pour le sous-réseau public et une autre pour le sous-réseau privé.
    Dans le champ Identification de nom, saisissez un nom pour chaque table de routage afin de vous aider à identifier le sous-réseau auquel elle est associée. Par exemple, utilisez Sous-réseau public et Lambda privé.
  2. Associez les sous-réseaux privés et publics aux tables de routage.
  3. Ajoutez une nouvelle route aux tables de routage et incluez les configurations suivantes :
    Dans Destination, saisissez 0.0.0.0/0.
    Dans Cible, choisissez Passerelle Internet pour le sous-réseau public et saisissez l'ID de la passerelle Internet. Choisissez Passerelle NAT pour le sous-réseau privé et saisissez l'ID de la passerelle NAT.
    Important : Si vous utilisez une instance NAT au lieu d'une passerelle NAT, sélectionnez Interface réseau au lieu de Passerelle NAT.
  4. Sélectionnez Enregistrer les routes.

Remarque : Vérifiez que les routes qui mènent à votre passerelle NAT sont à l’état Actif. Si vous supprimez la passerelle NAT et que vous n'avez pas mis à jour les routes, celles-ci indiquent l'état Blackhole.

Vérifier la configuration de votre ACL réseau

L'ACL réseau par défaut de votre VPC autorise l’intégralité du trafic entrant et sortant. Si vous modifiez les règles ACL réseau, vérifiez que vous autorisez toujours les requêtes sortantes provenant de votre fonction Lambda. Assurez-vous également que votre ACL réseau autorise le trafic entrant suivant :

  • Pour un sous-réseau privé qui utilise une passerelle NAT, autorisez le trafic entrant sur les ports éphémères 1024-65535.
  • Pour un sous-réseau privé qui utilise une instance NAT, autorisez le trafic entrant sur les ports éphémères qu'utilise le système d'exploitation de votre instance NAT.

Pour plus d’informations, consultez la section Garantir la confidentialité du trafic inter réseau dans Amazon VPC.

Créer un rôle d’exécution Lambda

Créez un rôle d'exécution Lambda pour votre VPC. Puis, mettez à jour la fonction Lambda pour utiliser le nouveau rôle d'exécution Lambda.

Configurer votre fonction Lambda pour la connecter à votre VPC

Attachez votre fonction à votre VPC. Dans Sous-réseaux, sélectionnez votre sous-réseau privé. Dans 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 est suffisant pour la plupart des cas d'utilisation. Pour en savoir plus, consultez la section Contrôler le trafic vers vos ressources AWS à l’aide de groupes de sécurité.

Pour les fonctions Lambda dotées d’une connexion Amazon VPC, vous pouvez utiliser une passerelle Internet de sortie uniquement pour accéder à Internet. Pour plus d'informations, consultez la section IPv6 support.

Informations connexes

Résolution des problèmes de réseaux dans Lambda

Comment puis-je résoudre les problèmes de délai d'expiration d’une fonction Lambda dans un réseau Amazon VPC ?

Comment puis-je résoudre une erreur ETIMEDOUT dans ma fonction Lambda ?

Permettre aux fonctions Lambda d'accéder aux ressources d'un Amazon VPC

Comment puis-je corriger les défaillances de la fonction Lambda ?