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.
Tutoriel : Utilisation AWS Lambda avec Amazon DocumentDB Streams
Dans ce tutoriel, vous créez une fonction Lambda de base qui consomme des événements à partir d’un flux de modifications Amazon DocumentDB (compatible avec MongoDB). Pour réaliser ce tutoriel, vous passerez par les étapes suivantes :
-
Configurez votre cluster Amazon DocumentDB, connectez-vous-y, et activez les flux de modifications sur ce cluster.
-
Créez votre fonction Lambda, et configurez votre cluster Amazon DocumentDB en tant que source d’événements pour votre fonction.
-
Testez la end-to-end configuration en insérant des éléments dans votre base de données Amazon DocumentDB.
Rubriques
Prérequis
Si vous ne l'avez pas encore installé AWS Command Line Interface, suivez les étapes décrites dans la section Installation ou mise à jour de la dernière version du AWS CLI pour l'installer.
Ce tutoriel nécessite un terminal de ligne de commande ou un shell pour exécuter les commandes. Sous Linux et macOS, utilisez votre gestionnaire de shell et de package préféré.
Note
Sous Windows, certaines commandes CLI Bash que vous utilisez couramment avec Lambda (par exemple zip
) ne sont pas prises en charge par les terminaux intégrés du système d’exploitation. Installez le sous-système Windows pour Linux
Créez l' AWS Cloud9 environnement

Avant de créer la fonction Lambda, vous devez créer et configurer votre cluster Amazon DocumentDB. Les étapes de configuration de votre cluster dans ce tutoriel sont basées sur la procédure de la section Démarrer avec Amazon DocumentDB (français non garanti).
Note
Si vous avez déjà configuré un cluster Amazon DocumentDB, assurez-vous d’activer les flux de modifications et de créer les points de terminaison de VPC d’interface nécessaires. Ensuite, vous pouvez passer directement aux étapes de création de la fonction.
Créez d'abord un AWS Cloud9 environnement. Vous utiliserez cet environnement tout au long de ce tutoriel pour vous connecter à votre cluster Amazon DocumentDB et l’interroger.
Pour créer un AWS Cloud9 environnement
-
Ouvrez la console AWS Cloud9
et choisissez Créer un environnement. -
Créez un environnement avec la configuration suivante :
-
Sous Détails :
-
Nom:
DocumentDBCloud9Environment
-
Type d'environnement : Nouvelle EC2 instance
-
-
Sous Nouvelle EC2 instance :
-
Type d’instance :
t2.micro
(1 Gio de RAM et 1 vCPU) -
Plateforme : Amazon Linux 2
-
Délai d’expiration : 30 minutes
-
-
Sous Paramètres réseau :
-
Connexion : AWS Systems Manager (SSM)
-
Développez la liste déroulante des Paramètres VPC.
-
Amazon Virtual Private Cloud (VPC) : choisissez votre VPC par défaut.
-
Sous-réseau : aucune préférence
-
-
Conservez tous les autres paramètres par défaut.
-
-
Sélectionnez Create (Créer). Le provisionnement de votre nouvel AWS Cloud9 environnement peut prendre plusieurs minutes.
Création du groupe EC2 de sécurité Amazon

Créez ensuite un groupe de EC2 sécurité Amazon avec des règles qui autorisent le trafic entre votre cluster Amazon DocumentDB et votre AWS Cloud9 environnement.
Pour créer un groupe EC2 de sécurité
-
Ouvrez la EC2 console
. Sous Réseau et sécurité, choisissez Groupes de sécurité. -
Sélectionnez Create security group (Créer un groupe de sécurité).
-
Créez un groupe de sécurité avec la configuration suivante :
-
Sous Informations de base :
-
Nom du groupe de sécurité :
DocDBTutorial
-
Description : groupe de sécurité pour le trafic entre AWS Cloud9 et Amazon DocumentDB.
-
VPC : choisissez votre VPC par défaut.
-
-
Pour Inbound rules (Règles entrantes), choisissez Add rule (Ajouter une règle). Créez une règle avec la configuration suivante :
-
Type : TCP personnalisé
-
Plage de ports : 27017
-
Source : Personnalisé
-
Dans le champ de recherche situé à côté de Source, choisissez le groupe de sécurité pour l' AWS Cloud9 environnement que vous avez créé à l'étape précédente. Pour afficher la liste des groupes de sécurité disponibles, saisissez
cloud9
dans le champ de recherche. Choisissez le groupe de sécurité portant le nomaws-cloud9-<environment_name>
.
-
-
Conservez tous les autres paramètres par défaut.
-
-
Sélectionnez Create security group (Créer un groupe de sécurité).
Créer le cluster Amazon DocumentDB

