Capture DynamoDB Streams - 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 DynamoDB Streams

DynamoDB Streams capture une séquence chronologique des modifications intervenues au niveau des éléments dans toute 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 DynamoDB rement au repos.

ADynamoDB Streamest un flux ordonné d'informations sur les modifications apportées aux éléments dans une table DynamoDB. Lorsque vous activez un flux dans 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, DynamoDB Streams écrit un enregistrement de flux avec les attributs clés primaires des éléments qui ont été modifiés. AEnregistrement de fluxcontient 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.

DynamoDB Streams

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

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

Points de terminaison pour les DynamoDB Streams

AWSgère des points de terminaisons distincts pour DynamoDB et DynamoDB Streams. 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 DynamoDB Streams, votre application doit pouvoir accéder à un point de terminaison DynamoDB Streams dans la même région.

La convention d'affectation de noms pour les points de terminaison DynamoDB Streams eststreams.dynamodb.<region>.amazonaws.com. Par exemple, si vous utilisez le point de terminaisondynamodb.us-west-2.amazonaws.comPour accéder à DynamoDB, utilisez le point de terminaisonstreams.dynamodb.us-west-2.amazonaws.comPour accéder aux DynamoDB Streams.

Note

Pour obtenir la liste complète des régions et points de terminaison DynamoDB et DynamoDB Streams, consultez la pageRégions et points de terminaisondans leAWSRéférence générale.

La .AWSLes kits SDK fournissent des clients distincts pour DynamoDB et DynamoDB Streams. En fonction de vos besoins, votre application peut accéder à un point de terminaison DynamoDB, DynamoDB Streams 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 DynamoDB Streams.

Activation d'un flux

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

La manière la plus simple de gérer DynamoDB Streams consiste à utiliser laAWS Management Console.

  1. Connectez-vous à la consoleAWS Management Consoleet ouvrez la console DynamoDB à l'adressehttps://console.aws.amazon.com/dynamodb/.

  2. Dans le tableau de bord de la console DynamoDB, choisissezTableset sélectionnez une table existante.

  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 :

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

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

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

    • Images nouvelles et anciennes— 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éfinissezStreamEnabledsurtrue, 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éeTestTable.

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, DynamoDBDescribeTableet recherchez leLatestStreamArnélément dans la réponse.

Lecture et traitement de flux

Pour lire et traiter un flux, votre application doit se connecter à un point de terminaison DynamoDB Streams 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 éclats sont éphémères : Elles sont créées et supprimées automatiquement, en fonction des besoins. Toute partition peut également se diviser en plusieurs partitions nouvelles. Cela se produit également automatiquement. (Notez qu'il est aussi 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, de telle sorte que les applications puissent traiter les enregistrements issus 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 DynamoDB Streams Kinesis Adapter, la gestion est assurée automatiquement. Votre application traite les partitions et les enregistrements de flux dans l'ordre correct. Elle gère automatiquement les partitions nouvelles ou ayant expiré, en plus des partitions qui ont été scindées tandis que l'application était en cours d'exécution. Pour de plus amples informations, veuillez consulterUtilisation de l'adaptateur Kinesis DynamoDB Streams 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 unPutItemouUpdateItemOpération qui ne change aucune donnée dans un élément, DynamoDB Streamspasécrire un 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 DynamoDB Streams fournit les actions suivantes pour une utilisation par des programmes d'application :

  • ListStreams— Retourne 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 file d'attente inclut une liste de partitions associées au flux, y compris les ID de partition.

  • GetShardIterator— Retourne unitérateur de partition, qui décrit un emplacement dans un 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— Retourne les enregistrements de flux dans un partition donné. Vous devez fournir l'itérateur de partition renvoyé à partir d'une requête GetShardIterator.

Pour une description complète de ces opérations d'API, y compris des exemples de demandes et de réponses, consultez laAmazon DynamoDB Streams Reference.

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

Toutes les données dans DynamoDB Streams 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.