Tutoriel : Utilisation AWS Lambda avec Amazon DocumentDB Streams - 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.

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.

Prérequis

Si vous n'en avez pas Compte AWS, procédez comme suit pour en créer un.

Pour vous inscrire à un Compte AWS
  1. Ouvrez https://portal.aws.amazon.com/billing/signup.

  2. Suivez les instructions en ligne.

    Dans le cadre de la procédure d‘inscription, vous recevrez un appel téléphonique et vous saisirez un code de vérification en utilisant le clavier numérique du téléphone.

    Lorsque vous vous inscrivez à un Compte AWS, un Utilisateur racine d'un compte AWSest créé. Par défaut, seul l‘utilisateur racine a accès à l‘ensemble des Services AWS et des ressources de ce compte. La meilleure pratique en matière de sécurité consiste à attribuer un accès administratif à un utilisateur et à n'utiliser que l'utilisateur root pour effectuer les tâches nécessitant un accès utilisateur root.

AWS vous envoie un e-mail de confirmation une fois le processus d'inscription terminé. Vous pouvez afficher l‘activité en cours de votre compte et gérer votre compte à tout moment en accédant à https://aws.amazon.com/ et en choisissant Mon compte.

Une fois que vous vous êtes inscrit à un utilisateur administratif Compte AWS, que vous Utilisateur racine d'un compte AWS l'avez sécurisé AWS IAM Identity Center, que vous l'avez activé et que vous en avez créé un, afin de ne pas utiliser l'utilisateur root pour les tâches quotidiennes.

Sécurisez votre Utilisateur racine d'un compte AWS
  1. Connectez-vous en AWS Management Consoletant que propriétaire du compte en choisissant Utilisateur root et en saisissant votre adresse Compte AWS e-mail. Sur la page suivante, saisissez votre mot de passe.

    Pour obtenir de l‘aide pour vous connecter en utilisant l‘utilisateur racine, consultez Connexion en tant qu‘utilisateur racine dans le Guide de l‘utilisateur Connexion à AWS .

  2. Activez l‘authentification multifactorielle (MFA) pour votre utilisateur racine.

    Pour obtenir des instructions, consultez la section Activer un périphérique MFA virtuel pour votre utilisateur Compte AWS root (console) dans le guide de l'utilisateur IAM.

Création d'un utilisateur doté d'un accès administratif
  1. Activez IAM Identity Center.

    Pour obtenir des instructions, consultez Activation d’ AWS IAM Identity Center dans le Guide de l’utilisateur AWS IAM Identity Center .

  2. Dans IAM Identity Center, accordez un accès administratif à un utilisateur.

    Pour un didacticiel sur l'utilisation du Répertoire IAM Identity Center comme source d'identité, voir Configurer l'accès utilisateur par défaut Répertoire IAM Identity Center dans le Guide de AWS IAM Identity Center l'utilisateur.

Connectez-vous en tant qu'utilisateur disposant d'un accès administratif
  • Pour vous connecter avec votre utilisateur IAM Identity Center, utilisez l‘URL de connexion qui a été envoyée à votre adresse e-mail lorsque vous avez créé l‘utilisateur IAM Identity Center.

    Pour obtenir de l'aide pour vous connecter en utilisant un utilisateur d'IAM Identity Center, consultez la section Connexion au portail AWS d'accès dans le guide de l'Connexion à AWS utilisateur.

Attribuer l'accès à des utilisateurs supplémentaires
  1. Dans IAM Identity Center, créez un ensemble d'autorisations conforme aux meilleures pratiques en matière d'application des autorisations du moindre privilège.

    Pour obtenir des instructions, voir Création d'un ensemble d'autorisations dans le guide de AWS IAM Identity Center l'utilisateur.

  2. Affectez des utilisateurs à un groupe, puis attribuez un accès d'authentification unique au groupe.

    Pour obtenir des instructions, consultez la section Ajouter des groupes dans le guide de AWS IAM Identity Center l'utilisateur.

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 afin d’obtenir une version intégrée à Windows d’Ubuntu et Bash.

Créez l' AWS Cloud9 environnement

Étape 1 : créer un 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 d'un 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 DocumentDB et l'interroger.

Pour créer un AWS Cloud9 environnement
  1. Ouvrez la console Cloud9 et choisissez Créer un environnement.

  2. Créez un environnement avec la configuration suivante :

    • Sous Détails :

      • NomDocumentDBCloud9Environment

      • Type d'environnement : nouvelle instance EC2

    • Sous Nouvelle instance EC2 :

      • 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.

  3. Choisissez Créer. Le provisionnement de votre nouvel AWS Cloud9 environnement peut prendre plusieurs minutes.