Dans cette étape, vous allez créer un cluster Amazon DocumentDB en utilisant le groupe de sécurité de l’étape précédente.
Pour créer un cluster Amazon DocumentDB
-
Ouvrez la console Amazon DocumentDB
. Sous Clusters, sélectionnez Créer. -
Créez un cluster avec la configuration suivante :
-
Pour Type de cluster, choisissez Cluster basé sur l’instance.
-
Sous Configuration :
-
Version du moteur : 5.0.0
-
Classe d’instance : db.t3.medium (essai gratuit éligible)
-
Nombre d’instances : 1
-
-
Sous Authentification :
-
Saisissez le Nom d’utilisateur et le Mot de passe nécessaires pour vous connecter à votre cluster (les mêmes informations d’identification que celles que vous avez utilisées pour créer le secret à l’étape précédente). Dans Confirmer le mot de passe, confirmez votre mot de passe.
-
-
Activez Afficher les paramètres avancés.
-
Sous Paramètres réseau :
-
Cloud privé virtuel (VPC) : choisissez votre VPC par défaut.
-
Groupe de sous-réseaux : par défaut
-
Groupes de sécurité VPC : en plus de
default (VPC)
, choisissez le groupe de sécuritéDocDBTutorial (VPC)
que vous avez créé à l’étape précédente.
-
-
Conservez tous les autres paramètres par défaut.
-
-
Choisissez Créer un cluster. L’approvisionnement de votre cluster Amazon DocumentDB peut prendre plusieurs minutes.
Création d’un secret dans Secrets Manager

Pour accéder manuellement à votre cluster Amazon DocumentDB, vous devez fournir des informations d’identification de nom d’utilisateur et de mot de passe. Pour que Lambda puisse accéder à votre cluster, vous devez fournir un secret Secrets Manager qui contient ces mêmes informations d’identification d’accès lors de la configuration de votre mappage des sources d’événements. Dans cette étape, vous allez créer ce secret.
Pour créer le secret dans Secrets Manager
-
Ouvrez la console Secrets Manager
et choisissez Stocker un nouveau secret. -
Pour Choisir le type de secret, sélectionnez les options suivantes :
-
Sous Informations de base :
-
Type de secret : informations d’identification pour votre base de données Amazon DocumentDB
-
Sous Informations d’identification, saisissez le nom d’utilisateur et le mot de passe que vous utiliserez pour accéder à votre cluster Amazon DocumentDB.
-
Base de données : choisissez votre cluster Amazon DocumentDB.
-
Choisissez Suivant.
-
-
-
Pour Configurer le secret, choisissez les options suivantes :
-
Nom du secret :
DocumentDBSecret
-
Choisissez Suivant.
-
-
Choisissez Suivant.
-
Choisissez Stocker.
-
Actualisez la console pour vérifier que vous avez correctement enregistré le secret
DocumentDBSecret
.
Notez l’ARN secret de votre secret. Vous en aurez besoin dans une étape ultérieure.
Installez le shell Mongo

