Configuration de votre cluster Amazon MSK et de votre réseau Amazon VPC pour Lambda - 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.

Configuration de votre cluster Amazon MSK et de votre réseau Amazon VPC pour Lambda

Pour connecter votre fonction AWS Lambda à votre cluster Amazon MSK, vous devez configurer correctement votre cluster et l’instance Amazon Virtual Private Cloud (VPC) dans laquelle il réside. Cette page décrit comment configurer votre cluster et votre VPC. Si votre cluster et votre VPC sont déjà correctement configurés, consultez Configuration de source d’événements Amazon MSK pour Lambda pour configurer le mappage des sources d’événements.

Présentation des exigences de configuration réseau pour les intégrations Lambda et MSK

La configuration réseau requise pour une intégration Lambda et MSK dépend de l’architecture réseau de votre application. Trois ressources principales sont impliquées dans cette intégration : le cluster Amazon MSK, la fonction Lambda et le mappage des sources d’événements Lambda. Chacune de ces ressources réside dans un VPC différent :

  • Votre cluster Amazon MSK réside généralement dans un sous-réseau privé d’un VPC que vous gérez.

  • Votre fonction Lambda réside dans un VPC géré par AWS appartenant à Lambda.

  • Votre mappage des sources d’événements Lambda réside dans un autre VPC géré par AWS appartenant à Lambda, distinct du VPC qui contient votre fonction.

Le mappage des sources d’événements est la ressource intermédiaire entre le cluster MSK et la fonction Lambda. Le mappage des sources d’événements effectue deux tâches principales. Tout d’abord, il interroge votre cluster MSK à la recherche de nouveaux messages. Ensuite, il invoque votre fonction Lambda avec ces messages. Étant donné que ces trois ressources se trouvent dans des VPC différents, les opérations d’interrogation et d’invocation nécessitent des appels réseau entre VPC.

Les exigences de configuration réseau pour votre mappage des sources d’événements varient selon qu’il utilise le mode provisionné ou le mode à la demande, comme le montre le schéma suivant :

Comparaison des appels réseau pour les ESM Kafka en mode à la demande par rapport au mode provisionné

La façon dont le mappage des sources d’événements Lambda interroge votre cluster MSK à la recherche de nouveaux messages est la même dans les deux modes. Pour établir une connexion entre votre mappage des sources d’événements et votre cluster MSK, Lambda crée une ENI Hyperplane (ou réutilise une ENI existante, si disponible) dans votre sous-réseau privé afin d’établir une connexion sécurisée. Comme illustré dans le schéma, cette ENI Hyperplane utilise la configuration du sous-réseau et du groupe de sécurité de votre cluster MSK, et non votre fonction Lambda.

Après avoir interrogé le message du cluster, la façon dont Lambda invoque votre fonction est différente dans chaque mode :

  • En mode provisionné, Lambda gère automatiquement la connexion entre le VPC du mappage des sources d’événements et le VPC de la fonction. Vous n’avez donc pas besoin de composants de mise en réseau supplémentaires pour invoquer votre fonction avec succès.

  • En mode à la demande, votre mappage des sources d’événements Lambda invoque votre fonction via un chemin passant par votre VPC géré par le client. Pour cette raison, vous devez configurer soit une passerelle NAT dans le sous-réseau public de votre VPC, soit des points de terminaison AWS PrivateLink dans le sous-réseau privé du VPC qui fournissent un accès à Lambda, AWS Security Token Service (STS) et éventuellement AWS Secrets Manager. La configuration correcte de l’une ou l’autre de ces options permet d’établir une connexion entre votre VPC et le VPC d’environnement d’exécution géré par Lambda, ce qui est nécessaire pour invoquer votre fonction.

Une passerelle NAT permet aux ressources de votre sous-réseau privé d’accéder à l’Internet public. L’utilisation de cette configuration signifie que votre trafic traverse Internet avant d’invoquer la fonction Lambda. Les points de terminaison AWS PrivateLink permettent aux sous-réseaux privés de se connecter en toute sécurité aux services AWS ou à d’autres ressources VPC privées sans passer par l’Internet public. Consultez Configuration d’une passerelle NAT pour une source d’événements MSK ou Configuration des points de terminaison AWS PrivateLink pour une source d’événements MSK pour en savoir plus sur la façon de configurer ces ressources.

Jusqu’à présent, nous avons supposé que votre cluster MSK résidait dans un sous-réseau privé au sein de votre VPC, ce qui est le cas le plus courant. Toutefois, même si votre cluster MSK se trouve dans un sous-réseau public au sein de votre VPC, vous devez configurer des points de terminaison AWS PrivateLink pour permettre une connexion sécurisée. Le tableau suivant résume les exigences de configuration réseau en fonction de la façon dont vous configurez votre cluster MSK et du mappage des sources d’événements Lambda :