Création du groupe de sécurité EC2

Étape 2 : créer un groupe de sécurité EC2

Ensuite, créez un groupe de sécurité EC2 avec des règles qui autorisent le trafic entre votre cluster DocumentDB et votre environnement Cloud9.

Pour créer un groupe de sécurité EC2
  1. Ouvrez la console EC2. Sous Réseau et sécurité, choisissez Groupes de sécurité.

  2. Sélectionnez Create security group (Créer un groupe de sécurité).

  3. 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 Cloud9 et 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 nom aws-cloud9-<environment_name>.

    • Conservez tous les autres paramètres par défaut.

  4. Sélectionnez Create security group (Créer un groupe de sécurité).

Création du cluster DocumentDB

Étape 3 : créer un cluster DocumentDB

Dans cette étape, vous allez créer un cluster DocumentDB en utilisant le groupe de sécurité de l'étape précédente.

Pour créer un cluster DocumentDB
  1. Ouvrez la console DocumentDB. Sous Clusters, sélectionnez Créer.

  2. 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.

  3. Choisissez Créer un cluster. L'approvisionnement de votre cluster DocumentDB peut prendre plusieurs minutes.

Création d'un secret dans Secrets Manager

Étape 4 : créer un secret dans Secrets Manager

Pour accéder manuellement à votre cluster 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
  1. Ouvrez la console Secrets Manager et choisissez Stocker un nouveau secret.

  2. Pour Choisir le type de secret, sélectionnez les options suivantes :

    • Sous Informations de base :

      • Type de secret : informations d'identification pour la 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 DocumentDB.

      • Base de données : choisissez votre cluster DocumentDB.

      • Choisissez Suivant.

  3. Pour Configurer le secret, choisissez les options suivantes :

    • Nom du secret : DocumentDBSecret

    • Choisissez Suivant.

  4. Choisissez Suivant.

  5. Choisissez Stocker.

  6. 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

Étape 5 : installer le shell mongo

Dans cette étape, vous allez installer le shell mongo dans votre environnement Cloud9. Le shell mongo est un utilitaire de ligne de commande que vous utilisez pour vous connecter à votre cluster DocumentDB et l'interroger.

Pour installer le shell mongo dans votre environnement Cloud9
  1. Ouvrez la console Cloud9. À côté de l'environnement DocumentDBCloud9Environment que vous avez créé plus tôt, cliquez sur le lien Ouvrir sous la colonne IDE Cloud9.

  2. 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
  3. Installez ensuite le shell mongo avec la commande suivante :

    sudo yum install -y mongodb-org-shell
  4. 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

Connexion au cluster DocumentDB

Étape 6 : se connecter au cluster DocumentDB

Vous êtes maintenant prêt à vous connecter à votre cluster DocumentDB à l'aide du shell mongo.

Pour vous connecter à votre cluster DocumentDB
  1. Ouvrez la console DocumentDB. Sous Clusters, choisissez votre cluster en sélectionnant son identifiant.

  2. Dans l'onglet Connectivité et sécurité, sous Se connecter à ce cluster avec le shell mongo, choisissez Copier.

  3. Dans votre environnement Cloud9, 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

Étape 7 : activer les 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 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
  1. Dans votre environnement Cloud9, assurez-vous que vous êtes toujours connecté à votre cluster DocumentDB.

  2. Dans la fenêtre du terminal, utilisez la commande suivante pour créer une nouvelle base de données appelée docdbdemo :

    use docdbdemo
  3. 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 })
  4. 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

Étape 8 : créer des 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
  1. Ouvrez la console VPC. Dans le menu de gauche, sous Cloud privé virtuel, choisissez Points de terminaison.

  2. 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 format com.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 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 groupe DocDBTutorial).

    • Conservez tous les autres paramètres par défaut.

    • Choisissez Créer un point de terminaison.

  3. 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 format com.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 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 groupe DocDBTutorial).

    • 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

Étape 9 : 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
  1. Ouvrez la page Politiques dans la console IAM et choisissez Créer une politique.

  2. 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" } ] }
  3. Choisissez Suivant : Balises, puis Suivant : Vérification.

  4. Pour Name (Nom), saisissez AWSDocumentDBLambdaPolicy.

  5. Sélectionnez Create policy (Créer une politique).

Pour créer le rôle IAM
  1. Ouvrez la page Rôles dans la console IAM et choisissez Créer un rôle.

  2. Pour Sélectionner une entité de confiance, choisissez les options suivantes :

    • Type d'entité de confiance : AWS service

    • Cas d'utilisation : Lambda

    • Choisissez Suivant.

  3. Pour Ajouter des autorisations, choisissez la AWSDocumentDBLambdaPolicy politique que vous venez de créer, ainsi que celle permettant AWSLambdaBasicExecutionRole à votre fonction d'écrire sur Amazon CloudWatch Logs.

  4. Choisissez Suivant.

  5. Pour le Nom du rôle, saisissez AWSDocumentDBLambdaExecutionRole.

  6. Choisissez Créer un rôle.

