View a markdown version of this page

Utilisation de l'adaptateur DynamoDB Streams Kinesis pour lire des enregistrements à partir d'un horodatage - Amazon DynamoDB

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

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

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.

Configurer l'horodatage de début

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

  2. Passez-le à StreamsSchedulerFactory.createSingleStreamTracker.

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

L'horodatage est plus ancien que les enregistrements de flux conservés

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

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

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.

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

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.

Consultez aussi