Évaluer votre utilisation de 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.

Évaluer votre utilisation de Streams

Cette section explique comment évaluer votre utilisation de DynamoDB Streams. Certains modèles d'utilisation ne sont pas optimaux pour DynamoDB et peuvent être optimisés du point de vue des performances et des coûts.

Vous disposez de deux intégrations natives pour le streaming et les cas d'utilisation pilotés par des événements :

Cette page se concentre uniquement sur les stratégies d'optimisation des coûts pour ces options. Si vous souhaitez découvrir comment faire un choix entre ces deux options, consultez Options de streaming pour la récupération de données de modification.

Optimisation des coûts pour DynamoDB Streams

Comme indiqué sur la page de tarification de DynamoDB Streams, quel que soit le mode de capacité de débit de la table, DynamoDB facture le nombre de demandes de lecture effectuées vers le flux DynamoDB de la table. Les demandes de lecture adressées à un flux DynamoDB sont différentes des demandes de lecture adressées à une table DynamoDB.

Chaque demande de lecture relative au flux prend la forme d'un GetRecords API appel qui peut renvoyer jusqu'à 1 000 enregistrements ou 1 Mo d'enregistrements dans la réponse, selon la première valeur atteinte. Aucun des autres flux DynamoDB n'est chargé et aucun APIs flux DynamoDB n'est facturé en cas d'inactivité. En d'autres termes, si aucune demande de lecture n'est envoyée à un flux DynamoDB, aucuns frais ne seront facturés pour ce flux, même s'il est activé.

Voici quelques applications consommateur pour DynamoDB Streams :

  • AWS Lambda fonction (s)

  • Amazon Kinesis Data Streams Applications basées sur

  • Applications destinées aux clients et aux consommateurs conçues à l'aide d'un AWS SDK

Lisez les demandes faites par AWS Les utilisateurs de DynamoDB Streams basés sur Lambda sont gratuits, tandis que les appels passés par des consommateurs de tout autre type sont payants. Chaque mois, les 2 500 000 premières demandes de lecture effectuées par des consommateurs autres que Lambda sont également gratuites. Cela s'applique à toutes les demandes de lecture adressées à un DynamoDB Streams dans un AWS Compte pour chacun AWS Région.

Surveillance de l'utilisation de DynamoDB Streams

Les frais de DynamoDB Streams sur la console de facturation sont regroupés pour tous les flux DynamoDB du AWS Région dans un AWS Compte. Actuellement, le balisage des flux DynamoDB n'est pas pris en charge. Les balises de répartition des coûts ne peuvent donc pas être utilisées pour identifier les coûts précis de DynamoDB Streams. Le volume d'appels GetRecords peut être obtenu au niveau du flux DynamoDB pour calculer les frais par flux. Le volume est représenté par la SuccessfulRequestLatency métrique et les statistiques CloudWatch du flux DynamoDB. SampleCount Cette métrique inclura également les GetRecords appels effectués par les tables globales pour effectuer une réplication continue, ainsi que les appels effectués par AWS Consommateurs Lambda, qui ne sont pas tous deux facturés. Pour plus d'informations sur CloudWatch les autres métriques publiées par DynamoDB Streams, consultez. Métriques et dimensions DynamoDB

Utilisation AWS Lambda en tant que consommateur

Évaluez si vous utilisez AWS Les fonctions Lambda en tant que consommateurs de DynamoDB Streams sont réalisables car cela permet d'éliminer les coûts associés à la lecture depuis le flux DynamoDB. En revanche, l'adaptateur DynamoDB Streams Kinesis SDK ou les applications grand public basées sur DynamoDB seront facturés en fonction du nombre GetRecords d'appels qu'ils effectuent vers le DynamoDB Stream.

Les appels de fonctions Lambda sont facturés sur la base de la tarification Lambda standard, mais DynamoDB Streams n'entraîne pas de frais. Lambda interroge les partitions du flux DynamoDB en quête d'enregistrements à une fréquence de base de quatre fois par seconde. Lorsque des enregistrements sont disponibles, Lambda invoque votre fonction et attend le résultat. Si le traitement réussit, Lambda reprend l’interrogation jusqu’à recevoir plus d’enregistrements.

Optimisation des applications consommateur basées sur l'adaptateur DynamoDB Streams Kinesis

Étant donné que les demandes de lecture effectuées par les consommateurs n'utilisant pas Lambda sont facturées pour DynamoDB Streams, il est important de trouver un juste milieu entre les exigences de traitement en temps quasi réel et le nombre de fois que l'application consommateur doit interroger le flux DynamoDB.

La fréquence d'interrogation de DynamoDB Streams à l'aide d'une application basée sur un adaptateur DynamoDB Streams Kinesis est déterminée par la valeur idleTimeBetweenReadsInMillis configurée. Ce paramètre détermine la durée en millisecondes pendant laquelle le consommateur doit attendre avant de traiter une partition au cas où l'appel GetRecords précédent effectué vers la même partition n'aurait renvoyé aucun enregistrement. Par défaut, la valeur de ce paramètre est de 1 000 ms. Si le traitement en temps quasi réel n'est pas requis, la valeur de ce paramètre peut être augmentée pour que l'application consommateur effectue moins d'appels GetRecords et optimise les appels DynamoDB Streams.

Optimisation des coûts pour Kinesis Data Streams

