

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
<a name="Streams.Timestamp"></a>

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
<a name="Streams.Timestamp.Prerequisites"></a>

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](Streams.KCLAdapter.md).

## Konfigurieren Sie den Startzeitstempel
<a name="Streams.Timestamp.Configure"></a>

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

1. Übergeben Sie es an `StreamsSchedulerFactory.createSingleStreamTracker`.

1. 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
<a name="Streams.Timestamp.Scenarios"></a>

### Der Zeitstempel ist älter als die beibehaltenen Stream-Datensätze
<a name="Streams.Timestamp.Scenarios.OlderThanRetention"></a>

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
<a name="Streams.Timestamp.Scenarios.Future"></a>

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
<a name="Streams.Timestamp.ConfigChange"></a>

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

1. **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
<a name="Streams.Timestamp.Pricing"></a>

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](https://aws.amazon.com/dynamodb/pricing/).

## Weitere Informationen finden Sie auch unter
<a name="Streams.Timestamp.SeeAlso"></a>
+ [Verwenden des DynamoDB-Streams-Kinesis-Adapters zum Verarbeiten von Stream-Datensätzen](Streams.KCLAdapter.md)
+ [Entwicklung von Verbrauchern mithilfe der Kinesis Client Library](https://docs.aws.amazon.com/streams/latest/dev/kcl.html)
+ [DynamoDB Streams Kinesis-Adapter auf dem GitHub Webseite](https://github.com/awslabs/dynamodb-streams-kinesis-adapter)