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 AWS Lambda fonction à votre cluster Amazon MSK, vous devez configurer correctement votre cluster et l'Amazon Virtual Private Cloud (VPC) dans lequel 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, reportez-vous Configuration de source d’événements Amazon MSK pour Lambda à la section pour configurer le mappage des sources d'événements.
Rubriques
Vue d'ensemble 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 AWS géré appartenant à Lambda.
-
Le mappage de votre source d'événements Lambda réside dans un autre VPC AWS géré 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 comporte 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. Ces trois ressources étant différentes VPCs, les opérations d'interrogation et d'appel nécessitent des appels réseau inter-VPC.
Les exigences de configuration réseau pour le mappage de votre source d'événements varient selon qu'il utilise le mode provisionné ou le mode à la demande, comme le montre le schéma suivant :

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 le mappage de votre source d'événements et votre cluster MSK, Lambda crée un hyperplan ENI (ou réutilise un ENI existant, si disponible) dans votre sous-réseau privé afin d'établir une connexion sécurisée. Comme illustré dans le schéma, cet hyperplan ENI 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 de mappage des sources d'événements et la fonction VPC. Vous n'avez donc pas besoin de composants réseau supplémentaires pour appeler correctement votre fonction.
-
En mode à la demande, le mappage de votre source d'événements Lambda appelle 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, AWS PrivateLinksoit des points de terminaison dans le sous-réseau privé du VPC qui fournissent un accès à AWS Security Token Service Lambda (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'exécution géré par Lambda, ce qui est nécessaire pour appeler 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'appeler la fonction Lambda. AWS PrivateLink les points de terminaison permettent aux sous-réseaux privés de se connecter en toute sécurité à AWS des services 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 AWS PrivateLink points de terminaison pour une source d'événements MSK pour plus de détails 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 de votre VPC, vous devez configurer les AWS PrivateLink points de terminaison pour activer 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 AWS PrivateLink points de terminaison (dans le sous-réseau privé de votre VPC) pour permettre l'accès à Lambda, et AWS STSéventuellement à Secrets Manager. |
Public subnet |
Mode de capacité à la demande |
AWS PrivateLink points de terminaison (dans le sous-réseau public de votre VPC) pour permettre l'accès à Lambda et, éventuellement AWS STS, à Secrets Manager. |
Sous-réseau privé |
Mode alloué |
Aucun |
Public subnet |
Mode alloué |
Aucun |
En outre, les groupes de sécurité associés à votre cluster MSK doivent autoriser le trafic sur les ports appropriés. Assurez-vous que les règles de groupe de sécurité suivantes sont configurées :
-
Règles de trafic entrant : autorisez tout le trafic sur le port du courtier par défaut. Le port utilisé par MSK dépend du type d'authentification sur le cluster :
9098
pour l'authentification IAM, pour SASL/SCRAM et9096
pour TLS.9094
Vous pouvez également utiliser une règle de groupe de sécurité à référencement automatique pour autoriser l'accès à partir d'instances appartenant au même groupe de sécurité. -
Règles de sortie : autorisez tout le trafic sur le port
443
pour les destinations externes si votre fonction doit communiquer avec d'autres AWS services. Vous pouvez également utiliser une règle de groupe de sécurité à référencement automatique pour limiter l'accès au courtier si vous n'avez pas besoin de communiquer avec d'autres AWS services. -
Règles relatives au point de terminaison Amazon VPC : si vous utilisez un point de terminaison Amazon VPC, le groupe de sécurité associé au point de terminaison doit autoriser le trafic entrant sur le port en
443
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 au mappage de votre source d'événements d'interroger les messages de votre cluster et d'appeler la fonction via un chemin via votre VPC. Cela n'est nécessaire que si le mappage de votre source 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 Configuration des AWS PrivateLink points de terminaison pour une source d'événements MSK plutôt.
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.

