Integration von DynamoDB mit Amazon EventBridge - 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.

Integration von DynamoDB mit Amazon EventBridge

Amazon DynamoDB bietet DynamoDB Streams für die Erfassung von Änderungsdaten, sodass Änderungen auf Artikelebene in DynamoDB-Tabellen erfasst werden können. DynamoDB Streams können Lambda-Funktionen aufrufen, um diese Änderungen zu verarbeiten, was eine ereignisgesteuerte Integration mit anderen Diensten und Anwendungen ermöglicht. DynamoDB Streams unterstützt auch das Filtern, was eine effiziente und gezielte Ereignisverarbeitung ermöglicht.

DynamoDB Streams unterstützt bis zu zwei gleichzeitige Verbraucher pro Shard und unterstützt die Filterung durch Lambda-Ereignisfilterung, sodass nur Elemente verarbeitet werden, die bestimmten Kriterien entsprechen. Bei einigen Kunden müssen möglicherweise mehr als zwei Verbraucher unterstützt werden. Andere müssen möglicherweise Änderungsereignisse vor der Verarbeitung erweitern 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 Bus kann dann über eine Reihe von Regeln und Zielen auf mehrere Anwendungen und Dienste 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.

Das Bild zeigt, wie DynamoDB Streams in einen EventBridge Amazon-Bus integriert werden.

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 basiert darauf, welche Regeln dem Inhalt des Ereignisses entsprechen. Optional bietet die Pipe auch 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 Fan-Out-Designs wird jedoch häufig eine Lambda-Funktion als Ziel verwendet. Das folgende Beispiel zeigt eine Integration mit einem Lambda-Funktionsziel.

Eine Integration über die Konsole erstellen

Gehen Sie wie folgt vor, um eine Integration über die zu erstellen AWS Management Console.

  1. Aktivieren Sie DynamoDB Streams in der Quelltabelle, indem Sie die Schritte im Aktivieren eines Streams Abschnitt 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 ohne ETL Integration mit Amazon OpenSearch Service oder Anwendungen sein, die direkt aus Streams lesen, z. B. über den DynamoDB Streams Kinesis-Adapter.

  2. Erstellen Sie einen EventBridge Event-Bus, indem Sie die Schritte im Abschnitt EventBridge Amazon-Event-Bus erstellen des EventBridge Benutzerhandbuchs befolgen.

    1. Wenn Sie den Event-Bus erstellen, aktivieren Sie die Schemaerkennung.

  3. Erstellen Sie eine EventBridge Pipe, indem Sie den Schritten im Abschnitt Erstellen einer EventBridge Amazon-Leitung des EventBridge Benutzerhandbuchs folgen.

    1. Wählen Sie bei der Konfiguration der Quelle im Feld Quelle DynamoDB und im Feld DynamoDB Streams den Namen des Quelltabellenstreams aus.

    2. Wählen Sie bei der Konfiguration des Ziels im Feld Zieldienst den EventBridge Event-Bus und im Feld Event-Bus als Ziel den in Schritt 2 erstellten Event-Bus aus.

  4. Schreiben Sie ein Beispielelement in die DynamoDB-Quelltabelle, um ein Ereignis auszulösen. Dies ermöglicht es EventBridge , das Schema aus dem Beispielelement abzuleiten. Dieses Schema kann verwendet werden, um Regeln für Routing-Ereignisse zu erstellen. Wenn Sie beispielsweise ein Entwurfsmuster implementieren, das das Überladen von Attributen beinhaltet, möchten Sie möglicherweise je nach Wert Ihres Sortierschlüssels unterschiedliche Regeln auslösen. Einzelheiten zum Schreiben eines Elements in DynamoDB finden Sie im Abschnitt Arbeiten mit Elementen und Attributen im DynamoDB-Entwicklerhandbuch.

  5. Erstellen Sie eine Python-Lambda-Beispielfunktion, die als Ziel verwendet werden soll, indem Sie die Schritte im Abschnitt „Lambda-Funktionen mit Python erstellen“ des Lambda-Entwicklerhandbuchs befolgen. Bei der Erstellung Ihrer Funktion können Sie den folgenden Beispielcode verwenden, um die Integration zu demonstrieren. Wenn es aufgerufen wird, druckt es das NewImage und das OldImage empfangene Ereignis aus, das in den CloudWatch Protokollen 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)}
  6. 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.

    1. Wählen Sie bei der Definition der Regeldetails den Namen des Event-Busses, den Sie in Schritt 2 erstellt haben, als Event-Bus aus.

    2. Folgen Sie beim Erstellen des Ereignismusters der Anleitung für Existierendes Schema. Hier können Sie die Registrierung für entdeckte 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, das nur Nachrichten weiterleitet, die bestimmten Attributen entsprechen. Wenn Sie beispielsweise nur DynamoDB-Elemente abgleichen möchten“user#”, mit denen der SK beginnt, würden Sie eine Konfiguration wie diese verwenden.

      Das Bild zeigt eine EventBridge Regel, bei der nur DynamoDB-Elemente angezeigt werden, deren Sortierschlüssel mit „user#“ beginnt.
    3. Wenn Sie mit dem Entwerfen eines Musters JSON anhand Ihres Schemas fertig sind, klicken Sie auf Ereignismuster generieren. Wenn Sie stattdessen alle Ereignisse abgleichen möchten, die in DynamoDB Streams erscheinen, verwenden Sie Folgendes JSON für das Ereignismuster.

      { "source": ["aws.dynamodb"] }
    4. Folgen Sie bei der Auswahl von Zielen der Serviceanleitung. AWS Wählen Sie im Feld Ziel auswählen die Option „Lambda-Funktion“. Wählen Sie im Feld Funktion die Lambda-Funktion aus, die Sie in Schritt 5 erstellt haben.

  7. 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.

  8. 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.

    1. Sehen Sie sich die CloudWatch Metrik PutEventsApproximateSuccessCountfür Ihren Event-Bus an, indem Sie dem EventBridge Abschnitt Monitoring Amazon des EventBridge Benutzerhandbuchs folgen.

    2. Sehen Sie sich Funktionsprotokolle für Ihre Lambda-Funktion an, indem Sie dem Abschnitt Überwachung und Fehlerbehebung von Lambda-Funktionen im Lambda-Entwicklerhandbuch folgen. Wenn Ihre Lambda-Funktion den bereitgestellten Beispielcode verwendet, sollten Sie die Daten NewImage und OldImage aus DynamoDB Streams in der CloudWatch Protokollgruppe Logs sehen.

    3. Sehen Sie sich die Metrik Fehleranzahl und Erfolgsrate (%) für Ihre Lambda-Funktion an, indem Sie dem Abschnitt Überwachung und Fehlerbehebung von Lambda-Funktionen im Lambda-Entwicklerhandbuch folgen.

Nächste Schritte

Dieses Beispiel bietet eine grundlegende Integration mit einer einzigen 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

Beachten Sie alle EventBridge Kontingente, die für Ihre Anwendung relevant sein könnten. Während die Kapazität von DynamoDB Streams mit Ihrer Tabelle skaliert, sind die EventBridge Kontingente 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 in den Bus übertragen werden können.