View a markdown version of this page

Verwenden des DynamoDB Streams Kinesis-Adapters zum Lesen von Datensätzen aus einem Zeitstempel - 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.

Verwenden des DynamoDB Streams Kinesis-Adapters zum Lesen von Datensätzen aus einem Zeitstempel

Bei der zeitstempelbasierten Stream-Verarbeitung können Sie ab einem bestimmten Zeitpunkt mit dem Lesen von DynamoDB Streams-Datensätzen beginnen. In diesem Handbuch wird erklärt, wie Sie die Funktion mit dem DynamoDB Streams Kinesis-Adapter konfigurieren und wie sie sich in verschiedenen Szenarien verhält.

Voraussetzungen

Um DynamoDB Streams-Datensätze ab einem bestimmten Zeitpunkt zu lesen, stellen Sie sicher, dass Ihre Anwendung Folgendes verwendet:

  • DynamoDB Streams Kinesis Adapter Version 2.5.0 oder höher.

  • Das Gleiche AWS Identity and Access Management (IAM) -Berechtigungen, die für eine vorhandene Adapteranwendung erforderlich sind. Für diese Funktion sind keine zusätzlichen API-Berechtigungen erforderlich.

Weitere Informationen zur Adaptereinrichtung finden Sie unter Verwenden des DynamoDB-Streams-Kinesis-Adapters zum Verarbeiten von Stream-Datensätzen.

Konfigurieren Sie den Startzeitstempel

  1. Erstellen Sie eine InitialPositionInStreamExtended Instanz mit dem gewünschten Zeitstempel.

  2. Übergeben Sie es an StreamsSchedulerFactory.createSingleStreamTracker.

  3. Füge die zurückgegebenen hinzu StreamTracker zum ConfigsBuilder für Ihre Kinesis Client Library (KCL) -Anwendung.

Das folgende Java-Beispiel zeigt, wie der Startzeitstempel konfiguriert wird:

// Create the initial position with the desired timestamp InitialPositionInStreamExtended initialPosition = InitialPositionInStreamExtended.newInitialPositionAtTimestamp( Date.from(Instant.ofEpochMilli(1790467200000L))); // Create the stream tracker StreamTracker streamTracker = StreamsSchedulerFactory.createSingleStreamTracker( streamArn, initialPosition); // Register the stream tracker, so that the scheduler uses the configured timestamp to read shards configsBuilder.streamTracker(streamTracker);

Der Adapter initialisiert jedes neue Leasing mit AT_TIMESTAMP als Ausgangsposition. Für jeden Mietvertrag ruft es GetShardIterator mit dem angegebenen Zeitstempel, um einen Iterator zu erhalten. Dann übergibt es den Iterator an GetRecords, was Datensätze zurückgibt, die mit dem ersten Datensatz beginnen, dessen ApproximateCreationDateTime am oder nach dem angegebenen Zeitstempel liegt.

Zeitstempel-Szenarien

Der Zeitstempel ist älter als die beibehaltenen Stream-Datensätze

Die Anwendung beginnt mit dem ältesten Datensatz, der in jedem Shard noch verfügbar ist. Sie gibt keinen Fehler zurück. Sie können keine Datensätze wiederherstellen, die das 24-Stunden-Aufbewahrungsfenster von DynamoDB Streams überschritten haben.

Der Zeitstempel liegt in der Zukunft

Der Adapter validiert den Zeitstempel während der Initialisierung. Wenn der Zeitstempel in der Zukunft liegt, lehnt der Adapter ihn ab, ohne API-Aufrufe zu tätigen, und die Verarbeitung kann nicht gestartet werden. Verwenden Sie einen Zeitstempel zur oder vor der aktuellen Uhrzeit. Berücksichtigen Sie die Uhrzeitunterschiede zwischen dem Anwendungshost und dem Dienst, wenn Sie einen Zeitstempel wählen, der der aktuellen Uhrzeit nahe kommt.

Änderung des Zeitstempels oder der Anfangsposition mit einer vorhandenen Leasing-Tabelle

Ändern Sie nicht den Zeitstempel und wechseln Sie nicht zwischen AT_TIMESTAMP, TRIM_HORIZON, und LATEST in einer laufenden Anwendung, deren Status in der Leasing-Tabelle gespeichert ist. Shards, die Sequenznummern als Checkpoints in der Leasetabelle speichern, werden von diesen Checkpoints aus weitergeführt. Shards, die noch nicht gestartet wurden, können die neue Konfiguration verwenden oder ausfallen, wenn sie nicht mit ihren bestehenden Leases kompatibel ist. Die Anwendung kann daher verschiedene Shards aus unterschiedlichen Startpositionen verarbeiten.

Um eine der beiden Änderungen sicher anzuwenden, beenden Sie die bestehende Anwendung und wählen Sie eine der folgenden Methoden:

  1. Löschen Sie die Leasing-Tabelle und starten Sie die Anwendung neu (empfohlen): Stoppen Sie jeden Worker, löschen Sie die vorhandene Leasetabelle, aktualisieren Sie die Konfiguration und starten Sie dann die Anwendung neu.

  2. Verwenden Sie einen neuen Anwendungsnamen: Der Adapter erstellt eine neue Leasetabelle und wendet den neuen Zeitstempel oder die neue Anfangsposition an, wenn die Anwendung gestartet wird. Standardmäßig verwendet KCL den Anwendungsnamen als Namen der Leasetabelle, sofern er nicht ausdrücklich überschrieben wird. Die bestehende Leasing-Tabelle bleibt verfügbar, falls Sie ein Rollback durchführen müssen.

Preisgestaltung

Für das Lesen von Stream-Datensätzen aus einem Zeitstempel, der über den Standard hinausgeht, fallen keine zusätzlichen Gebühren an GetRecords Gebühren. Weitere Informationen finden Sie unter Preisgestaltung für DynamoDB.

Weitere Informationen finden Sie auch unter