Au cours de cette étape, vous allez installer le shell mongo dans votre AWS Cloud9 environnement. Le shell mongo est un utilitaire de ligne de commande que vous utilisez pour vous connecter à votre cluster Amazon DocumentDB et l’interroger.
Pour installer le shell mongo sur votre AWS Cloud9 environnement
-
Ouvrez la AWS Cloud9 console
. À côté de l’environnement DocumentDBCloud9Environment
que vous avez créé plus tôt, cliquez sur le lien Ouvrir sous la colonne IDE AWS Cloud9 . -
Dans la fenêtre du terminal, créez le fichier de référentiel MongoDB avec la commande suivante :
echo -e "[mongodb-org-5.0] \nname=MongoDB Repository\nbaseurl=https://repo.mongodb.org/yum/amazon/2/mongodb-org/5.0/x86_64/\ngpgcheck=1 \nenabled=1 \ngpgkey=https://www.mongodb.org/static/pgp/server-5.0.asc" | sudo tee /etc/yum.repos.d/mongodb-org-5.0.repo
-
Installez ensuite le shell mongo avec la commande suivante :
sudo yum install -y mongodb-org-shell
-
Pour chiffrer les données en transit, téléchargez la clé publique d’Amazon DocumentDB
. La commande suivante télécharge un fichier nommé global-bundle.pem
:wget https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem
Se connecter au cluster Amazon DocumentDB

Vous êtes maintenant prêt à vous connecter à votre cluster Amazon DocumentDB à l’aide du shell mongo.
Pour vous connecter à votre cluster Amazon DocumentDB
-
Ouvrez la console Amazon DocumentDB
. Sous Clusters, choisissez votre cluster en sélectionnant son identifiant. -
Dans l’onglet Connectivité et sécurité, sous Connexion à ce cluster avec le shell mongo, choisissez Copier.
-
Dans votre AWS Cloud9 environnement, collez cette commande dans le terminal. Remplacez
<insertYourPassword>
par le mot de passe correct.
Après avoir saisi cette commande, si l’invite de commande devient rs0:PRIMARY>
, c’est que vous êtes connecté à votre cluster Amazon DocumentDB.
Activation des flux de modifications

Pour ce tutoriel, vous allez suivre les modifications apportées à la collection products
de la base de données docdbdemo
dans votre cluster Amazon DocumentDB. Pour ce faire, vous activez les flux de modifications. Tout d’abord, créez la base de données docdbdemo
et testez-la en insérant un enregistrement.
Pour créer une nouvelle base de données dans votre cluster
-
Dans votre AWS Cloud9 environnement, assurez-vous que vous êtes toujours connecté à votre cluster Amazon DocumentDB.
-
Dans la fenêtre du terminal, utilisez la commande suivante pour créer une nouvelle base de données appelée
docdbdemo
:use docdbdemo
-
Utilisez ensuite la commande suivante pour insérer un enregistrement dans
docdbdemo
:db.products.insert({"hello":"world"})
Vous devriez obtenir un résultat du type suivant :
WriteResult({ "nInserted" : 1 })
-
Utilisez la commande suivante pour répertorier toutes les bases de données :
show dbs
Assurez-vous que votre sortie contient la base de données
docdbdemo
:docdbdemo 0.000GB
Activez ensuite les flux de modifications sur la collection products
de la base de données docdbdemo
à l’aide de la commande suivante :
db.adminCommand({modifyChangeStreams: 1, database: "docdbdemo", collection: "products", enable: true});
Vous devriez obtenir un résultat du type suivant :
{ "ok" : 1, "operationTime" : Timestamp(1680126165, 1) }
Création de points de terminaison d’un VPC d’interface

