Ändern Sie die Datenerfassung für DynamoDB Streams - 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.

Ändern Sie die Datenerfassung für DynamoDB Streams

DynamoDB Streams erfasst eine zeitlich geordnete Abfolge von Änderungen auf Elementebene in jeder beliebigen DynamoDB-Tabelle und speichert diese Informationen bis zu 24 Stunden. Anwendungen können auf dieses Protokoll zugreifen und die Datenelemente vor und nach der Änderung nahezu in Echtzeit aufrufen.

Die Verschlüsselung ruhender Daten verschlüsselt die Daten in DynamoDB Streams. Weitere Informationen finden Sie unter Ruhende DynamoDB-Verschlüsselung.

Ein DynamoDB-Stream ist ein strukturierter Informationsfluss zu Elementänderungen in einer DynamoDB-Tabelle. Wenn Sie den Stream für eine Tabelle aktivieren, werden von DynamoDB Informationen über jede Änderung an den Datenelementen in der Tabelle erfasst.

Wenn eine Anwendung Elemente in der Tabelle erstellt, aktualisiert oder löscht, schreibt DynamoDB Streams einen Stream-Datensatz mit dem bzw. den Primärschlüsselattributen der Elemente, die geändert wurden. Ein Stream-Datensatz enthält Informationen über eine Datenänderung an einem einzelnen Element einer DynamoDB-Tabelle. Sie können den Stream konfigurieren, sodass die Stream-Datensätze zusätzliche Informationen erfassen, z. B. Images der geänderten Elemente vor und nach der Änderung.

Mit DynamoDB Streams wird Folgendes sichergestellt:

  • Jeder Stream-Datensatz erscheint genau einmal im Stream.

  • Für jedes Element, das in einer DynamoDB-Tabelle geändert wird, erscheinen die Stream-Datensätze in der gleichen Reihenfolge wie die tatsächlichen Änderungen des Elements.

DynamoDB Streams schreibt Stream-Datensätze nahezu in Echtzeit, sodass Sie Anwendungen erstellen können, die diese Streams verbrauchen und basierend auf den Inhalten Aktionen einleiten.

Endpunkte für DynamoDB Streams

AWS verwaltet separate Endpunkte für DynamoDB- und DynamoDB Streams. Für die Arbeit mit Datenbanktabellen und Indexen muss Ihre Anwendung auf einen DynamoDB-Endpunkt zugreifen. Um DynamoDB-Streams-Datensätze zu lesen und zu verarbeiten, muss die Anwendung auf einen DynamoDB-Streams-Endpunkt in derselben Region zugreifen.

Die Namenskonvention für DynamoDB-Streams-Endpunkte lautet streams.dynamodb.<region>.amazonaws.com. Wenn Sie beispielsweise den Endpunkt dynamodb.us-west-2.amazonaws.com für den Zugriff auf DynamoDB verwenden, verwenden Sie den Endpunkt streams.dynamodb.us-west-2.amazonaws.com für den Zugriff auf DynamoDB-Streams.

Anmerkung

Eine vollständige Liste der DynamoDB- und DynamoDB-Streams-Regionen und Endpunkte finden Sie unter Regionen und Endpunkte in der Allgemeine AWS-Referenz.

AWS SDKsSie bieten separate Clients für DynamoDB- und DynamoDB Streams. Je nach Anforderung kann die Anwendung auf einen DynamoDB-Endpunkt, einen DynamoDB-Streams-Endpunkt oder beide gleichzeitig zugreifen. Für die Verbindung mit beiden Endpunkten muss Ihre Anwendung zwei Clients instanziieren, und zwar einen für DynamoDB und einen für DynamoDB Streams.

Aktivieren eines Streams

Sie können einen Stream für eine neue Tabelle aktivieren, wenn Sie ihn mit der AWS CLI oder einer der folgenden Optionen erstellen. AWS SDKs Außerdem können Sie einen Stream in einer vorhandenen Tabelle aktivieren oder deaktivieren oder die Einstellungen eines Streams ändern. DynamoDB Streams wird asynchron betrieben. Daher wirkt es sich nicht auf die Leistung der Tabelle aus, wenn Sie einen Stream aktivieren.

