Bonnes pratiques relatives à l’utilisation de DynamoDB Streams avec Lambda
Une fonction AWS Lambda est exécutée avec un conteneur, c’est-à-dire un environnement d’exécution isolé des autres fonctions. Lorsque vous exécutez une fonction pour la première fois, AWS Lambda crée un conteneur et commence à exécuter le code de la fonction.
Une fonction Lambda a un gestionnaire qui est exécuté une fois par appel. Le gestionnaire contient la logique métier principale de la fonction. Par exemple, la fonction Lambda illustrée dans Étape 4 : créer et tester une fonction Lambda comporte un gestionnaire qui peut traiter des enregistrements dans un flux DynamoDB.
Vous pouvez également fournir un code d’initialisation qui s’exécute une seule fois, après la création du conteneur, mais avant qu’AWS Lambda n’exécute le gestionnaire pour la première fois. La fonction Lambda illustrée dans Étape 4 : créer et tester une fonction Lambda a un code d’initialisation qui importe le kit SDK pour JavaScript dans Node.js, et crée un client pour Amazon SNS. Ces objets doivent être définis une seule fois, en dehors du gestionnaire.
Après l’exécution de la fonction, AWS Lambda peut choisir de réutiliser le conteneur pour les appels suivants de la fonction. Dans ce cas, votre gestionnaire de fonction peut réutiliser les ressources que vous avez définies dans votre code d’initialisation. (Notez que vous ne pouvez pas contrôler la durée de conservation du conteneur par AWS Lambda, ni la réutilisation du conteneur.)
Pour les déclencheurs DynamoDB qui utilisent AWS Lambda, nous recommandons ce qui suit :
-
Les clients du service AWS doivent être instanciés dans le code d’initialisation, non dans le gestionnaire. Cela permettra à AWS Lambda de réutiliser les connexions existantes pendant la durée de vie du conteneur.
-
En règle générale, vous n’avez pas besoin de gérer les connexions explicitement, ni d’implémenter les groupes de connexions car AWS Lambda s’en charge pour vous.
Un consommateur Lambda d’un flux DynamoDB ne garantit pas une livraison unique et peut entraîner des doublons occasionnels. Assurez-vous que le code de votre fonction Lambda est idempotent, afin d’éviter que des problèmes inattendus ne surviennent en raison d’un traitement dupliqué.
Pour en savoir plus, consultez Bonnes pratiques relative à l’utilisation de fonctions AWS Lambda dans le Guide du développeur AWS Lambda.