Créez ensuite des points de terminaison d’un VPC d’interface pour vous assurer que Lambda et Secrets Manager (utilisé plus tard pour stocker nos informations d’identification d’accès au cluster) peuvent se connecter à votre VPC par défaut.
Pour créer des points de terminaison d’un VPC d’interface
-
Ouvrez la console VPC
. Dans le menu de gauche, sous Cloud privé virtuel, choisissez Points de terminaison. -
Choisissez Créer un point de terminaison. Créez un point de terminaison avec la configuration suivante :
-
Pour Balise de nom, saisissez
lambda-default-vpc
. -
Pour la catégorie de service, sélectionnez AWS services.
-
Pour Services, saisissez
lambda
dans la zone de recherche. Choisissez le service au formatcom.amazonaws.<region>.lambda
. -
Pour VPC, choisissez le VPC par défaut.
-
Pour Sous-réseaux, cochez les cases à côté de chaque zone de disponibilité. Choisissez l’ID de sous-réseau correct pour chaque zone de disponibilité.
-
Pour le type d'adresse IP, sélectionnez IPv4.
-
Pour Groupes de sécurité, choisissez le groupe de sécurité VPC par défaut (nom de groupe
default
) et le groupe de sécurité que vous avez créé précédemment (nom de groupeDocDBTutorial
). -
Conservez tous les autres paramètres par défaut.
-
Choisissez Créer un point de terminaison.
-
-
Choisissez à nouveau Créer un point de terminaison. Créez un point de terminaison avec la configuration suivante :
-
Pour Balise de nom, saisissez
secretsmanager-default-vpc
. -
Pour la catégorie de service, sélectionnez AWS services.
-
Pour Services, saisissez
secretsmanager
dans la zone de recherche. Choisissez le service au formatcom.amazonaws.<region>.secretsmanager
. -
Pour VPC, choisissez le VPC par défaut.
-
Pour Sous-réseaux, cochez les cases à côté de chaque zone de disponibilité. Choisissez l’ID de sous-réseau correct pour chaque zone de disponibilité.
-
Pour le type d'adresse IP, sélectionnez IPv4.
-
Pour Groupes de sécurité, choisissez le groupe de sécurité VPC par défaut (nom de groupe
default
) et le groupe de sécurité que vous avez créé précédemment (nom de groupeDocDBTutorial
). -
Conservez tous les autres paramètres par défaut.
-
Choisissez Créer un point de terminaison.
-
Ceci termine la partie de ce tutoriel concernant la configuration du cluster.
Créer le rôle d’exécution

Dans les étapes suivantes, vous allez créer votre fonction Lambda. Tout d’abord, vous devez créer le rôle d’exécution qui donne à votre fonction l’autorisation d’accéder à votre cluster. Vous faites cela en créant d’abord une politique IAM, puis en associant cette politique à un rôle IAM.
Pour créer une politique IAM
-
Ouvrez la page Politiques
dans la console IAM et choisissez Créer une politique. -
Sélectionnez l’onglet JSON. Dans la politique suivante, remplacez l’ARN de la ressource Secrets Manager dans la dernière ligne de l’instruction par votre ARN secret précédent et copiez la politique dans l’éditeur.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "LambdaESMNetworkingAccess", "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface", "ec2:DescribeNetworkInterfaces", "ec2:DescribeVpcs", "ec2:DeleteNetworkInterface", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups", "kms:Decrypt" ], "Resource": "*" }, { "Sid": "LambdaDocDBESMAccess", "Effect": "Allow", "Action": [ "rds:DescribeDBClusters", "rds:DescribeDBClusterParameters", "rds:DescribeDBSubnetGroups" ], "Resource": "*" }, { "Sid": "LambdaDocDBESMGetSecretValueAccess", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": "arn:aws:secretsmanager:us-east-1:123456789012:secret:DocumentDBSecret" } ] }
-
Choisissez Suivant : Balises, puis Suivant : Vérification.
-
Pour Nom, saisissez
AWSDocumentDBLambdaPolicy
. -
Sélectionnez Create policy (Créer une politique).
Pour créer le rôle IAM
-
Ouvrez la page Rôles
dans la console IAM et choisissez Créer un rôle. -
Pour Sélectionner une entité de confiance, choisissez les options suivantes :
-
Type d'entité de confiance : AWS service
-
Cas d’utilisation : Lambda
-
Choisissez Suivant.
-
-
Pour Ajouter des autorisations, choisissez la
AWSDocumentDBLambdaPolicy
politique que vous venez de créer, ainsi que celle permettantAWSLambdaBasicExecutionRole
à votre fonction d'écrire sur Amazon CloudWatch Logs. -
Choisissez Suivant.
-
Pour le Nom du rôle, saisissez
AWSDocumentDBLambdaExecutionRole
. -
Sélectionnez Créer un rôle.
Créer la fonction Lambda