Die einfachste Möglichkeit zum Verwalten von DynamoDB Streams bietet die AWS Management Console.

  1. Melden Sie sich bei der an AWS Management Console und öffnen Sie die DynamoDB-Konsole unter. https://console.aws.amazon.com/dynamodb/

  2. Wählen Sie im Dashboard der DynamoDB-Konsole die Option Tables (Tabellen) aus und wählen Sie eine vorhandene Tabelle aus.

  3. Wählen Sie die Registerkarte Exports and streams (Exporte und Streams).

  4. Wählen Sie im Abschnitt DynamoDB-Stream-Details die Option Turn on aus.

  5. Wählen Sie auf der Seite DynamoDB-Stream aktivieren die Informationen aus, die in den Stream geschrieben werden, wenn die Daten in der Tabelle geändert werden:

    • Nur Schlüsselattribute – nur die Schlüsselattribute des geänderten Elements.

    • Neues Image – das gesamte Element wie es nach der Änderung erscheint.

    • Altes Image – das gesamte Element wie es vor der Änderung erscheint.

    • Neues und altes Image – sowohl das neue als auch das alte Image des Elements.

    Wenn die Einstellungen Ihren Wünschen entsprechen, wählen Sie Stream einschalten.

  6. (Optional) Um einen vorhandenen Stream zu deaktivieren, wählen Sie unter DynamoDB-Stream-Details die Option Ausschalten aus.

Sie können auch die UpdateTable API Operationen CreateTable oder verwenden, um einen Stream zu aktivieren oder zu ändern. Der Parameter StreamSpecification bestimmt, wie der Stream konfiguriert wird:

  • StreamEnabled – gibt an, ob ein Stream für die Tabelle aktiviert (true) oder deaktiviert (false) ist.

  • StreamViewType – legt die Informationen fest, die in den Stream geschrieben werden, sobald Daten in der Tabelle geändert werden:

    • KEYS_ONLY – nur die Schlüsselattribute des geänderten Elements.

    • NEW_IMAGE – das gesamte Element, wie es nach der Änderung erscheint.

    • OLD_IMAGE – das gesamte Element, wie es vor der Änderung erscheint.

    • NEW_AND_OLD_IMAGES – sowohl das neue als auch das alte Image des Elements.

Sie können einen Stream jederzeit aktivieren oder deaktivieren. Wenn Sie versuchen, einen Stream für eine Tabelle zu aktivieren, die bereits über einen Stream verfügt, erhalten Sie jedoch eine ValidationException. Sie erhalten auch eine, ValidationException wenn Sie versuchen, einen Stream in einer Tabelle zu deaktivieren, die keinen Stream hat.

Wenn Sie StreamEnabled auf true festlegen, erstellt DynamoDB einen neuen Stream mit einem zugewiesenen, eindeutigen Stream-Deskriptor. Wenn Sie einen Stream in der Tabelle deaktivieren und anschließend erneut aktivieren, wird ein neuer Stream mit einem anderen Stream-Deskriptor erstellt.

Jeder Stream wird eindeutig durch einen Amazon-Ressourcennamen (ARN) identifiziert. Im Folgenden finden Sie ein Beispiel ARN für einen Stream in einer DynamoDB-Tabelle mit dem Namen. TestTable

arn:aws:dynamodb:us-west-2:111122223333:table/TestTable/stream/2015-05-11T21:21:33.291

Um den aktuellen Stream-Deskriptor für eine Tabelle zu bestimmen, erstellen Sie eine DynamoDB-Anforderung DescribeTable und suchen das Element LatestStreamArn in der Antwort.

Anmerkung

Es ist nicht möglich, ein StreamViewType zu bearbeiten, sobald ein Stream eingerichtet wurde. Wenn Sie nach der Einrichtung Änderungen an einem Stream vornehmen möchten, müssen Sie den aktuellen Stream deaktivieren und einen neuen erstellen.

Lesen und Verarbeiten eines Streams

Um einen Stream zu lesen und zu verarbeiten, muss Ihre Anwendung eine Verbindung zu einem DynamoDB Streams Streams-Endpunkt herstellen und Anfragen ausgebenAPI.

Ein Stream besteht aus Stream-Datensätzen. Jeder Stream-Datensatz stellt eine einzelne Datenänderung in der DynamoDB-Tabelle dar, zu der der Stream gehört. Jedem Stream-Datensatz ist eine Sequenznummer zugewiesen, wodurch die Reihenfolge dargestellt wird, in der der Datensatz im Stream veröffentlicht wurde.

Stream-Datensätze werden in Gruppen oder Shards verwaltet. Jeder Shard fungiert als Container für mehrere Stream-Datensätze und enthält Informationen, die zum Abrufen und Durchlaufen dieser Datensätze erforderlich sind. Die Stream-Datensätze in einem Shard werden nach 24 Stunden automatisch entfernt.

