View a markdown version of this page

Bonnes pratiques relatives à l’utilisation de DynamoDB Streams avec Lambda - Amazon DynamoDB

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.

Bonnes pratiques relatives à l’utilisation de DynamoDB Streams avec Lambda

Une AWS Lambda fonction s'exécute dans un conteneur, 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 nouveau 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 ne s'exécute qu'une seule fois, après la création du conteneur, mais avant la première AWS Lambda exécution du gestionnaire. La fonction Lambda présentée dans Étape 4 : créer et tester une fonction Lambda contient un code d'initialisation qui importe le SDK pour JavaScript in Node.js et crée un client pour Amazon SNS. Ces objets doivent être définis une seule fois, en dehors du gestionnaire.

Une fois la fonction exécutée, vous AWS Lambda pouvez choisir de réutiliser le conteneur pour les appels ultérieurs 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 utilisant AWS Lambda, nous recommandons ce qui suit :

  • AWS les clients de service doivent être instanciés dans le code d'initialisation, et non dans le gestionnaire. Cela permet AWS Lambda de réutiliser les connexions existantes pendant toute la durée de vie du conteneur.

  • En général, vous n'avez pas besoin de gérer explicitement les connexions ni de mettre en œuvre un pool de connexions, car il AWS Lambda gère tout cela pour vous.

Un consommateur Lambda pour un flux DynamoDB fournit au moins une diffusion : il ne garantit pas une diffusion exactement une fois et peut traiter le même enregistrement plusieurs fois (par exemple, lors d'une nouvelle tentative d'appel de fonction). Cela est distinct de la garantie DynamoDB Streams selon laquelle chaque enregistrement de flux apparaît exactement une fois dans le flux. Cette garantie décrit les enregistrements stockés dans le flux, et non le nombre de fois qu'un utilisateur les traite. Pour éviter des problèmes inattendus liés au traitement dupliqué, assurez-vous que le code de votre fonction Lambda est idempotent.

Pour plus d'informations, consultez la section Bonnes pratiques relatives à l'utilisation AWS Lambda des fonctions dans le Guide du AWS Lambda développeur.