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.
Integrieren von DynamoDB in Amazon EventBridge
Amazon DynamoDB verfügt über DynamoDB Streams für die Erfassung von Änderungsdaten und somit die Erfassung von Änderungen in DynamoDB-Tabellen auf Elementebene. DynamoDB Streams kann Lambda-Funktionen zur Verarbeitung dieser Änderungen aufrufen, wodurch eine ereignisgesteuerte Integration in andere Services und Anwendungen ermöglicht wird. DynamoDB Streams unterstützt auch das Filtern als effiziente und gezielte Ereignisverarbeitungsmethode.
DynamoDB Streams unterstützt bis zu zwei gleichzeitige Verbraucher pro Shard sowie das Filtern mittels Lambda-Ereignisfilterung, sodass nur Elemente verarbeitet werden, die bestimmten Kriterien entsprechen. Manche Kunden benötigen Unterstützung für mehr als zwei Verbraucher. Andere wiederum müssen möglicherweise Änderungsereignisse vor der Verarbeitung anreichern oder erweiterte Filter- und Routingfunktionen verwenden.
Eine Integration von DynamoDB in EventBridge kann alle diese Anforderungen unterstützen.
Amazon EventBridge ist ein Serverless-Service, der mithilfe von Ereignissen Anwendungskomponenten miteinander verbindet, sodass Sie leichter skalierbare, ereignisgesteuerte Anwendungen erstellen können. EventBridge stellt eine native Integration in Amazon DynamoDB über EventBridge-Pipes bereit und ermöglicht so einen reibungslosen Datenfluss von DynamoDB zu einem EventBridge-Bus. Dieser kann dann über eine Reihe von Regeln und Zielen auf mehrere Anwendungen und Services ausgeweitet werden.
Funktionsweise
Bei der Integration von DynamoDB in EventBridge-Pipes werden mithilfe von DynamoDB-Streams zeitlich geordnete Änderungssequenzen auf Elementebene in einer DynamoDB-Tabelle erfasst. Jeder auf diese Weise erfasste Datensatz enthält die in der Tabelle geänderten Daten.
Eine EventBridge-Pipe verarbeitet Ereignisse aus DynamoDB Streams und leitet sie an ein Ziel weiter, z. B. einen EventBridge-Bus (ein Event Bus ist ein Router, der Ereignisse empfängt und sie an Ziele weiterleitet). Die Übermittlung ist abhängig von den Regeln, die dem Inhalt des Ereignisses entsprechen. Die Pipe bietet ebenfalls die Möglichkeit, nach bestimmten Ereignissen zu filtern und die Ereignisdaten anzureichern, bevor sie an das Ziel gesendet werden.
EventBridge unterstützt zwar mehrere Zieltypen, bei der Implementierung eines Fanout-Designs wird jedoch häufig eine Lambda-Funktion als Ziel verwendet. Im folgenden Beispiel wird eine Integration erstellt, die eine Lambda-Funktion zum Ziel hat.
Erstellen einer Integration über die Konsole
Gehen Sie wie folgt vor, um eine Integration über die AWS-Managementkonsole zu erstellen.
-
Aktivieren Sie DynamoDB Streams in der Quelltabelle, indem Sie die Schritte im Abschnitt Aktivieren eines Streams des DynamoDB-Entwicklerhandbuchs befolgen. Wenn DynamoDB Streams in der Quelltabelle bereits aktiviert ist, stellen Sie sicher, dass derzeit weniger als zwei Verbraucher vorhanden sind. Verbraucher können Lambda-Funktionen, globale DynamoDB-Tabellen, Amazon-DynamoDB-Null-ETL-Integrationen in Amazon OpenSearch Service oder Anwendungen sein, die direkt aus Streams lesen, z. B. über den DynamoDB-Streams-Kinesis-Adapter.
-
Erstellen Sie einen EventBridge-Event-Bus, indem Sie die Schritte im Abschnitt Erstellen eines Amazon-EventBridge-Event-Bus im EventBridge-Benutzerhandbuch befolgen.
-
Aktivieren Sie bei der Erstellung des Event Bus die Schemaerkennung.
-
-
Erstellen Sie eine EventBridge-Pipe, indem Sie die Schritte im Abschnitt Erstellen einer Amazon-EventBridge-Pipe im EventBridge-Benutzerhandbuch befolgen.
-
Wählen Sie bei der Konfiguration der Quelle im Feld Quelle die Option DynamoDB und im Feld DynamoDB Streams den Namen des Streams der Quelltabelle aus.
-
Wählen Sie bei der Konfiguration des Ziels im Feld Ziel-Service die Option EventBridge-Event-Bus und im Feld Event Bus als Ziel den in Schritt 2 erstellten Event Bus aus.
-
-
Schreiben Sie ein Beispielelement in die DynamoDB-Quelltabelle, um ein Ereignis auszulösen. Dadurch kann EventBridge das Schema aus dem Beispielelement ableiten. Anhand dieses Schemas können Regeln für das Routing von Ereignissen erstellt werden. Wenn Sie beispielsweise ein Entwurfsmuster implementieren, das das Überladen von Attributen beinhaltet, sollen je nach Wert des Sortierschlüssels möglicherweise unterschiedliche Regeln ausgelöst werden. Einzelheiten zum Schreiben eines Elements in DynamoDB finden Sie im Abschnitt Arbeiten mit Elementen und Attributen im DynamoDB-Entwicklerhandbuch.
-
Erstellen Sie eine Python-Lambda-Beispielfunktion, die als Ziel verwendet werden soll, und befolgen Sie dabei die Schritte im Abschnitt Erstellen von Lambda-Funktionen mit Python im Lambda-Entwicklerhandbuch. Bei der Erstellung Ihrer Funktion können Sie den folgenden Beispielcode zur Demonstration der Integration verwenden. Beim Aufrufen der Funktion werden das
NewImageund dasOldImageausgedruckt, die mit dem Ereignis empfangen wurden, das in den CloudWatch-Protokollen aufgeführt wird.import json def lambda_handler(event, context): dynamodb = event.get('detail', {}).get('dynamodb', {}) new_image = dynamodb.get('NewImage') old_image = dynamodb.get('OldImage') if new_image: print("NewImage:", json.dumps(new_image, indent=2)) if old_image: print("OldImage:", json.dumps(old_image, indent=2)) return {'statusCode': 200, 'body': json.dumps(event)} -
Erstellen Sie eine EventBridge-Regel, die Ereignisse an die neue Lambda-Funktion weiterleitet, indem Sie die Schritte im Abschnitt Erstellen einer Regel im EventBridge-Benutzerhandbuch ausführen.
-
Wählen Sie bei der Definition der Regeldetails unter Event Bus den Namen des in Schritt 2 erstellten Event Bus aus.
-
Folgen Sie beim Erstellen des Ereignismusters der Anleitung unter Vorhandenes Schema. Hier können Sie die Registrierung erkannter Schemas und das erkannte Schema für Ihr Ereignis auswählen. Auf diese Weise können Sie ein für Ihren Anwendungsfall spezifisches Ereignismuster konfigurieren, nach dem nur Nachrichten weitergeleitet werden, die bestimmten Attributen entsprechen. Eine solche Konfiguration empfiehlt sich beispielsweise, wenn Sie nur Übereinstimmungen in DynamoDB-Elementen finden möchten, deren Sortierschlüssel mit
“user#”beginnt.
-
Klicken Sie auf Ereignismuster in JSON generieren, nachdem Sie mit dem Entwurf eines Musters anhand des Schemas fertig sind. Wenn Sie stattdessen alle Ereignisse abgleichen möchten, die in DynamoDB-Streams erscheinen, verwenden Sie für das Ereignismuster den folgenden JSON-Code.
{ "source": ["aws.dynamodb"] } -
Folgen Sie bei der Auswahl von Zielen der Anleitung für den AWS-Service. Wählen Sie unter „Ein Ziel auswählen“ Option „Lambda-Funktion“ aus. Wählen im Feld „Funktion“ die Lambda-Funktion aus, die Sie in Schritt 5 erstellt haben.
-
-
Sie können jetzt die Schemaerkennung im Event Bus beenden, indem Sie die Schritte im Abschnitt Starting or stopping schema discovery on event buses des EventBridge-Benutzerhandbuchs befolgen.
-
Schreiben Sie ein zweites Beispielelement in die DynamoDB-Quelltabelle, um ein Ereignis auszulösen. Überprüfen Sie bei jedem Schritt, ob das Ereignis erfolgreich verarbeitet wurde.
-
Sehen Sie sich die CloudWatch-Metrik PutEventsApproximateSuccessCount für den Event Bus gemäß dem Abschnitt Überwachen von Amazon EventBridge im EventBridge-Benutzerhandbuch an.
-
Sehen Sie sich Funktionsprotokolle für die Lambda-Funktion gemäß dem Abschnitt Überwachung und Fehlerbehebung bei Lambda-Funktionen im Lambda-Entwicklerhandbuch an. Wenn in der Lambda-Funktion der bereitgestellte Beispielcode verwendet wird, sollten Sie einen Ausdruck des
NewImageund esOldImageaus DynamoDB Streams in der Protokollgruppe „CloudWatch-Protokolle“ sehen. -
Sehen Sie sich die Metrik Fehlerzahl und Erfolgsquote (%) für die Lambda-Funktion gemäß dem Abschnitt Überwachung und Fehlerbehebung bei Lambda-Funktionen im Lambda-Entwicklerhandbuch an.
-
Nächste Schritte
Dieses Beispiel bietet eine grundlegende Integration mit einer einzelnen Lambda-Funktion als Ziel. Detailliertere Informationen zu komplexeren Konfigurationen, wie z. B. die Erstellung mehrerer Regeln, die Erstellung mehrerer Ziele, die Integration in andere Services und das Anreichern von Ereignissen, finden Sie im vollständigen EventBridge-Benutzerhandbuch Erste Schritte mit EventBridge.
Anmerkung
Beachten Sie die EventBridge-Kontingente, die für Ihre Anwendung relevant sein könnten. Während die Kapazität von DynamoDB Streams mit Ihrer Tabelle skaliert wird, werden die EventBridge-Kontingente separat erfasst. Zu den üblichen Kontingenten, die bei einer großen Anwendung beachtet werden müssen, gehören das Drossel-Limit für Aufrufe in Transaktionen pro Sekunde und das Drossel-Limit für PutEvents in Transaktionen pro Sekunde. Diese Kontingente geben die Anzahl der Aufrufe an, die an Ziele gesendet werden können, und die Anzahl der Ereignisse, die pro Sekunde an den Bus übertragen werden können.