L’exemple de code suivant reçoit une entrée d’événement Amazon DocumentDB et traite le message qu’elle contient.
Pour créer la fonction Lambda
-
Copiez l’exemple de code dans un fichier nommé
index.js
. -
Créez un package de déploiement avec la commande suivante.
zip function.zip index.js
-
Utilisez la commande CLI suivante pour créer la fonction. Remplacez
us-east-1
par le Région AWS, et123456789012
par votre identifiant de compte.aws lambda create-function \ --function-name ProcessDocumentDBRecords \ --zip-file fileb://function.zip --handler index.handler --runtime nodejs22.x \ --region us-east-1 \ --role arn:aws:iam::123456789012:role/AWSDocumentDBLambdaExecutionRole
Création du mappage des sources d’événements Lambda

Créez le mappage des sources d’événements qui associe votre flux de modifications Amazon DocumentDB à votre fonction Lambda. Une fois que vous avez créé ce mappage des sources d'événements, commence AWS Lambda immédiatement à interroger le flux.
Pour créer le mappage des sources d’événements
-
Ouvrez la page Fonctions
de la console Lambda. -
Choisissez la fonction
ProcessDocumentDBRecords
que vous avez créée précédemment. -
Choisissez l’onglet Configuration, puis Déclencheurs dans le menu de gauche.
-
Choisissez Add trigger (Ajouter déclencheur).
-
Sous Configuration du déclencheur, pour la source, sélectionnez Amazon DocumentDB.
-
Créez le mappage des sources d’événements avec la configuration suivante :
-
Cluster Amazon DocumentDB : choisissez le cluster que vous avez créé précédemment.
-
Nom de la base de données :
docdbdemo
-
Nom de la collection : products
-
Taille de lot : 1
-
Position de départ : dernière
-
Authentification : BASIC_AUTH
-
Clé Secrets Manager : choisissez le
DocumentDBSecret
que vous venez de créer. -
Fenêtre de lot : 1
-
Configuration complète du document — UpdateLookup
-
-
Choisissez Ajouter. La création de votre mappage des sources d’événements peut prendre quelques minutes.
Test de votre fonction : invocation manuelle

Pour tester que vous avez créé correctement votre fonction et le mappage des sources d’événements, invoquez votre fonction à l’aide de la commande invoke
. Pour ce faire, copiez d’abord l’événement JSON suivant dans un fichier appelé input.txt
:
{ "eventSourceArn": "arn:aws:rds:us-east-1:123456789012:cluster:canaryclusterb2a659a2-qo5tcmqkcl03", "events": [ { "event": { "_id": { "_data": "0163eeb6e7000000090100000009000041e1" }, "clusterTime": { "$timestamp": { "t": 1676588775, "i": 9 } }, "documentKey": { "_id": { "$oid": "63eeb6e7d418cd98afb1c1d7" } }, "fullDocument": { "_id": { "$oid": "63eeb6e7d418cd98afb1c1d7" }, "anyField": "sampleValue" }, "ns": { "db": "docdbdemo", "coll": "products" }, "operationType": "insert" } } ], "eventSource": "aws:docdb" }
Ensuite, utilisez la commande suivante pour invoquer votre fonction avec cet événement :
aws lambda invoke \ --function-name ProcessDocumentDBRecords \ --cli-binary-format raw-in-base64-out \ --region us-east-1 \ --payload file://input.txt out.txt
Vous devriez obtenir une réponse qui ressemble à ce qui suit :
{ "StatusCode": 200, "ExecutedVersion": "$LATEST" }
Vous pouvez vérifier que votre fonction a bien traité l'événement en consultant CloudWatch Logs.
Pour vérifier l'invocation manuelle via CloudWatch les journaux
-
Ouvrez la page Fonctions
de la console Lambda. -
Cliquez sur l'onglet Surveiller, puis sélectionnez Afficher CloudWatch les journaux. Cela vous amène au groupe de journaux spécifique associé à votre fonction dans la CloudWatch console.
-
Choisissez le flux de journaux le plus récent. Au sein des messages du journal, vous devriez voir le JSON de l’événement.
Test de votre fonction : insertion d’un enregistrement