Créer la fonction Lambda

Étape 10 : créer la fonction Lambda

L'exemple de code suivant reçoit une entrée d'événement DocumentDB et traite le message qu'elle contient.

Go
Kit SDK for Go V2
Note

Il y en a plus à ce sujet GitHub. Trouvez l’exemple complet et découvrez comment le configurer et l’exécuter dans le référentiel d’exemples sans serveur.

Consommation d'un événement Amazon DocumentDB avec Lambda à l'aide de Go.

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 package main import ( "context" "encoding/json" "fmt" "github.com/aws/aws-lambda-go/lambda" ) type Event struct { Events []Record `json:"events"` } type Record struct { Event struct { OperationType string `json:"operationType"` NS struct { DB string `json:"db"` Coll string `json:"coll"` } `json:"ns"` FullDocument interface{} `json:"fullDocument"` } `json:"event"` } func main() { lambda.Start(handler) } func handler(ctx context.Context, event Event) (string, error) { fmt.Println("Loading function") for _, record := range event.Events { logDocumentDBEvent(record) } return "OK", nil } func logDocumentDBEvent(record Record) { fmt.Printf("Operation type: %s\n", record.Event.OperationType) fmt.Printf("db: %s\n", record.Event.NS.DB) fmt.Printf("collection: %s\n", record.Event.NS.Coll) docBytes, _ := json.MarshalIndent(record.Event.FullDocument, "", " ") fmt.Printf("Full document: %s\n", string(docBytes)) }
JavaScript
SDK pour JavaScript (v3)
Note

Il y en a plus à ce sujet GitHub. Trouvez l’exemple complet et découvrez comment le configurer et l’exécuter dans le référentiel d’exemples sans serveur.

Consommation d'un événement Amazon DocumentDB avec Lambda à l'aide de. JavaScript

console.log('Loading function'); exports.handler = async (event, context) => { event.events.forEach(record => { logDocumentDBEvent(record); }); return 'OK'; }; const logDocumentDBEvent = (record) => { console.log('Operation type: ' + record.event.operationType); console.log('db: ' + record.event.ns.db); console.log('collection: ' + record.event.ns.coll); console.log('Full document:', JSON.stringify(record.event.fullDocument, null, 2)); };
Python
SDK pour Python (Boto3)
Note

Il y en a plus à ce sujet GitHub. Trouvez l’exemple complet et découvrez comment le configurer et l’exécuter dans le référentiel d’exemples sans serveur.

Utilisation d'un événement Amazon DocumentDB avec Lambda à l'aide de Python.

import json def lambda_handler(event, context): for record in event.get('events', []): log_document_db_event(record) return 'OK' def log_document_db_event(record): event_data = record.get('event', {}) operation_type = event_data.get('operationType', 'Unknown') db = event_data.get('ns', {}).get('db', 'Unknown') collection = event_data.get('ns', {}).get('coll', 'Unknown') full_document = event_data.get('fullDocument', {}) print(f"Operation type: {operation_type}") print(f"db: {db}") print(f"collection: {collection}") print("Full document:", json.dumps(full_document, indent=2))
Ruby
Kit SDK pour Ruby
Note

Il y en a plus à ce sujet GitHub. Trouvez l’exemple complet et découvrez comment le configurer et l’exécuter dans le référentiel d’exemples sans serveur.

Utilisation d'un événement Amazon DocumentDB avec Lambda à l'aide de Ruby.

require 'json' def lambda_handler(event:, context:) event['events'].each do |record| log_document_db_event(record) end 'OK' end def log_document_db_event(record) event_data = record['event'] || {} operation_type = event_data['operationType'] || 'Unknown' db = event_data.dig('ns', 'db') || 'Unknown' collection = event_data.dig('ns', 'coll') || 'Unknown' full_document = event_data['fullDocument'] || {} puts "Operation type: #{operation_type}" puts "db: #{db}" puts "collection: #{collection}" puts "Full document: #{JSON.pretty_generate(full_document)}" end
Pour créer la fonction Lambda
  1. Copiez l’exemple de code dans un fichier nommé index.js.

  2. Créez un package de déploiement avec la commande suivante.

    zip function.zip index.js
  3. Utilisez la commande CLI suivante pour créer la fonction. Remplacez us-east-1 par la région et 123456789012 par l'ID de votre région.

    aws lambda create-function --function-name ProcessDocumentDBRecords \ --zip-file fileb://function.zip --handler index.handler --runtime nodejs20.x \ --region us-east-1 \ --role arn:aws:iam::123456789012:role/AWSDocumentDBLambdaExecutionRole