Emplacement du cluster MSK (dans un VPC géré par le client) Mode de mise à l’échelle du mappage des sources d’événements Lambda Configuration réseau requise

Sous-réseau privé

Mode de capacité à la demande

Passerelle NAT (dans le sous-réseau public de votre VPC) ou points de terminaison AWS PrivateLink (dans le sous-réseau privé de votre VPC) pour permettre l’accès à Lambda, AWS STS, et éventuellement Secrets Manager.

Public subnet

Mode de capacité à la demande

Points de terminaison AWS PrivateLink (dans le sous-réseau public de votre VPC) pour permettre l’accès à Lambda, AWS STS, et éventuellement Secrets Manager.

Sous-réseau privé

Mode alloué

Aucune

Public subnet

Mode alloué

Aucune

En outre, les groupes de sécurité associés à votre cluster MSK doivent autoriser le trafic sur les bons ports. Vérifiez que les règles de groupe de sécurité suivantes sont configurées :

  • Règles entrantes : autorisez tout le trafic sur le port d’agent par défaut. Le port utilisé par MSK dépend du type d’authentification sur le cluster : 9098 pour l’authentification IAM, 9096 pour SASL/SCRAM et 9094 pour TLS. Vous pouvez également utiliser une règle de groupe de sécurité avec référence circulaire pour autoriser l’accès à partir d’instances appartenant au même groupe de sécurité.

  • Règles sortantes : autorisez tout le trafic sur le port 443 pour les destinations externes si votre fonction doit communiquer avec d’autres services AWS. Vous pouvez utiliser une règle de groupe de sécurité avec référence circulaire pour limiter l’accès à l’agent si vous n’avez pas besoin de communiquer avec d’autres services AWS.

  • Règles entrantes de point de terminaison Amazon VPC :si vous utilisez un point de terminaison Amazon VPC, le groupe de sécurité associé à votre point de terminaison doit autoriser le trafic entrant sur le port 443 en provenance du groupe de sécurité du cluster.

Configuration d’une passerelle NAT pour une source d’événements MSK

Vous pouvez configurer une passerelle NAT pour permettre à votre mappage des sources d’événements d’interroger les messages de votre cluster et d’invoquer la fonction via un chemin à travers votre VPC. Cela n’est nécessaire que si votre mappage des sources d’événements utilise le mode à la demande et que votre cluster réside dans un sous-réseau privé de votre VPC. Si votre cluster réside dans un sous-réseau public de votre VPC, ou si le mappage des sources d’événements utilise le mode provisionné, vous n’avez pas besoin de configurer de passerelle NAT.

Une passerelle NAT permet aux ressources d’un sous-réseau privé d’accéder à l’Internet public. Si vous avez besoin d’une connectivité privée à Lambda, consultez plutôt Configuration des points de terminaison AWS PrivateLink pour une source d’événements MSK.

Après avoir configuré votre passerelle NAT, vous devez configurer les tables de routage appropriées. Cela permet au trafic provenant de votre sous-réseau privé d’être acheminé vers l’Internet public via la passerelle NAT.

Schéma d’un VPC géré par le client utilisant une passerelle NAT pour acheminer le trafic du sous-réseau privé vers l’Internet public.

Les étapes suivantes vous guident dans la mise en réseau d’une passerelle NAT à l’aide de la console. Si nécessaire, répétez ces étapes pour chaque zone de disponibilité (AZ).

Configurer une passerelle NAT et un routage approprié (console)
  1. Suivez les étapes de Créer une passerelle NAT, en notant ce qui suit :

    • Les passerelles NAT doivent toujours résider dans un sous-réseau public. Créez des passerelles NAT avec une connectivité publique.

    • Si votre cluster MSK est répliqué à travers plusieurs AZ, créez une passerelle NAT par AZ. Par exemple, dans chaque AZ, votre VPC doit avoir un sous-réseau privé contenant votre cluster et un sous-réseau public contenant votre passerelle NAT. Pour une configuration avec trois AZ, vous aurez trois sous-réseaux privés, trois sous-réseaux publics et trois passerelles NAT.

  2. Après avoir créé votre passerelle NAT, ouvrez la console Amazon VPC et choisissez Tables de routage dans le menu de gauche.

  3. Choisissez Créer une table de routage.

  4. Associez cette table de routage au VPC contenant votre cluster MSK. Vous pouvez éventuellement saisir un nom pour votre table de routage.

  5. Choisissez Créer une table de routage.

  6. Choisissez la table de routage que vous venez de créer.

  7. Sur l’onglet Associations de sous-réseau, choisissez Modifier les associations de sous-réseau.

    • Associez cette table de routage au sous-réseau privé contenant votre cluster MSK.

  8. Choisissez Edit routes (Modifier des routes).

  9. Choisissez Ajouter une route :

    1. Pour Destination, choisissez 0.0.0.0/0.

    2. Pour Cible, choisissez Passerelle NAT.

    3. Dans la zone de recherche, choisissez la passerelle NAT que vous avez créée à l’étape 1. Il doit s’agir de la passerelle NAT située dans la même AZ que le sous-réseau privé contenant votre cluster MSK (le sous-réseau privé que vous avez associé à cette table de routage à l’étape 6).

  10. Sélectionnez Enregistrer les modifications.

