Capture des données modifiées pour les fluxDynamoDB - 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.

Capture des données modifiées pour les fluxDynamoDB

Flux DynamoDB capture une séquence chronologique de modifications au niveau des éléments dans n'importe quelle table DynamoDB et stocke ces informations dans un journal pendant 24 heures. Les applications ont accès à ce journal et affichent les éléments de données à mesure qu'ils s'affichent avant et après qu'ils ont été modifiés, pratiquement en temps réel.

Le chiffrement au repos chiffre les données dans les flux DynamoDB. Pour plus d'informations, consultez Chiffrement au repos DynamoDB.

Un flux DynamoDB est un flux ordonné d'informations sur les modifications apportées aux éléments dans une table DynamoDB. Lorsque vous activez un flux sur une table, DynamoDB capture des informations sur chaque modification apportée à des éléments de données dans la table.

Chaque fois qu'une application crée, met à jour ou supprime des éléments dans la table, Flux DynamoDB écrit un enregistrement de flux avec le ou les attributs clés primaires des éléments qui ont été modifiés. Un enregistrement de flux contient des informations sur une modification de données dans un seul élément dans une table DynamoDB. Vous pouvez configurer le flux de telle sorte que les enregistrements de flux capturent des informations supplémentaires, telles que les images « avant » et « après » d'éléments modifiés.

Flux DynamoDB permet de s'assurer de ce qui suit :

  • Chaque enregistrement de flux s'affiche exactement une fois dans le flux.

  • Pour chaque élément qui est modifié dans une table DynamoDB, les enregistrements de flux apparaissent dans le même ordre que les modifications effectivement apportées à l'élément.

Flux DynamoDB écrit des enregistrements de flux presque en temps réel, afin que vous puissiez développer des applications qui utilisent ces flux et entreprendre des actions basées sur le contenu.

Points de terminaison pour Flux DynamoDB

AWS gère des points de terminaisons distincts pour DynamoDB et Flux DynamoDB. Pour travailler avec des index et des tables de base de données, votre application doit accéder à un point de terminaison DynamoDB. Pour lire et traiter des enregistrements Flux DynamoDB, votre application doit pouvoir accéder à un point de terminaison Flux DynamoDB dans la même région.

La convention de dénomination pour les points de terminaison Flux DynamoDB est streams.dynamodb.<region>.amazonaws.com. Par exemple, si vous utilisez le point de terminaison dynamodb.us-west-2.amazonaws.com pour accéder à DynamoDB, vous devez utiliser le point de terminaison streams.dynamodb.us-west-2.amazonaws.com pour accéder à Flux DynamoDB.

Note

Pour obtenir une liste complète de régions et de points de terminaison DynamoDB et Flux DynamoDB, consultez la page Régions et points de terminaison dans le AWS General Reference.

Les SDKs AWS fournissent des clients distincts pour DynamoDB et Flux DynamoDB. En fonction de vos besoins, votre application peut accéder à un point de terminaison DynamoDB, un point de terminaison Flux DynamoDB, ou aux deux en même temps. Pour vous connecter aux deux points de terminaison, votre application doit instancier deux clients — un pour DynamoDB et un pour Flux DynamoDB.

Activation d'un flux

Vous pouvez activer un flux sur une nouvelle table lorsque vous la créez. Vous pouvez également activer ou désactiver un flux dans une table existante ou modifier les paramètres d'un flux. Flux DynamoDB fonctionne de manière asynchrone, ainsi il n'y a aucun impact sur les performances d'une table si vous activez un flux.

Le plus simple pour gérer Flux DynamoDB consiste à utiliser la AWS Management Console.

  1. Connectez-vous à l'AWS Management Console et ouvrez la console DynamoDB à l'adresse https://console.aws.amazon.com/dynamodb/.

  2. Dans le tableau de bord de la console DynamoDB, choisissez Tables

  3. Sous l'onglet Overview, choisissez Manage Stream.

  4. Dans la fenêtre Manage Stream (Gérer le flux), choisissez les informations qui seront écrites dans le flux chaque fois que des données de la table seront modifiées :

    • Keys only (Clés uniquement) — Uniquement les attributs clés de l'élément modifié.

    • New image (Nouvelle image) — L'élément entier, tel qu'il s'affiche une fois qu'il a été modifié.

    • Old image (Ancienne image) — L'élément entier, tel qu'il s'affichait avant sa modification.

    • New and old images (Nouvelles et anciennes images) — La nouvelle image et l'ancienne image de l'élément.

    Lorsque les paramètres vous conviennent, choisissez Enable.

  5. (Facultatif) Pour désactiver un flux existant, choisissez Manage Stream, puis Disable.

Vous pouvez également utiliser les API CreateTable ou UpdateTable pour activer ou modifier un flux. Le paramètre StreamSpecification détermine la façon dont le flux est configuré :

  • StreamEnabled — Indique si un flux de données est activé (true) ou désactivé (false) pour la table.

  • StreamViewType — Spécifie les informations qui seront écrites dans le flux chaque fois que des données de la table seront modifiées :

    • KEYS_ONLY — Uniquement les attributs clés de l'élément modifié.

    • NEW_IMAGE — L'élément entier, tel qu'il s'affiche une fois qu'il a été modifié.

    • OLD_IMAGE — L'élément entier, tel qu'il s'affichait avant sa modification.

    • NEW_AND_OLD_IMAGES — La nouvelle image et l'ancienne image de l'élément.