Shards sind flüchtig, d. h., sie werden nach Bedarf automatisch erstellt und gelöscht. Jeder Shard kann in mehrere neue Shards unterteilt werden. Dieser Vorgang erfolgt automatisch. (Es ist auch möglich, dass ein übergeordneter Shard nur einen untergeordneten Shard besitzt.) Ein Shard kann aufgrund hoher Schreibaktivitäten in der übergeordneten Tabelle aufgeteilt werden, sodass Anwendungen Datensätze aus mehreren Shards parallel verarbeiten können.

Wenn Sie einen Stream deaktivieren, werden alle offenen Shards geschlossen. Die Daten im Stream bleiben 24 Stunden lang lesbar.

Da Shards hierarchisch (über- und untergeordnet) aufgebaut sind, müssen Anwendungen einen übergeordneten Shard immer vor einem untergeordneten Shard verarbeiten. So wird sichergestellt, dass die Stream-Datensätze ebenfalls in der richtigen Reihenfolge verarbeitet werden. (Wenn Sie den DynamoDB-Streams-Kinesis-Adapter verwenden, wird dies für Sie erledigt. Ihre Anwendung verarbeitet die Shards und Streamdatensätze in der richtigen Reihenfolge. Es verarbeitet automatisch neue oder abgelaufene Shards sowie Shards, die sich während der Ausführung der Anwendung teilen. Weitere Informationen finden Sie unter Verwenden des DynamoDB-Streams-Kinesis-Adapters zum Verarbeiten von Stream-Datensätzen.)

Das folgende Diagramm zeigt die Beziehung zwischen einem Stream, Shards im Stream und Stream-Datensätzen in den Shards.

Struktur von DynamoDB Streams. Stream-Datensätze, die Datenänderungen darstellen, sind in Shards organisiert.
Anmerkung

Wenn Sie eine PutItem oder UpdateItem Operation ausführen, mit der keine Daten in einem Element geändert werden, schreibt DynamoDB Streams keinen Stream-Datensatz für diese Operation.

Um auf einen Stream zuzugreifen und die darin enthaltenen Stream-Datensätze zu verarbeiten, führen Sie die folgenden Schritte aus:

  • Ermitteln Sie die eindeutige ARN Kennung des Streams, auf den Sie zugreifen möchten.

  • Bestimmen Sie, welcher bzw. welche Shards im Stream die gewünschten Stream-Datensätze enthalten.

  • Greifen Sie auf den bzw. die Shards zu und rufen Sie die gewünschten Stream-Datensätze ab.

Anmerkung

Es sollten nicht mehr als zwei Prozesse gleichzeitig aus dem Shard desselben Streams lesen. Wenn mehr als zwei Leser pro Shard vorhanden sind, kann eine Drosselung die Folge sein.

Der DynamoDB Streams API bietet die folgenden Aktionen zur Verwendung durch Anwendungsprogramme:

  • ListStreams – Gibt eine Liste der Stream-Deskriptoren für das aktuelle Konto und den Endpunkt zurück. Sie können optional nur die Stream-Deskriptoren für einen bestimmten Tabellennamen anfordern.

  • DescribeStream – Gibt detaillierte Informationen über einen bestimmten Stream zurück. Die Ausgabe enthält eine Liste von Shards, die dem Stream zugeordnet sind, einschließlich des Shards. IDs

  • GetShardIterator – Gibt einen Shard Iterator zurück, der eine Position innerhalb eines Shards beschreibt. Sie können anfordern, dass der Iterator Zugriff auf den ältesten Punkt, den neuesten Punkt oder einen bestimmten Punkt im Stream bereitstellt.

  • GetRecords – Gibt die Stream-Datensätze innerhalb eines bestimmten Shards zurück. Sie müssen den von einer GetShardIterator-Anforderung zurückgegebenen Shard Iterator angeben.

Vollständige Beschreibungen dieser API Vorgänge, einschließlich Beispielanfragen und -antworten, finden Sie in der Amazon DynamoDB API Streams-Referenz.

Datenaufbewahrungsfrist für DynamoDB Streams

Alle Daten in DynamoDB Streams unterliegen einer 24-Stunden-Nutzungsdauer. Sie können die Aktivitäten der letzten 24 Stunden für eine bestimmte Tabelle abrufen und analysieren. Daten, die älter als 24 Stunden sind, können jedoch jederzeit entfernt werden.

Wenn Sie einen Stream in einer Tabelle deaktivieren, bleiben die Daten im Stream 24 Stunden lang lesbar. Nach Ablauf dieses Zeitraums verfallen die Daten und die Stream-Datensätze werden automatisch gelöscht. Es gibt keinen Mechanismus zum manuellen Löschen eines vorhandenen Streams. Sie müssen nur warten, bis die Aufbewahrungsfrist abgelaufen ist (24 Stunden) und alle Stream-Datensätze gelöscht werden.