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.
Integration von DynamoDB mit 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.
Die Integration von DynamoDB mit EventBridge kann diese Anforderungen unterstützen.
Amazon EventBridge ist ein serverloser Service, der Ereignisse verwendet, um Anwendungskomponenten miteinander zu verbinden, sodass Sie leichter skalierbare, ereignisgesteuerte Anwendungen erstellen können. EventBridge bietet native Integration mit Amazon DynamoDB über EventBridge Pipes und ermöglicht so einen nahtlosen Datenfluss von DynamoDB zu einem Bus. EventBridge Dieser kann dann über eine Reihe von Regeln und Zielen auf mehrere Anwendungen und Services ausgeweitet werden.
Funktionsweise
Die Integration zwischen DynamoDB und EventBridge Pipes verwendet DynamoDB Streams, um eine zeitlich geordnete Abfolge von Änderungen auf Elementebene in einer DynamoDB-Tabelle zu erfassen. 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 wie einen Bus weiter (ein EventBridge Eventbus ist ein Router, der Ereignisse empfängt und sie an Ziele, auch Ziele genannt, 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, aber bei der Implementierung eines Fan-Out-Designs wird 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, DynamoDB Global Tables, Amazon DynamoDB Zero-ETL-Integrationen mit 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 EventBridge Amazon-Event-Bus erstellen des EventBridge Benutzerhandbuchs befolgen.
-
Aktivieren Sie bei der Erstellung des Event Bus die Schemaerkennung.
-
-
Erstellen Sie eine EventBridge Pipe, indem Sie den Schritten im Abschnitt Erstellen einer EventBridge Amazon-Leitung des EventBridge Benutzerhandbuchs folgen.
-
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 Zieldienst 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. Dies ermöglicht es EventBridge , das Schema aus dem Beispielelement abzuleiten. 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. Wenn es aufgerufen wird, druckt es das
NewImageund dasOldImageempfangene Ereignis aus, das in CloudWatch Logs eingesehen werden kann.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 Ihre neue Lambda-Funktion weiterleitet, indem Sie die Schritte im Abschnitt „Regel erstellen, die auf Ereignisse reagiert“ EventBridge befolgen.
-
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 Serviceanleitung. AWS 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 auf Ihrem Event-Bus beenden, indem Sie die Schritte im Abschnitt Schemaerkennung in Event-Bussen starten oder beenden 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 PutEventsApproximateSuccessCountfür Ihren Event-Bus an, indem Sie dem EventBridge Abschnitt Monitoring Amazon des EventBridge Benutzerhandbuchs folgen.
-
Sehen Sie sich Funktionsprotokolle für die Lambda-Funktion gemäß dem Abschnitt Überwachung und Fehlerbehebung bei Lambda-Funktionen im Lambda-Entwicklerhandbuch an. Wenn Ihre Lambda-Funktion den bereitgestellten Beispielcode verwendet, sollten Sie die Daten
NewImageundOldImageaus DynamoDB Streams in der CloudWatch Protokollgruppe Logs 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. Ein besseres Verständnis komplexerer Konfigurationen, wie z. B. das Erstellen mehrerer Regeln, das Erstellen mehrerer Ziele, die Integration mit anderen Diensten und das Anreichern von Ereignissen, finden Sie im vollständigen EventBridge Benutzerhandbuch: Erste Schritte mit. EventBridge
Anmerkung
Achten Sie auf alle EventBridge Kontingente, die für Ihre Anwendung relevant sein könnten. Die Kapazität von DynamoDB Streams skaliert zwar mit Ihrer Tabelle, die EventBridge Kontingente sind jedoch separat. Zu den üblichen Quoten, die bei einer großen Anwendung beachtet werden müssen, gehören die Begrenzung der Anzahl der Transaktionen pro Sekunde für Aufrufe und die PutEventsDrosselung der 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.