Testez votre end-to-end configuration en interagissant directement avec votre base de données Amazon DocumentDB. Dans les étapes suivantes, vous allez insérer un enregistrement, le mettre à jour, puis le supprimer.
Pour insérer un enregistrement
-
Reconnectez-vous à votre cluster Amazon DocumentDB dans AWS Cloud9 votre environnement.
-
Utilisez cette commande pour vous assurer que vous utilisez actuellement la base de données
docdbdemo
:use docdbdemo
-
Insérez un enregistrement dans la collection
products
de la base de donnéedocdbdemo
:db.products.insert({"name":"Pencil", "price": 1.00})
Test de votre fonction : mise à jour d’un enregistrement

Ensuite, mettez à jour l’enregistrement que vous venez d’insérer à l’aide de la commande suivante :
db.products.update( { "name": "Pencil" }, { $set: { "price": 0.50 }} )
Vérifiez que votre fonction a correctement traité cet événement en vérifiant CloudWatch les journaux.
Test de votre fonction : suppression d’un enregistrement

Enfin, supprimez l’enregistrement que vous venez de mettre à jour à l’aide de la commande suivante :
db.products.remove( { "name": "Pencil" } )
Vérifiez que votre fonction a correctement traité cet événement en vérifiant CloudWatch les journaux.
Nettoyage de vos ressources
Vous pouvez maintenant supprimer les ressources que vous avez créées pour ce didacticiel, sauf si vous souhaitez les conserver. En supprimant des ressources AWS que vous n’utilisez plus, vous évitez les frais superflus pour votre Compte AWS.
Pour supprimer la fonction Lambda
-
Ouvrez la page Functions (Fonctions)
de la console Lambda. -
Sélectionnez la fonction que vous avez créée.
-
Sélectionnez Actions, Supprimer.
-
Saisissez
confirm
dans la zone de saisie de texte et choisissez Delete (Supprimer).
Pour supprimer le rôle d’exécution
-
Ouvrez la page Roles (Rôles)
de la console IAM. -
Sélectionnez le rôle d’exécution que vous avez créé.
-
Sélectionnez Delete (Supprimer).
-
Saisissez le nom du rôle dans le champ de saisie de texte et choisissez Delete (Supprimer).
Pour supprimer les points de terminaison d’un VPC
-
Ouvrez la console VPC
. Dans le menu de gauche, sous Cloud privé virtuel, choisissez Points de terminaison. -
Sélectionnez les points de terminaison que vous avez créés.
-
Choisissez Actions, Delete VPC endpoints (Supprimer le point de terminaison d’un VPC).
-
Saisissez
delete
dans le champ de saisie de texte. -
Sélectionnez Delete (Supprimer).
Pour supprimer le cluster Amazon DocumentDB
-
Ouvrez la console Amazon DocumentDB
. -
Sélectionnez le cluster Amazon DocumentDB que vous avez créé pour ce tutoriel et désactivez la protection contre la suppression.
-
Dans la page principale Clusters, choisissez à nouveau votre cluster Amazon DocumentDB.
-
Sélectionnez Actions, Supprimer.
-
Pour Créer un instantané final du cluster, sélectionnez Non.
-
Saisissez
delete
dans le champ de saisie de texte. -
Sélectionnez Delete (Supprimer).
Pour supprimer le secret dans Secrets Manager
-
Ouvrez la console Secrets Manager
. -
Sélectionnez le secret que vous avez créé pour ce tutoriel.
-
Choisissez Actions, Supprimer le secret.
-
Choisissez Schedule deletion (Planifier la suppression).
Pour supprimer le groupe EC2 de sécurité Amazon
-
Ouvrez la EC2 console
. Sous Réseau et sécurité, choisissez Groupes de sécurité. -
Sélectionnez le groupe de sécurité que vous avez créé pour ce tutoriel.
-
Choisissez Actions, Supprimer les groupes de sécurité.
-
Sélectionnez Delete (Supprimer).
Pour supprimer l' AWS Cloud9 environnement
-
Ouvrez la AWS Cloud9 console
. -
Sélectionnez l’environnement que vous avez créé pour ce tutoriel.
-
Sélectionnez Delete (Supprimer).
-
Saisissez
delete
dans le champ de saisie de texte. -
Sélectionnez Supprimer.