Vous pouvez configurer des points de terminaison AWS PrivateLink pour interroger les messages de votre cluster et invoquer la fonction via un chemin à travers votre VPC. Ces points de terminaison devraient permettre à votre cluster MSK d’accéder à ce qui suit :

La configuration des points de terminaison PrivateLink n’est requise que si votre mappage des sources d’événements utilise le mode à la demande. Si votre mappage des sources d’événements utilise le mode provisionné, Lambda établit les connexions requises pour vous.

Les points de terminaison PrivateLink permettent un accès privé et sécurisé aux services AWS sur AWS PrivateLink. Vous pouvez également configurer une passerelle NAT afin de permettre à votre cluster MSK d’accéder à l’Internet public (voir Configuration d’une passerelle NAT pour une source d’événements MSK).

Une fois que vous avez configuré vos points de terminaison de VPC, votre cluster MSK devrait disposer d’un accès direct et privé à Lambda, STS et éventuellement Secrets Manager.

Schéma d’un VPC géré par le client utilisant des points de terminaison AWS PrivateLink pour accéder aux services AWS.

Les étapes suivantes vous guident dans la configuration d’un point de terminaison PrivateLink à l’aide de la console. Si nécessaire, répétez ces étapes pour chaque point de terminaison (Lambda, STS, Secrets Manager).

Configurer des points de terminaison de VPC PrivateLink (console)
  1. Ouvrez la console Amazon VPC et choisissez Points de terminaison dans le menu de gauche.

  2. Choisissez Créer un point de terminaison.

  3. Vous pouvez éventuellement saisir un nom pour votre point de terminaison.

  4. Dans Type, sélectionnez Services AWS.

  5. Sous Services, commencez à saisir le nom du service. Par exemple, pour créer un point de terminaison pour la connexion à Lambda, saisissez lambda dans le champ de recherche.

  6. Dans les résultats, vous devriez voir le point de terminaison de service dans la région actuelle. Par exemple, dans la région USA Est (Virginie du Nord), vous devriez voir com.amazonaws.us-east-2.lambda. Sélectionnez ce service.

  7. Sous Paramètres réseau, sélectionnez le VPC qui contient votre cluster MSK.

  8. Sous Sous-réseaux, sélectionnez les AZ dans lesquelles se trouve votre cluster MSK.

    • Pour chaque AZ, sous ID de sous-réseau, choisissez le sous-réseau privé contenant votre cluster MSK.

  9. Sous Groupes de sécurité, sélectionnez les groupes de sécurité associés à votre cluster MSK.

  10. Choisissez Créer un point de terminaison.

Par défaut, les points de terminaison Amazon VPC disposent de politiques IAM ouvertes qui permettent un accès étendu aux ressources. La meilleure pratique consiste à restreindre ces politiques pour effectuer les actions nécessaires à l’aide de ce point de terminaison. Par exemple, pour votre point de terminaison Secrets Manager, vous pouvez modifier sa politique de sorte qu’il autorise uniquement le rôle d’exécution de votre fonction à accéder au secret.

Exemple Politique de point de terminaison de VPC – Point de terminaison Secrets Manager
{ "Statement": [ { "Action": "secretsmanager:GetSecretValue", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws::iam::123456789012:role/my-role" ] }, "Resource": "arn:aws::secretsmanager:us-west-2:123456789012:secret:my-secret" } ] }

Pour les points de terminaison AWS STS et Lambda, vous pouvez limiter le principal appelant au principal de service Lambda. Cependant, assurez-vous d’utiliser "Resource": "*" dans ces politiques.

Exemple Politique de point de terminaison de VPC – Point de terminaison AWS STS
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "lambda.amazonaws.com" ] }, "Resource": "*" } ] }
Exemple Politique de point de terminaison de VPC – Point de terminaison Lambda
{ "Statement": [ { "Action": "lambda:InvokeFunction", "Effect": "Allow", "Principal": { "Service": [ "lambda.amazonaws.com" ] }, "Resource": "*" } ] }