

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Utilisation de l'adaptateur DynamoDB Streams Kinesis pour lire des enregistrements à partir d'un horodatage
<a name="Streams.Timestamp"></a>

Grâce au traitement des flux basé sur l'horodatage, vous pouvez commencer à lire les enregistrements DynamoDB Streams à partir d'un moment précis. Ce guide explique comment configurer cette fonctionnalité à l'aide de l'adaptateur DynamoDB Streams Kinesis et comment elle se comporte dans différents scénarios.

## Conditions préalables
<a name="Streams.Timestamp.Prerequisites"></a>

Pour lire les enregistrements DynamoDB Streams à un moment précis, assurez-vous que votre application utilise les éléments suivants :
+ Adaptateur DynamoDB Streams Kinesis version 2.5.0 ou ultérieure.
+ Le même *Gestion des identités et des accès AWS* autorisations (IAM) requises par une application d'adaptateur existante. Cette fonctionnalité ne nécessite pas d'autorisations d'API supplémentaires.

Pour plus d'informations sur la configuration de l'adaptateur, voir [Utilisation de l’adaptateur DynamoDB Streams Kinesis pour traiter des enregistrements de flux](Streams.KCLAdapter.md).

## Configurer l'horodatage de début
<a name="Streams.Timestamp.Configure"></a>

1. Créez un `InitialPositionInStreamExtended` instance avec l'horodatage souhaité.

1. Passez-le à `StreamsSchedulerFactory.createSingleStreamTracker`.

1. Ajoutez le retour `StreamTracker` à la `ConfigsBuilder` pour votre application Kinesis Client Library (KCL).

L'exemple Java suivant montre comment configurer l'horodatage de début :

```
// 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);
```

L'adaptateur initialise chaque nouveau bail avec `AT_TIMESTAMP` comme position initiale. Pour chaque bail, il appelle `GetShardIterator` avec l'horodatage spécifié pour obtenir un itérateur. Il passe ensuite l'itérateur à `GetRecords`, qui renvoie les enregistrements commençant par le premier enregistrement dont `ApproximateCreationDateTime` est égal ou postérieur à l'horodatage spécifié.

## Scénarios d'horodatage
<a name="Streams.Timestamp.Scenarios"></a>

### L'horodatage est plus ancien que les enregistrements de flux conservés
<a name="Streams.Timestamp.Scenarios.OlderThanRetention"></a>

L'application démarre à partir de l'enregistrement le plus ancien encore disponible dans chaque fragment. Il ne renvoie pas d'erreur. Vous ne pouvez pas récupérer les enregistrements qui ont dépassé la fenêtre de rétention de 24 heures de DynamoDB Streams.

### L'horodatage est dans le futur
<a name="Streams.Timestamp.Scenarios.Future"></a>

L'adaptateur valide l'horodatage lors de l'initialisation. Si l'horodatage est dans le futur, l'adaptateur le rejette sans effectuer d'appel d'API et le traitement ne peut pas démarrer. Utilisez un horodatage égal ou antérieur à l'heure actuelle. Tenez compte des différences d'horloge entre l'hôte de l'application et le service lorsque vous choisissez un horodatage proche de l'heure actuelle.

## Modification de l'horodatage ou de la position initiale à l'aide d'une table de location existante
<a name="Streams.Timestamp.ConfigChange"></a>

Ne modifiez pas l'horodatage et ne basculez pas entre `AT_TIMESTAMP`, `TRIM_HORIZON`, et `LATEST` dans une application en cours d'exécution dont l'état est stocké dans la table des baux. Les fragments qui stockent les numéros de séquence en tant que points de contrôle dans la table des baux continuent à partir de ces points de contrôle. Les partitions qui n'ont pas démarré peuvent utiliser la nouvelle configuration ou échouer si elle n'est pas compatible avec leurs contrats de location existants. L'application peut donc traiter différents fragments à partir de différentes positions de départ.

Pour appliquer l'une ou l'autre des modifications en toute sécurité, arrêtez l'application existante et choisissez l'une des approches suivantes :

1. **Supprimez le tableau des baux et redémarrez l'application (recommandé)**: arrêtez chaque travailleur, supprimez la table de bail existante, mettez à jour la configuration, puis redémarrez l'application.

1. **Utiliser un nouveau nom d'application**: L'adaptateur crée une nouvelle table de bail et applique le nouvel horodatage ou la nouvelle position initiale au démarrage de l'application. Par défaut, KCL utilise le nom de l'application comme nom de la table des baux à moins qu'il ne soit explicitement remplacé. Le tableau des contrats de location existant reste disponible si vous devez revenir en arrière.

## Tarification
<a name="Streams.Timestamp.Pricing"></a>

Il n'y a aucun frais supplémentaire pour la lecture des enregistrements de flux à partir d'un horodatage supérieur à la norme `GetRecords` charges. Pour plus d'informations, voir [Tarification de DynamoDB](https://aws.amazon.com/dynamodb/pricing/).

## Consultez aussi
<a name="Streams.Timestamp.SeeAlso"></a>
+ [Utilisation de l’adaptateur DynamoDB Streams Kinesis pour traiter des enregistrements de flux](Streams.KCLAdapter.md)
+ [Développement des consommateurs à l'aide de la bibliothèque client Kinesis](https://docs.aws.amazon.com/streams/latest/dev/kcl.html)
+ [Adaptateur DynamoDB Streams Kinesis sur GitHub site web](https://github.com/awslabs/dynamodb-streams-kinesis-adapter)