Vous pouvez activer ou désactiver un flux à tout moment. Cependant, vous recevez un ResourceInUseException si vous essayez d'activer un flux sur une table qui en possède déjà un. Vous recevez un ValidationException si vous essayez de désactiver un flux sur une table qui n'en possède pas un.

Lorsque vous définissez StreamEnabled sur true, DynamoDB crée un flux avec un descripteur de flux unique qui lui est attribué. Si vous désactivez et puis réactivez un flux sur la table, un flux est créé avec un descripteur de flux différent.

Chaque flux est identifié de manière unique par un Amazon Resource Name (ARN). Voici un exemple d'ARN pour un flux sur une table DynamoDB nommée TestTable.

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

Pour déterminer le dernier descripteur de flux pour une table, émettez une requête DynamoDB DescribeTable, puis recherchez l'élément LatestStreamArn dans la réponse.

Lecture et traitement de flux

Pour lire et traiter un flux, votre application doit se connecter à un point de terminaison Flux DynamoDB et émettre des demandes d'API.

Un flux se compose d'enregistrements de flux. Chaque enregistrement de flux représente une modification de donnée unique dans la table DynamoDB à laquelle le flux appartient. Chaque enregistrement de flux se voit attribuer un numéro de séquence, ce qui reflète l'ordre dans lequel l'enregistrement a été publié dans le flux.

Les enregistrements de flux sont organisés en groupes, ou partitions. Chaque partition agit comme un conteneur pour plusieurs enregistrements de flux et contient les informations requises pour accéder à ces enregistrements et les itérer. Les enregistrements de flux au sein d'une partition sont automatiquement supprimés au bout de 24 heures.

Les partitions sont éphémères : Ils sont créés et supprimés automatiquement, selon les besoins. Toute partition peut également se diviser en plusieurs partitions nouvelles. Cela se produit également automatiquement. (Il est également possible pour une partition parent d'avoir une seule partition enfant.) Une partition peut se diviser en réponse à des niveaux élevés d'activité d'écriture sur sa table parent, afin que les applications puissent traiter les enregistrements provenant de plusieurs partitions en parallèle.

Si vous désactivez un flux, toute partition ouverte sera fermée. Les données du flux continueront d'être lisibles pendant 24 heures.

Comme les partitions ont une lignée (parent et enfants), une application doit toujours traiter une partition parent avant de traiter une partition enfant. Cela garantit que les enregistrements de flux sont également traités dans l'ordre adéquat. (Si vous utilisez Flux DynamoDB Kinesis Adapter, cette opération est gérée pour vous. Votre application traite les partitions et les enregistrements de flux dans l'ordre correct. Elle gère automatiquement les partitions nouvelles ou expirées, en plus des partitions qui se sont scindées pendant que l'application est en cours d'exécution. Pour plus d'informations, consultez Utilisation de Flux DynamoDB Kinesis Adapter pour traiter les enregistrements de flux.)

Le schéma suivant illustre la relation entre un flux de données, les partitions dans le flux et les enregistrements de flux dans les partitions.

Note

Si vous effectuez une opération PutItem ou UpdateItem qui ne change aucune donnée dans un élément, alors Flux DynamoDB n'écrit pas d'enregistrement de flux pour cette opération.

Pour accéder à un flux de données et traiter les enregistrements de flux qu'il contient, vous devez effectuer les opérations suivantes :

  • Déterminer l'Amazon Resource Name (ARN) unique du flux auquel vous souhaitez accéder.

  • Déterminer quelles sont la ou les partitions du flux qui contiennent les enregistrements de flux qui vous intéressent.

  • Accéder aux partitions et récupérer les enregistrements de flux que vous voulez.

Note

Pas plus de 2 processus ne doivent lire simultanément à partir de la même partition de flux. Avoir plus de 2 lecteurs par partition peut entraîner une limitation.

L'API Flux DynamoDB fournit les actions suivantes pour une utilisation par des programmes d'application :

  • ListStreams — Renvoie une liste des descripteurs de flux pour le compte actuel et le point de terminaison. Vous pouvez en option demander uniquement les descripteurs de flux pour un nom de table particulier.

  • DescribeStream — Renvoie des informations détaillées sur un flux donné. La sortie inclut une liste des partitions associées au flux, y compris la partition IDs.

  • GetShardIterator — Renvoie un itérateur de partition qui décrit un emplacement au sein d'une partition. Vous pouvez demander que l'itérateur fournisse un accès au point le plus ancien, au point le plus récent ou à un point particulier dans le flux.

  • GetRecords — Renvoie les enregistrements de flux au sein d'une partition donnée. Vous devez fournir l'itérateur de partition renvoyé à partir d'une requête GetShardIterator.

Pour une description complète de ces actions d'API, y compris les exemples de demandes et de réponses, accédez à Référence de l'API Amazon DynamoDB Flux.

Limite de rétention des données pour Flux DynamoDB

Toutes les données dans Flux DynamoDB sont soumises à une durée de vie de 24 heures. Vous pouvez extraire et analyser les 24 dernières heures d'activité d'une table donnée. Cependant, les données datant de plus de 24 heures sont susceptibles d'être supprimées à tout moment.

Si vous désactivez un flux sur une table, les données du flux continueront d'être lisibles pendant 24 heures. Passé ce délai, les données expirent et les enregistrements de flux sont supprimés automatiquement. Il n'existe pas de mécanisme pour supprimer manuellement un flux existant. Vous devez attendre que la limite de rétention expire (24 heues) et tous les enregistrements de flux seront supprimés.