Lorsqu'un flux de données Kinesis est défini comme destination pour fournir des événements de récupération des données de modification pour une table DynamoDB, il peut nécessiter une gestion de son dimensionnement distincte, ce qui a une incidence sur les coûts globaux. DynamoDB facture en termes d'unités de capture des données de modification CDUs (), chaque unité étant composée d'un élément DynamoDB de 1 Ko essayé par le service DynamoDB vers le flux de données Kinesis de destination.

Outre les frais liés au service DynamoDB, des frais standard sont facturés pour le flux de données Kinesis. Comme indiqué sur la page de tarification, la tarification du service varie en fonction du mode de capacité (provisionné et à la demande), qui sont distincts des modes de capacité des tables DynamoDB et qui sont définis par l'utilisateur. De manière générale, Kinesis Data Streams facture un taux horaire basé sur le mode de capacité, ainsi que sur les données ingérées dans le flux par le service DynamoDB. Des frais supplémentaires peuvent être facturés, tels que la récupération de données (pour le mode à la demande), la conservation prolongée des données (au-delà des 24 heures par défaut) et la récupération améliorée par les consommateurs, en fonction de la configuration utilisateur du flux de données Kinesis.

Surveillance de l'utilisation de Kinesis Data Streams

Kinesis Data Streams for DynamoDB publie des métriques issues de DynamoDB en plus des métriques Kinesis Data Stream standard. CloudWatch Il est possible qu'une Put tentative du service DynamoDB soit bloquée par le service Kinesis en raison d'une capacité insuffisante de Kinesis Data Streams, ou par des composants dépendants tels qu'un AWS KMS service qui peut être configuré pour chiffrer les données Kinesis Data Stream au repos.

Pour en savoir plus sur CloudWatch les métriques publiées par le service DynamoDB pour le Kinesis Data Stream, consultez. Surveiller la récupération de données de modification avec Kinesis Data Streams Afin d'éviter les coûts supplémentaires liés aux nouvelles tentatives de service dues à des limitations, il est important de dimensionner correctement le flux de données Kinesis en mode provisionné.

Choix du mode de capacité approprié pour Kinesis Data Streams

Les flux de données Kinesis proposent deux modes de capacité : le mode provisionné et le mode à la demande.

  • Si la charge de travail impliquant un flux de données Kinesis génère un trafic d'application prévisible, un trafic constant ou en augmentation progressive, ou un trafic pouvant être prévu avec précision, le mode provisionné de Kinesis Data Streams est préférable et sera plus rentable.

  • Si la charge de travail est nouvelle, si le trafic d'application est imprévisible ou si vous préférez ne pas gérer la capacité, le mode à la demande de Kinesis Data Streams est préférable et sera plus rentable.

Pour optimiser les coûts, il est recommandé d'évaluer si la table DynamoDB associée au flux de données Kinesis présente un modèle de trafic prévisible capable de tirer parti du mode provisionné de Kinesis Data Streams. S'il s'agit d'une nouvelle charge de travail, vous pouvez utiliser le mode à la demande pour les Kinesis Data Streams pendant les premières semaines, passer en revue CloudWatch les indicateurs pour comprendre les modèles de trafic, puis passer le même flux en mode provisionné en fonction de la nature de la charge de travail. En mode provisionné, l'estimation du nombre de partitions peut être effectuée en suivant les considérations de gestion des partitions pour Kinesis Data Streams.

Évaluer les applications consommateur à l'aide de Kinesis Data Streams pour DynamoDB

Comme Kinesis Data Streams ne facture pas en fonction du nombre d'appels GetRecords, comme c'est le cas pour DynamoDB Streams, les applications consommateur peuvent effectuer autant d'appels que possible, à condition que la fréquence soit inférieure aux limitations pour GetRecords. En ce qui concerne le mode à la demande pour Kinesis Data Streams, les lectures de données sont facturées au Go. Pour les flux de données Kinesis en mode provisionné, les lectures ne sont pas facturées si les données datent de moins de 7 jours. Dans le cas des fonctions Lambda en tant que consommateurs Kinesis Data Streams, Lambda interroge chaque partition de votre flux Kinesis en quête d'enregistrements à une fréquence de base d'une fois par seconde.

Stratégies d'optimisation des coûts pour les deux types d'utilisation de Streams

Filtrage des événements pour AWS Consommateurs Lambda

Le filtrage des événements Lambda vous permet de supprimer des évènements du lot d'appel de la fonction Lambda en fonction d'un critère de filtre. Cette approche permet d'optimiser les coûts Lambda liés au traitement ou à la suppression des enregistrements de flux indésirables dans le cadre de la logique des fonctions consommateurs. Pour en savoir plus sur la configuration du filtrage des événements et la définition des critères de filtre, consultez la section Filtrage des événements Lambda.

Réglage AWS Consommateurs Lambda

Les coûts peuvent être optimisés davantage en ajustant les paramètres de configuration Lambda, par exemple en augmentant la valeur BatchSize afin de traiter plus d'éléments par appel, en activant BisectBatchOnFunctionError pour empêcher le traitement des doublons (ce qui entraîne des coûts supplémentaires) et en définissant MaximumRetryAttempts pour limiter le nombre de nouvelles tentatives. Par défaut, les appels Lambda consommateurs ayant échoué font l'objet de nouvelles tentatives indéfiniment jusqu'à ce que l'enregistrement expire dans le flux, ce qui correspond à une durée d'environ 24 heures pour DynamoDB Streams et peut être compris entre 24 heures et un an pour Kinesis Data Streams, selon la configuration. Les options de configuration Lambda supplémentaires disponibles, y compris celles mentionnées ci-dessus pour les consommateurs de DynamoDB Stream, se trouvent dans AWS Guide du développeur Lambda.