Création du mappage des sources d'événements Lambda

Étape 11 : créer le mappage des sources d'événements Lambda

Créez le mappage des sources d'événements qui associe votre flux de modifications 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
  1. Ouvrez la page Fonctions de la console Lambda.

  2. Choisissez la fonction ProcessDocumentDBRecords que vous avez créée précédemment.

  3. Choisissez l'onglet Configuration, puis Déclencheurs dans le menu de gauche.

  4. Choisissez Add trigger (Ajouter déclencheur).

  5. Sous Configuration du déclencheur, pour la source, sélectionnez DocumentDB.

  6. Créez le mappage des sources d'événements avec la configuration suivante :

    • Cluster 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

  7. Choisissez Ajouter. La création de votre mappage des sources d'événements peut prendre quelques minutes.

Test de votre fonction : invocation manuelle

Étape 12 : tester votre fonction à l'aide d'une 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
  1. Ouvrez la page Fonctions de la console Lambda.

  2. 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.

  3. 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

Étape 13 : tester votre fonction en insérant un enregistrement.

Testez votre end-to-end configuration en interagissant directement avec votre base de données DocumentDB. Dans les étapes suivantes, vous allez insérer un enregistrement, le mettre à jour, puis le supprimer.

Pour insérer un enregistrement
  1. Reconnectez-vous à votre cluster DocumentDB dans votre environnement Cloud9.

  2. Utilisez cette commande pour vous assurer que vous utilisez actuellement la base de données docdbdemo :

    use docdbdemo
  3. Insérez un enregistrement dans la collection products de la base de donnée docdbdemo :

    db.products.insert({"name":"Pencil", "price": 1.00})

Test de votre fonction : mise à jour d'un enregistrement

Étape 14 : tester votre fonction en mettant à jour 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

Étape 15 : tester votre fonction en supprimant 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
  1. Ouvrez la page Functions (Fonctions) de la console Lambda.

  2. Sélectionnez la fonction que vous avez créée.

  3. Sélectionnez Actions, Supprimer.

  4. Saisissez delete dans la zone de saisie de texte et choisissez Delete (Supprimer).

Pour supprimer le rôle d’exécution
  1. Ouvrez la page Roles (Rôles) de la console IAM.

  2. Sélectionnez le rôle d’exécution que vous avez créé.

  3. Sélectionnez Delete (Supprimer).

  4. 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
  1. Ouvrez la console VPC. Dans le menu de gauche, sous Cloud privé virtuel, choisissez Points de terminaison.

  2. Sélectionnez les points de terminaison que vous avez créés.

  3. Choisissez Actions, Delete VPC endpoints (Supprimer le point de terminaison d'un VPC).

  4. Saisissez delete dans le champ de saisie de texte.

  5. Sélectionnez Delete (Supprimer).

Pour supprimer le cluster Amazon DocumentDB
  1. Ouvrez la console DocumentDB.

  2. Sélectionnez le cluster DocumentDB que vous avez créé pour ce tutoriel et désactivez la protection contre la suppression.

  3. Dans la page principale Clusters, choisissez à nouveau votre cluster DocumentDB.

  4. Sélectionnez Actions, Supprimer.

  5. Pour Créer un instantané final du cluster, sélectionnez Non.

  6. Saisissez delete dans le champ de saisie de texte.

  7. Sélectionnez Delete (Supprimer).

Pour supprimer le secret dans Secrets Manager
  1. Ouvrez la console Secrets Manager.

  2. Sélectionnez le secret que vous avez créé pour ce tutoriel.

  3. Choisissez Actions, Supprimer le secret.

  4. Choisissez Schedule deletion (Planifier la suppression).

Pour supprimer le groupe de sécurité Amazon EC2
  1. Ouvrez la console EC2. Sous Réseau et sécurité, choisissez Groupes de sécurité.

  2. Sélectionnez le groupe de sécurité que vous avez créé pour ce tutoriel.

  3. Choisissez Actions, Supprimer les groupes de sécurité.

  4. Sélectionnez Delete (Supprimer).

Pour supprimer l'environnement Cloud9
  1. Ouvrez la console Cloud9.

  2. Sélectionnez l'environnement que vous avez créé pour ce tutoriel.

  3. Sélectionnez Delete (Supprimer).

  4. Saisissez delete dans le champ de saisie de texte.

  5. Sélectionnez Supprimer.