View a markdown version of this page

Bewährte Methoden zur Verwendung von DynamoDB Streams mit Lambda - Amazon DynamoDB

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Bewährte Methoden zur Verwendung von DynamoDB Streams mit Lambda

Eine AWS Lambda Funktion wird in einem Container ausgeführt — einer Ausführungsumgebung, die von anderen Funktionen isoliert ist. Wenn Sie eine Funktion zum ersten Mal ausführen, AWS Lambda wird ein neuer Container erstellt und mit der Ausführung des Funktionscodes begonnen.

Eine Lambda-Funktion hat einen Handler, der einmal pro Aufruf ausgeführt wird. Der Handler enthält die Hauptgeschäftslogik für die Funktion. Die Lambda-Funktion in Schritt 4: Erstellen und Testen einer Lambda-Funktion verfügt z. B. über einen Handler, der Datensätze in einem DynamoDB-Stream verarbeiten kann.

Sie können auch Initialisierungscode angeben, der nur einmal ausgeführt wird — nachdem der Container erstellt wurde, aber bevor der Handler zum ersten Mal AWS Lambda ausgeführt wird. Die in gezeigte Lambda-Funktion Schritt 4: Erstellen und Testen einer Lambda-Funktion enthält einen Initialisierungscode, der das SDK für JavaScript in importiert und einen Client für Node.js Amazon SNS erstellt. Diese Objekte sollten nur einmal außerhalb des Handlers definiert werden.

Nach der Ausführung der Funktion entscheiden Sie sich AWS Lambda möglicherweise dafür, den Container für nachfolgende Aufrufe der Funktion wiederzuverwenden. In diesem Fall kann Ihr Funktions-Handler die Ressourcen, die Sie in Ihrem Initialisierungscode definiert haben, erneut nutzen. (Sie können nicht steuern, wie lange AWS Lambda den Container beibehält oder ob der Container überhaupt wiederverwendet wird.)

Für die Verwendung von DynamoDB-Triggern empfehlen wir AWS Lambda Folgendes:

  • AWS Service-Clients sollten im Initialisierungscode instanziiert werden, nicht im Handler. Dies ermöglicht AWS Lambda die Wiederverwendung vorhandener Verbindungen für die gesamte Lebensdauer des Containers.

  • Im Allgemeinen müssen Sie Verbindungen nicht explizit verwalten oder Verbindungspooling implementieren, da dies für Sie AWS Lambda verwaltet wird.

Ein Lambda-Consumer für einen DynamoDB-Stream bietet mindestens einmal eine Übertragung: Er garantiert nicht, dass die Übertragung exakt einmal erfolgt, und kann denselben Datensatz möglicherweise mehrmals verarbeiten (z. B. wenn ein Funktionsaufruf wiederholt wird). Dies unterscheidet sich von der DynamoDB-Streams-Garantie, dass jeder Stream-Datensatz genau einmal im Stream vorkommt — diese Garantie beschreibt die Datensätze, die im Stream gespeichert sind, nicht die Häufigkeit, mit der ein Verbraucher sie verarbeitet. Um unerwartete Probleme durch doppelte Verarbeitung zu vermeiden, stellen Sie sicher, dass Ihr Lambda-Funktionscode idempotent ist.

Weitere Informationen finden Sie im Entwicklerhandbuch unter Bewährte Methoden für die AWS Lambda Arbeit mit AWS Lambda Funktionen.