Les étapes suivantes vous guident dans la configuration d'une passerelle NAT à l'aide de la console. Répétez ces étapes si nécessaire pour chaque zone de disponibilité (AZ).
Pour configurer une passerelle NAT et un routage approprié (console)
-
Suivez les étapes décrites dans Créer une passerelle NAT, en prenant note des points suivants :
-
Les passerelles NAT doivent toujours résider dans un sous-réseau public. Créez des passerelles NAT dotées d'une connectivité publique.
-
Si votre cluster MSK est répliqué sur plusieurs AZs, 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 AZs, vous aurez trois sous-réseaux privés, trois sous-réseaux publics et trois passerelles NAT.
-
-
Après avoir créé votre passerelle NAT, ouvrez la console Amazon VPC
et choisissez Route tables dans le menu de gauche. -
Choisissez Créer une table de routage.
-
Associez cette table de routage au VPC qui contient votre cluster MSK. Entrez éventuellement un nom pour votre table de routage.
-
Choisissez Créer une table de routage.
-
Choisissez la table de routage que vous venez de créer.
-
Dans l'onglet Associations de sous-réseaux, choisissez Modifier les associations de sous-réseaux.
-
Associez cette table de routage au sous-réseau privé qui contient votre cluster MSK.
-
-
Choisissez Edit routes (Modifier des routes).
-
Choisissez Ajouter un itinéraire :
-
Pour Destination, choisissez
0.0.0.0/0
. -
Pour Target, choisissez la passerelle NAT.
-
Dans le champ 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 zone AZ que le sous-réseau privé qui contient votre cluster MSK (le sous-réseau privé que vous avez associé à cette table de routage à l'étape 6).
-
-
Sélectionnez Enregistrer les modifications.
Configuration des AWS PrivateLink points de terminaison pour une source d'événements MSK
Vous pouvez configurer des AWS PrivateLink points de terminaison pour interroger les messages de votre cluster et appeler la fonction via un chemin via votre VPC. Ces points de terminaison devraient permettre à votre cluster MSK d'accéder aux éléments suivants :
-
Le service Lambda
-
En option, le AWS Secrets Managerservice. Cela est nécessaire si le secret requis pour l'authentification du cluster est stocké dans Secrets Manager.
La configuration des PrivateLink points de terminaison n'est requise que si le mappage des sources d'événements utilise le mode à la demande. Si le mappage de votre source d'événements utilise le mode provisionné, Lambda établit les connexions requises pour vous.
PrivateLink les points de terminaison permettent un accès sécurisé et privé aux AWS services. AWS PrivateLink Vous pouvez également configurer une passerelle NAT afin de permettre à votre cluster MSK d'accéder à l'Internet public, voirConfiguration d'une passerelle NAT pour une source d'événements MSK.
Une fois que vous avez configuré vos points de terminaison VPC, votre cluster MSK doit disposer d'un accès direct et privé à Lambda, à STS et éventuellement à Secrets Manager.

Les étapes suivantes vous guident dans la configuration d'un PrivateLink point de terminaison à l'aide de la console. Répétez ces étapes si nécessaire pour chaque point de terminaison (Lambda, STS, Secrets Manager).
Pour configurer les PrivateLink points de terminaison VPC (console)
-
Ouvrez la console Amazon VPC
et choisissez Endpoints dans le menu de gauche. -
Choisissez Créer un point de terminaison.
-
Entrez éventuellement un nom pour votre point de terminaison.
-
Dans Type, sélectionnez AWS services.
-
Sous Services, commencez à taper le nom du service. Par exemple, pour créer un point de terminaison pour se connecter à Lambda, tapez
lambda
dans le champ de recherche. -
Dans les résultats, vous devriez voir le point de terminaison du service dans la région actuelle. Par exemple, dans la région de l'est des États-Unis (Virginie du Nord), vous devriez voir
com.amazonaws.us-east-2.lambda
. Sélectionnez ce service. -
Sous Paramètres réseau, sélectionnez le VPC qui contient votre cluster MSK.
-
Sous Sous-réseaux, sélectionnez AZs celui dans lequel se trouve votre cluster MSK.
-
Pour chaque AZ, sous ID de sous-réseau, choisissez le sous-réseau privé qui contient votre cluster MSK.
-
-
Sous Groupes de sécurité, sélectionnez les groupes de sécurité associés à votre cluster MSK.
-
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 telle sorte qu'il autorise uniquement le rôle d'exécution de votre fonction à accéder au secret.
Exemple Politique relative aux points de terminaison 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 Lambda AWS STS et Lambda, vous pouvez limiter le principal appelant au principal de service Lambda. Cependant, assurez-vous de l'utiliser "Resource": "*"
dans ces politiques.
Exemple Politique de point de terminaison VPC — point de terminaison AWS STS
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "lambda.amazonaws.com" ] }, "Resource": "*" } ] }
Exemple Politique de point de terminaison VPC — Point de terminaison Lambda
{ "Statement": [ { "Action": "lambda:InvokeFunction", "Effect": "Allow", "Principal": { "Service": [ "lambda.amazonaws.com" ] }, "Resource": "*" } ] }