Questions d'ordre général

Q : Qu'est-ce qu'Amazon Kinesis Data Streams ?

Amazon Kinesis Data Streams vous permet de concevoir des applications personnalisées qui traitent ou analysent des données en streaming afin de répondre à vos besoins spécifiques. Vous pouvez ajouter en permanence différents types de données à votre flux de données Amazon Kinesis, notamment des parcours de navigation, des journaux d'application et des données de réseaux sociaux, et ce, depuis plusieurs centaines de milliers de sources. En quelques secondes, ces données sont accessibles à vos applications Amazon Kinesis qui peuvent les lire et les traiter depuis le flux.

Q : Quelles sont les opérations que le service Amazon Kinesis Data Streams effectue à ma place ?

Amazon Kinesis Data Streams gère l'infrastructure, le stockage, la mise en réseau et la configuration nécessaires à la diffusion en streaming de vos données, en s'adaptant au débit de celles-ci. Vous n'avez à vous soucier ni de la mise en service, ni du déploiement, ni de la maintenance du matériel, des logiciels et des autres services requis pour vos flux de données. De plus, Amazon Kinesis Data Streams réplique les données de manière synchrone sur trois zones disponibilité, vous permettant ainsi de bénéficier d'une haute disponibilité et d'optimiser la durabilité des données.

Q : Que puis-je faire avec Amazon Kinesis Data Streams ?

Amazon Kinesis Data Streams vous permet de récupérer rapidement des données auprès de leurs producteurs, puis de les traiter en continu, que ce soit pour les transformer avant de les envoyer vers un magasin de données, pour lancer des métriques et des analyses en temps réel, ou encore pour les intégrer à des flux de données plus complexes destinés à un traitement ultérieur. Voici quelques scénarios d'utilisation classiques d'Amazon Kinesis Data Streams :

  • Récupération accélérée de journaux et de flux de données : Au lieu d'attendre que les données vous soient envoyées par lots, vous pouvez faire en sorte que vos producteurs de données les injectent dans un flux de données Amazon Kinesis dès qu'elles ont été générées, ce qui évite toute perte en cas de défaillance côté producteur. Par exemple, il est possible d'ajouter en continu des journaux d'applications et d'événements système à un flux de données, afin qu'ils puissent être traités dans les secondes qui suivent.
  • Rapports et métriques en temps réel : il est possible d'extraire des métriques et de générer des rapports en temps réel à partir d'un flux de données Amazon Kinesis. Par exemple, votre application Amazon Kinesis peut générer des métriques et des rapports à partir de journaux d'applications et d'événements systèmes dès que les données ont été transmises en streaming, au lieu d'attendre qu'elles soient envoyées par lots.
  • Analyse de données en temps réel : avec Amazon Kinesis Data Streams, vous pouvez analyser en temps réel les données diffusées en streaming. Par exemple, vous pouvez ajouter des parcours de navigation à votre flux de données Amazon Kinesis, puis exécuter des analyses en temps réel avec votre application Amazon Kinesis et, ainsi, mettre à profit vos données en quelques minutes au lieu de plusieurs heures, voire plusieurs jours.
  • Traitement de flux complexes : vous pouvez créer des graphes orientés acycliques (DAG, Directed Acyclic Graphs) de vos flux de données et applications Amazon Kinesis. Dans ce scénario d'utilisation, une ou plusieurs applications Amazon Kinesis peuvent ajouter des données à un autre flux de données Amazon Kinesis, en vue d'un traitement plus approfondi. Vous pouvez ainsi organiser le traitement de vos flux en plusieurs étapes successives.

Q : Comment utiliser Amazon Kinesis Data Streams ?

Une fois votre inscription à Amazon Web Services terminée, vous pouvez commencer à utiliser Amazon Kinesis Data Streams en :

  • Créant un flux de données Amazon Kinesis via AWS Management Console ou à l'aide de l'opération CreateStream.
  • Configurant vos producteurs de données de manière qu'ils ajoutent des données en continu à votre flux de données.
  • Développant vos propres applications Amazon Kinesis pour pouvoir lire et traiter les données de votre flux de données, soit via l'API Amazon Kinesis, soit via la bibliothèque client Amazon Kinesis (KCL).

Q : Quelles sont les limites d'Amazon Kinesis Data Streams ?

Le débit des flux de données Amazon Kinesis est conçu pour être mis à l'échelle de manière illimitée grâce à l'ajout de partitions au sein de chaque flux de données. Cependant, il existe certaines limites dont vous devez tenir compte lorsque vous utilisez Amazon Kinesis Data Streams :

  • Par défaut, les enregistrements d'un flux sont accessibles pendant 24 heures maximum à compter du moment où ils sont ajoutés au flux. Vous pouvez porter cette limite jusqu'à 7 jours en activant la rétention des données étendue.
  • La taille maximale d'un blob de données (charge de données utiles avant l'encodage en base64) au sein d'un enregistrement est de 1 méga-octet (Mo).
  • Chaque partition peut prendre en charge jusqu'à 1 000 enregistrements PUT par seconde.

Pour en savoir plus sur les autres limites propres à l'API, consultez la section relative aux limites d'Amazon Kinesis Data Streams..

Q : En quoi le Amazon Kinesis Data Streams est-il différent d'Amazon SQS ?

Amazon Kinesis Data Streams permet de traiter en temps réel des données de type Big Data diffusées en streaming. Le service se charge de classer les enregistrements, qui peuvent ensuite être lus et/ou consultés en différé dans l'ordre spécifié à partir de plusieurs applications Amazon Kinesis. La bibliothèque client Amazon Kinesis (KCL) envoie tous les enregistrements associés à une clé de partition donnée vers un même processeur d'enregistrements. Il est ainsi plus simple de créer plusieurs applications ayant accès au même flux de données Amazon Kinesis, ce qui peut s'avérer utile pour combiner des tâches de décompte, d'agrégation et de filtrage.

Amazon Simple Queue Service (Amazon SQS) propose une file d'attente hébergée, fiable et hautement évolutive pour stocker les messages alors qu'ils se déplacent entre les ordinateurs. Amazon SQS vous permet de déplacer facilement des données entre des composants d'applications distribuées et de développer des applications dans lesquelles les messages sont traités de façon distincte (avec une sémantique de type accusé de réception/échec pour chaque message), notamment grâce à des processus automatisés.

Q : Dans quels cas me conseillez-vous d'utiliser Amazon Kinesis Data Streams ? Et dans quels cas est-il préférable d'avoir recours à Amazon SQS ?

Nous recommandons d'utiliser Amazon Kinesis Data Streams pour les cas d'utilisation suivants (ou présentant des caractéristiques similaires) :

  • Acheminement d'enregistrements liés vers un même processeur d'enregistrements (comme pour une diffusion en continu MapReduce). Acheminer tous les enregistrements correspondant à une clé vers le même processeur d'enregistrements permet notamment de simplifier le décompte et l'agrégation.
  • Classement d'enregistrements. Cette fonctionnalité est particulièrement utile si vous souhaitez transférer des données de journaux depuis un hôte d'application vers un hôte de traitement/d'archivage tout en conservant l'ordre des événements des journaux.
  • Possibilité d'avoir plusieurs applications utilisant simultanément le même flux. Cela vous permet, par exemple, d'utiliser une application pour mettre à jour un tableau de bord en temps réel, tandis qu'une autre archive les données dans Amazon Redshift. Dans ce cas, les deux applications doivent pouvoir utiliser des données provenant du même flux de manière simultanée et indépendante.
  • Possibilité d'utiliser des enregistrements dans le même ordre avec plusieurs heures de décalage. Par exemple, vous disposez d'une application de facturation et d'une application d'audit qui s'exécute avec un décalage de quelques heures par rapport à l'application de facturation. Dans la mesure où Amazon Kinesis Data Streams peut stocker les données jusqu'à 7 jours, vous pouvez exécuter l'application d'audit avec un décalage de 7 jours maximum par rapport à l'application de facturation.

Nous recommandons d'utiliser Amazon SQS pour les cas d'utilisation suivants (ou présentant des caractéristiques similaires) :

  • Sémantique de messagerie (de type accusé de réception/échec pour chaque message) et délai de visibilité. Par exemple, vous disposez d'une file d'attente d'éléments de travail et souhaitez suivre de manière indépendante l'exécution de chaque élément. Amazon SQS suit les échecs et accusés de réception, si bien que l'application n'a pas à maintenir de point de contrôle/curseur en permanence. Amazon SQS supprime les messages ayant fait l'objet d'un accusé de réception et renvoie les messages non remis au terme d'un délai de visibilité que vous pouvez configurer.
  • Envoi à retardement de messages spécifiques. Par exemple, vous disposez d'une file d'attente de travaux et devez lancer certaines tâches en différé. Grâce à Amazon SQS, vous pouvez différer de 15 minutes maximum l'envoi de messages spécifiques.
  • Augmentation dynamique de la concurrence/du débit pendant la lecture. Par exemple, vous disposez d'une file d'attente de travail et souhaitez ajouter des lecteurs supplémentaires, le temps que toutes les tâches en attente soient exécutées. Avec Amazon Kinesis Data Streams, vous pouvez augmenter le nombre de partitions jusqu'à atteindre un niveau suffisant (notez cependant que vous devrez allouer le nombre de partitions nécessaires à l'avance).
  • Capacité d'Amazon SQS à réaliser des mises à l'échelle transparentes. Par exemple, vos demandes de mise en mémoire tampon et la charge de données peuvent être modifiées en cas de pics de charge ponctuels ou suite à la croissance naturelle de votre entreprise. Dans la mesure où chaque requête mise en mémoire tampon peut être traitée séparément, Amazon SQS est en mesure de mettre à l'échelle les capacités de manière transparente afin de faire face à cette charge, sans qu'aucune instruction de votre part ne soit nécessaire.

Concepts clés

Q : Qu'est-ce qu'une partition ?

La partition est l'unité de débit de base d'un flux de données Amazon Kinesis. Une partition offre une capacité de 1 Mo/s de données en entrée et de 2 Mo/s de données en sortie. Une partition peut prendre en charge jusqu'à 1 000 enregistrements PUT par seconde. Vous déterminez le nombre de partitions nécessaires lors de la création du flux de données. Vous pouvez, par exemple, créer un flux de données comportant deux partitions. Ce flux de données aura un débit de 2 Mo/s en entrée et de 4 Mo/s en sortie, et pourra prendre en charge jusqu'à 2 000 enregistrements PUT par seconde. Vous pouvez surveiller les métriques au niveau des partitions dans Amazon Kinesis Data Streams et ajouter ou supprimer de manière dynamique des partitions de votre flux de données au fur et à mesure que votre débit de données change, en repartitionnant le flux de données.

Q : Qu'est-ce qu'un enregistrement ?

L'enregistrement est l'unité utilisée pour les données stockées dans un flux de données Amazon Kinesis. Un enregistrement se compose d'un numéro de séquence, d'une clé de partition et d'un blob de données. Le blob de données correspond aux données utiles que le producteur ajoute au flux de données. La taille maximale d'un blob de données (charge de données utiles avant l'encodage en base64) est de 1 méga-octet (Mo).

Q : Qu'est-ce qu'une clé de partition ?

La clé de partition sert à isoler et à acheminer les enregistrements vers les différentes partitions d'un flux de données. La clé de partition est spécifiée par le producteur lorsqu'il ajoute des données au flux de données Amazon Kinesis. Par exemple, supposons que vous disposiez d'un flux de données comprenant deux partitions (partition 1 et partition 2). Vous pouvez configurer votre producteur de données afin qu'il utilise deux clés de partition (clé A et clé B), de manière à placer tous les enregistrements associés à la clé A dans la partition 1 et tous ceux associés à la clé B, dans la partition 2.

Q : Qu'est-ce qu'un numéro de séquence ?

Un numéro de séquence est un identifiant unique associé à un enregistrement. Le numéro de séquence est attribué par Amazon Kinesis lorsqu'un producteur de données appelle l'opération PutRecord ou PutRecords afin d'ajouter des données à un flux de données Amazon Kinesis. Les numéros de séquence correspondant à une même clé de partition deviennent généralement de plus en plus longs au fil du temps ; plus l'intervalle de temps entre chaque requête PutRecord ou PutRecords est élevé, plus les numéros de séquence sont longs.

Création de flux de données

Q : Comment créer un flux de données Amazon Kinesis ?

Une fois votre inscription à Amazon Web Services terminée, vous pouvez créer un flux de données Amazon Kinesis à l'aide de la console de gestion Amazon Kinesis ou de l'opérationCreateStream.

Q : Comment déterminer le débit de mon flux de données Amazon Kinesis ?

Le débit d'un flux de données Amazon Kinesis est déterminé par le nombre de partitions qu'il contient. Suivez la procédure indiquée ci-dessous pour estimer le nombre initial de partitions dont votre flux de données aura besoin. Veuillez noter que vous pouvez ajuster de manière dynamique le nombre de partitions au sein de votre flux de données via les options de repartitionnement.

  1. Estimez la taille moyenne des enregistrements ajoutés au flux de données en kilo-octets (Ko), en arrondissant au kilo-octet le plus proche (taille_moyenne_des_données_en_ko)
  2. Estimez le nombre d'enregistrements devant être écrits dans le flux à de données à chaque seconde. (nombre_d_enregistrements_par_seconde)
  3. Déterminez le nombre d'applications Amazon Kinesis assimilant simultanément et de manière indépendante des données en provenance du flux de données. (nombre_de_consommateurs)
  4. Calculez le débit d'écriture des données entrantes en Ko (débit_écriture_données_entrantes_en_Ko), qui est égal à la (taille_moyenne_des_données_en_Ko) multipliée par le nombre_enregistrements_par_seconde.
  5. Calculez le débit de lecture des données sortantes en Ko (débit_lecture_données_sortantes_en_Ko), qui est égal au débit_écriture_données_entrantes_en_Ko multiplié par le nombre_de_consommateurs.

Vous pouvez alors calculer le nombre initial de partitions (nombre_de_partitions) nécessaire à votre flux de données à l'aide de la formule suivante :

nombre_de_partitions = max (débit_écriture_données_entrantes_en_Ko/1000, débit_lecture_données_sortantes_en_Ko/2000)

Q : Quel est le débit minimal que je puisse demander pour mon flux de données Amazon Kinesis ?

Le débit d'un flux de données Amazon Kinesis est défini par son nombre de partitions. Le débit minimal d'un flux de données correspond à celui d'une partition, soit 1 Mo/s de données en entrée et 2 Mo/s de données en sortie.

Q : Quel est le débit maximal que je puisse demander pour mon flux de données Amazon Kinesis ?

Le débit des flux de données Amazon Kinesis est conçu pour être mis à l'échelle de manière illimitée. Par défaut, chaque compte peut mettre en service jusqu'à 10 partitions par région. Si vous avez besoin de plus de 10 partitions dans une même région, complétez le formulaire Limites d'Amazon Kinesis Data Streams.

Q : En quoi la taille des enregistrements influe-t-elle sur le débit de mon flux de données Amazon Kinesis ?

Une partition offre un débit d'entrée de données d'1 Mo/s et prend en charge jusqu'à 1 000 enregistrements PUT par seconde. Par conséquent, si la taille de l'enregistrement est inférieure à 1 Ko, le débit réel pour les données entrantes de la partition sera inférieur à 1 Mo/s, en raison des restrictions liées au nombre maximal d'enregistrements PUT par seconde.

Ajout de données aux flux de données Kinesis

Q : Comment ajouter des données à mon flux de données Amazon Kinesis ?

Vous pouvez ajouter des données à un flux de données Amazon Kinesis via les opérationsPutRecord et PutRecords, la Amazon Kinesis Producer Library (KPL) ou Amazon Kinesis Agent..

Q : Quelle est la différence entre PutRecord et PutRecords ?

L'opération PutRecord autorise un seul enregistrement de données au sein d'un appel d'API. L'opération PutRecords, elle, en autorise plusieurs. Pour en savoir plus sur les opérations PutRecord et PutRecords, consultez les sections PutRecord et PutRecords.

Q : Qu'est-ce que la bibliothèque Producer Amazon Kinesis (KPL) ?

La bibliothèque Producer Amazon Kinesis (KPL) est une bibliothèque facile à utiliser et hautement configurable qui vous permet d'ajouter des données à un flux de données Amazon Kinesis. Elle est dotée d'une interface simple, asynchrone et fiable qui vous permet d'atteindre rapidement un débit producteur élevé avec un minimum de ressources client.

Q : Quels langages de programmation ou plates-formes puis-je utiliser pour accéder à l'API Amazon Kinesis ?

L'API Amazon Kinesis est disponible dans les kits de développement logiciel (SDK) d'Amazon Web Services. Pour consulter la liste des plates-formes et langages de programmation disposant de kits SDK Amazon Web Services, rendez-vous sur la page Outils pour Amazon Web Services.

Q : Dans quel langage de programmation la bibliothèque Producer Amazon Kinesis (KPL) est-elle disponible ?

La partie centrale de la bibliothèque Producer Amazon Kinesis (KPL) est conçue avec un module C++ et peut être compilée pour fonctionner sur n'importe quelle plate-forme dotée d'un compilateur C++. La bibliothèque est actuellement disponible dans une interface Java. Nous espérons ajouter prochainement d'autres langages de programmation.

Q : Qu'est-ce qu'un agent Amazon Kinesis Agent ?

Amazon Kinesis Agent est une application Java pré-intégrée qui permet de collecter et d'envoyer facilement des données vers votre flux de données Amazon Kinesis. Cet agent peut être installé dans des environnements basés sur des serveurs Linux tels que des serveurs web, serveurs de journaux ou encore serveurs de base de données. L'agent surveille certains fichiers et envoie en continu des données sur votre flux de données. Pour en savoir plus, consultez la section relative à l'écriture à l'aide d'agents.

Q : Quelles plateformes Amazon Kinesis Agent prend-il en charge ?

Actuellement, Amazon Kinesis Agent prend en charge Amazon Linux ou Red Hat Enterprise Linux.

Q : Où puis-je obtenir Amazon Kinesis Agent ?

Vous pouvez télécharger et installer Amazon Kinesis Agent à l'aide de la commande et du lien indiqués ci-après :

Sur Amazon Linux : sudo yum install –y aws-kinesis-agent

Sur Red Hat Enterprise Linux : sudo yum install –y https://s3.amazonaws.com/streaming-data-agent/aws-kinesis-agent-latest.amzn1.noarch.rpm

Depuis GitHub : awlabs/amazon-kinesis-agent

Q : Comment utiliser Amazon Kinesis Agent ?

Après avoir installé Amazon Kinesis Agent sur vos serveurs, vous pouvez le configurer pour surveiller certains fichiers contenus sur le disque, puis envoyer continuellement de nouvelles données vers votre flux de données Amazon Kinesis. Pour en savoir plus, consultez la section relative à l'écriture à l'aide d'agents.

Q : Que se passe-t-il si les limites de capacité d'un flux de données Amazon Kinesis sont dépassées alors qu'un producteur de données est en train d'y ajouter des données ?

Les limites de capacité d'un flux de données Amazon Kinesis sont définies par nombre de partitions au sein du flux de données. Il est possible que ces limites soient dépassées en termes de débit de données ou de nombre d'enregistrements PUT. Lorsque les limites de capacité sont atteintes, les appels d'ajout de données sont rejetés et une exception ProvisionedThroughputExceeded est renvoyée. Si cette situation est liée à une hausse temporaire des données reçues par le flux de données, vous pouvez essayer de relancer les opérations au niveau du producteur de données jusqu'à ce que les requêtes soient exécutées. Si cette situation est liée à une hausse durable des données reçues par le flux de données, nous vous conseillons d'augmenter le nombre de partitions afin de disposer d'une capacité suffisante pour prendre en charge les appels d'ajout de données de façon constante. Dans les deux cas, vous pouvez vous référer aux métriques Amazon CloudWatch pour obtenir des informations sur les variations du débit en entrée et sur l'occurence d'exceptions ProvisionedThroughputExceeded.

Q : Quelles sont les données prises en compte pour établir le débit de données d'un flux de données Amazon Kinesis au cours d'un appel PutRecord ou PutRecords ?

Pour exécuter un appel PutRecord ou PutRecords, les paramètres requis sont le blob de données, la clé de partition et le nom du flux de données. La taille de votre blob de données (avant encodage en base64) et celle de la clé de partition sont prises en compte dans le débit de données de votre flux de données Amazon Kinesis, lequel est déterminé par le nombre de partitions du flux de données.

Distribution améliorée

Q : Qu'est-ce que la Distribution améliorée ?

La distribution améliorée est une fonctionnalité des consommateurs Kinesis Data Streams fournit des canaux avec un débit de 2 Mo/s entre les consommateurs et les partitions. Cela permet aux clients d'adapter le relevé des consommateurs depuis un flux de données en parallèle, tout en maintenant de hautes performances.

Q : Comment les consommateurs utilisent-ils la distribution améliorée ?

Les consommateurs doivent dans un premier temps s'enregistrer avec le service Kinesis Data Streams. Par défaut, l'enregistrement des consommateurs active la distribution améliorée. Si vous utilisez KCL, KCL version 2.x veille à l'enregistrement automatique des consommateurs, et utilise le nom de l'application KCL comme nom de consommateur. Une fois enregistrés, tous les consommateurs inscrits ont leurs propres canaux de débit de distribution améliorée logique alloués. Les consommateurs utilisent l'API SubscribeToShard HTTP/2 pour récupérer les données à l'intérieur des canaux de débit. Actuellement, l'API GetRecords HTTP/1 ne prend pas en charge la distribution améliorée. Vous devez donc mettre à niveau KCL 2.x, ou enregistrer votre consommateur et faire en sorte qu'il appelle l'API SubscribeToShard.

Q : Comment la distribution améliorée peut-elle être utilisée par un consommateur ?

Les consommateurs utilisent la distribution améliorée pour extraire les données à l'aide de l'API SubscribeToShard. Le nom du consommateur inscrit est utilisé dans l'API SubscribeToShard, ce qui permet l'utilisation des avantages de la distribution améliorée fournie au consommateur enregistrée.

Q : Quand dois-je utiliser la distribution améliorée ?
Vous devez utiliser la distribution améliorée si vous avez, ou si vous prévoyez d'avoir, plusieurs consommateurs qui extraient des données d'un flux parallèlement, ou si vous avez au moins un consommateur qui requiert l'utilisation de l'API SubscribeToShard pour fournir des débit de données de 200 ms entre les producteurs et les consommateurs.

Q : Puis-je faire en sorte que les consommateurs utilisent la distribution améliorée et d'autres non ?

Oui, vous pouvez avoir plusieurs consommateurs qui utilisent la distribution améliorée sans utiliser simultanément la distribution améliorée. L'utilisation de la distribution améliorée n'a pas d'impact sur les limites des partitions pour l'utilisation des GetRecords traditionnels.

Q : Il existe une limite au nombre de consommateurs utilisant la distribution améliorée dans un flux donné ?

Il existe une limite par défaut de 5 consommateurs en utilisant la distribution amélioré par les flux de données. Si vous avez besoin de plus de 5 consommateurs, merci de soumettre une demande d'accroissement de la limite via AWS support. Gardez à l'esprit que plus de 5 consommateurs totaux lisant un flux, si les 5 consommateurs utilisent la distribution améliorée et d'autres consommateurs n'utilisant pas la distribution améliorée en n'utilisant pas la distribution améliorée en même temps.

Q : Comment les consommateurs s'enregistrent-ils pour utiliser la distribution améliorée et l'API HTTP/2 SubscribeToShard API?

Nous recommandons d'utiliser KCL 2.x, qui enregistrera automatiquement votre consommateur et utilisera la distribution améliorée et l'API HTTP/2 SubscribeToShard API. Autrement, vous pouvez enregistrer manuellement un consommateur en utilisant RegisterStreamConsumer API, puis vous pouvez utiliser l'API SubscribeToShard avec le nom du consommateur que vous avez enregistré.

Q : Existe-t-il des frais associés à l'utilisation de la distribution améliorée ?

Oui, des frais horaires sont appliqués à chaque combinaison à la demande d'une partition dans un flux et de consommateur (une heure (une heure de partition consommateur) enregistré pour utiliser la distribution améliorée en plus des frais liés à chaque Go d'extraction. Voir la page de tarification de Kinesis Data Streams pour plus de détails.

Q : Comme les heures de partition consommateur sont-elles calculées ?

Une heure de partition de consommateur se calcule en multipliant le nombre de consommateurs de flux enregistrés par le nombre de partition dans le flux. Par exemple, si une heure consommateur pour un flux de données de 10 partitions coûte 0,015 $, le consommateur aura la possibilité de lire 10 partitions, et donc, il sera facturé de 0,15 $ par heure (1 consommateur x 10 partitions x 0,015 $ par heure de partition de consommateur). Si deux consommateurs sont enregistrés simultanément pour la distribution améliorée, le montant facturé pour l'heure de partition serait de 0,30 $ de l'heure (soit 2 consommateurs x 10 partitions x 0,015 $).

Q: La facturation des heures de partition consommateur pour la distribution améliorée applique-t-elle un pro-rata si je termine ou si je commence avec un consommateur au milieu d'une heure ?

Oui, vous ne paierez que la proportion de l'heure pendant laquelle le consommateur a été enregistré alors qu'il utilisait la distribution améliorée.

Q : Comment fonctionne la facturation à l'extraction de données de distribution améliorée ?

Vous réglez une somme modique en fonction du tarif de Go mesuré par octet de données extrait par consommateur à l'aide de la distribution améliorée. Il n'y a pas d'arrondi ou de livraison minimale.

Q : Dois-je modifier mes producteurs ou mon flux de données pour utiliser la distribution améliorée ?

Non, la distribution améliorée peut être activée sans impact sur les producteurs des données ou les flux de données.

Lecture et traitement de données provenant de flux de données Kinesis

Q : Qu'est-ce qu'une application Amazon Kinesis ?

Une application Amazon Kinesis est un consommateur de données qui lit et traite des données provenant d'un flux de données Amazon Kinesis. Vous pouvez développer vos applications via l'analyse de données Amazon Kinesis, l'API Amazon Kinesis ou la bibliothèque client Amazon Kinesis (KCL).

Q : Qu'est-ce que la bibliothèque client Amazon Kinesis (KCL) ?

La bibliothèque client Amazon Kinesis (KCL) pour Java | Python | Ruby | Node.js | .NET est une bibliothèque pré-intégrée qui vous permet de créer facilement des applications Amazon Kinesis pour la lecture et le traitement des données d'un flux de données Amazon Kinesis.

La bibliothèque KCL gère des problèmes complexes, tels que l'adaptation à des flux de données aux volumes fluctuants, l'équilibrage de la charge pour les données diffusées en streaming, la coordination des services distribués et le traitement des données avec tolérance aux pannes. Elle vous permet ainsi de vous concentrer sur la logique métier lors de la création des applications. KCL 2.x prend en charge les API HTTP/1 GetRecords et HTTP/2 SubscribeToShard avec la distribution améliorée pour récupérer des données dans un flux. KCL 1.x ne prend pas en charge l'API SubscribeToShard ou la distribution améliorée.

Q : Comment puis-je procéder à une mise à niveau de KCL 1.x vers 2.x pour utiliser SubscribeToShard et une distribution améliorée ?

Visitez la documentation utilisateur Kinesis Data Streams pour en savoir plus sur la mise à niveau de KCL 1.x vers KCL 2.x.

Q : Qu'est-de que l'API SubscribeToShard ?

L'API SubscribeToShard est une API de diffusion haute performance pour pousser les données hors des partitions vers les consommateurs sur une connexion persistante sans cycle de requête de la part du client. L'API SubscribeToShard utilise le protocole HTTP/2 pour offrir des données aux consommateurs enregistrés lorsque les nouvelles données consommateurs lorsque des nouvelles données arrivent sur la partition, en général en 70 ms, ce qui augmente le débit d ~65% plus vite que l'API GetRecords API. Les consommateurs apprécieront la livraison rapide même si plusieurs consommateurs enregistrés lisent la même partition.

Q : Puis-je utiliser la distribution améliorée SubscribeToShard sans utiliser la distribution améliorée ?

Non, SubscribeToShard exige l'utilisation de la distribution améliorée, ce qui signifie que vous devez également inscrire votre consommateurs aux services Kinesis Data Streams avant que vous puissiez utiliser SubscribeToShard.

Q : Combien de temps dure la connexion permanente SubscribeToShard ?

La connexion persistante peut durer jusqu'à 5 minutes.

Q : La bibliothèque Kinesis Client Library (KCL) prend en charge le support SubscribeToShard ?

Oui, la version 2.x de KCL utilise SubscribeToShard et la distribution améliorée pour extraire les données haute performance depuis un flux de données Kinesis.

Q : Y-a-t-il des frais associés à l'utilisation de SubscribeToShard ?

Non, aucun frais supplémentaire n'est associé à SubscribeToShard, mais vous devez utiliser SubscribeToShard avec la distribution améliorée, qui lui, ne génère pas de frais horaire supplémentaire pour chaque combinaison de consommateur et par Go des données délivrés par la distribution améliorée.

Q : Dois-je utiliser la distribution améliorée si je veux utiliser SubscribeToShard ?

Oui, pour utiliser SubscribeToShard, vous devez inscrire vos consommateurs, et leur enregistrement active la distribution améliorée. Par défaut, votre consommateur utilisera la distribution améliorée automatiquement une fois les données récupérées via SubscribeToShard.

Q : Qu'est-ce que la bibliothèque Connector Amazon Kinesis ?

La bibliothèque Connector Amazon Kinesis est une bibliothèque pré-intégrée qui vous permet d'intégrer facilement Amazon Kinesis Data Streams à d'autres services AWS et à des outils tiers. La bibliothèque client Amazon Kinesis (KCL) pour Java | Python | Ruby | Node.js | .NET est requise pour utiliser la bibliothèque Amazon Kinesis Connector. La version actuelle de cette bibliothèque fournit des connecteurs pour Amazon DynamoDB, Amazon Redshift, Amazon S3 et Elasticsearch. La bibliothèque inclut également des exemples de connecteurs de chaque type, ainsi que des fichiers de construction Apache Ant pour l'exécution des exemples.

Q : Qu'est-ce qu'Amazon Kinesis Storm Spout ?

Amazon Kinesis Storm Spout est une bibliothèque pré-intégrée qui vous permet d'intégrer facilement Amazon Kinesis Data Streams à Apache Storm. Dans sa version actuelle, la bibliothèque Amazon Kinesis Storm Spout récupère des données de flux de données Amazon Kinesis et les émet en tant que tuples. Vous pouvez l'ajouter à votre topologie Storm afin d'exploiter Amazon Kinesis Data Streams en tant que service de collecte, de stockage et de consultation à la fois scalable et fiable.

Q : Dans quels langages de programmation la bibliothèque client Amazon Kinesis (KCL), la bibliothèque Connector Amazon Kinesis et Amazon Kinesis Storm Spout sont-ils disponibles ?

La bibliothèque client Amazon Kinesis (KCL) est actuellement disponible pour Java, Python, Ruby, Node.js et.NET. La bibliothèque Connector Amazon Kinesis et Bibliothèque Connector Amazon Kinesis sont actuellement disponibles en Java. Nous espérons ajouter prochainement d'autres langages de programmation.

Q : Est-il obligatoire d'utiliser la bibliothèque client Amazon Kinesis (KCL) pour mon application Amazon Kinesis ?

Non, vous pouvez également utiliser l'API Amazon Kinesis pour développer votre application Amazon Kinesis. Cependant, nous vous conseillons d'utiliser la bibliothèque client Amazon Kinesis (KCL) pour Java | Python | Ruby | Node.js | .NET si votre application s'y prête. En effet, elle prend en charge les tâches les plus fastidieuses liées au traitement de flux distribués, ce qui vous permet de développer vos applications de manière plus productive.

Q : Comment la bibliothèque client Amazon Kinesis (KCL) interagit-elle avec les applications Amazon Kinesis ?

La bibliothèque client Amazon Kinesis (KCL) pour Java | Python | Ruby | Node.js | .NET joue le rôle d'intermédiaire entre Amazon Kinesis Data Streams et votre application Amazon Kinesis. La bibliothèque KCL utilise l'interface IRecordProcessor pour communiquer avec votre application. Votre application implémente cette interface, puis la bibliothèque KCL lance des appels sur le code de votre application via les méthodes de l'interface.

Pour en savoir plus sur le développement d'applications associées à la bibliothèque KCL, référez-vous à la section Développement d'applications consommateur à l'aide de Kinesis Client Library.

Q : Que sont les programmes d'exécution et les processeurs d'enregistrements générés par la bibliothèque client Amazon Kinesis (KCL) ?

Une application Amazon Kinesis peut compter plusieurs instances d'application ; un programme d'exécution est une unité de traitement qui est reliée à chacune de ces instances d'application. Un processeur d'enregistrements est une unité qui traite les données en provenance d'une partition d'un flux de données Amazon Kinesis. Un programme d'exécution peut être relié à un ou plusieurs processeurs d'enregistrements. Un processeur d'enregistrements est relié à une partition et traite les enregistrements qui en proviennent.

Au démarrage, l'application appelle la bibliothèque client Amazon Kinesis (KCL) pour Java | Python | Ruby | Node.js | .NET afin d'instancier un programme d'exécution. Cet appel fournit à la bibliothèque KCL les informations de configuration de l'application, notamment le nom du flux de données et les informations d'identification AWS. Il transmet également la référence d'une implémentation d'IRecordProcessorFactory. La bibliothèque KCL utilise ensuite cette implémentation pour créer de nouveaux processeurs d'enregistrements, si cela s'avère nécessaire pour traiter les données du flux. KCL communique avec ces processeurs d'enregistrements via l'interface IRecordProcessor.

Q : Comment la bibliothèque client Amazon Kinesis (KCL) garde-t-elle une trace des enregistrements de données traités par une application Amazon Kinesis ?

La bibliothèque client Amazon Kinesis (KCL) pour Java | Python | Ruby | Node.js | .NET crée automatiquement une table Amazon DynamoDB pour chaque application Amazon Kinesis afin d'enregistrer et de conserver des informations d'état, telles que les événements de repartitionnement et les points de contrôle des numéros de séquence. La table DynamoDB porte le même nom que l'application ; vous devez donc vous assurer que le nom de votre application ne générera pas de conflit avec une table DynamoDB existante enregistrée sous le même compte et dans la même région.

Tous les programmes d'exécution associés à un même nom d'application sont considérés comme rattachés au même flux de données Amazon Kinesis. Si vous exécutez une autre instance du même code d'application, mais sous un autre nom d'application, la bibliothèque KCL traite cette seconde instance comme une application totalement distincte, associée elle aussi au même flux de données Amazon Kinesis.

Les coûts liés à la table Amazon DynamoDB sont facturés sur votre compte, en sus des frais Amazon Kinesis Data Streams.

Pour en savoir plus sur le suivi de l'état des applications par la bibliothèque KCL, référez-vous à la section Tracking Amazon Kinesis Application State.

Q : Comment puis-je augmenter automatiquement la capacité de traitement de mon application Amazon Kinesis à l'aide de la bibliothèque client Amazon Kinesis (KCL) ?

Vous pouvez créer plusieurs instances de votre application Amazon Kinesis et les exécuter sur un ensemble d'instances Amazon EC2 faisant partie d'un groupe Auto Scaling. Lorsque les besoins en traitement augmentent, une instance Amazon EC2 exécutant votre instance d'application est créée automatiquement. La bibliothèque client Amazon Kinesis (KCL) pour Java | Python | Ruby | Node.js | .NET génère un programme d'exécution pour cette nouvelle instance et transfère automatiquement les processeurs d'enregistrements des instances existantes saturées vers cette nouvelle instance.

Q : Pourquoi l'appel GetRecords renvoie-t-il un résultat vide alors que mon flux de données Amazon Kinesis contient des données ?

Il est possible qu'il n'y ait pas d'enregistrement à l'emplacement spécifié par l'itérateur de partition actuel. Cela peut notamment se produire si vous utilisez le type d'itérateur de partition TRIM_HORIZON. Un flux de données Amazon Kinesis représente un flux continu de données. Si vous appelez l'opération GetRecords en boucle, les enregistrements sont renvoyés lorsque l'itérateur atteint l'emplacement où ils sont stockés.

Q : Que signifie la valeur ApproximateArrivalTimestamp renvoyée dans l'opération GetRecords ?

Chaque enregistrement contient une valeur appelée ApproximateArrivalTimestamp. Elle est créée lorsque Amazon Kinesis reçoit et stocke avec succès l'enregistrement. L'horodatage est défini à la milliseconde et il n'existe aucune garantie concernant sa précision. Par exemple, il est possible que les enregistrements contenus dans une partition ou dans un flux de données ne fonctionnent pas.

Q : Que se passe-t-il si les limites de capacité d'un flux de données Amazon Kinesis sont dépassées alors qu'une application Amazon Kinesis est en train de lire des données à partir du flux ?

Les limites de capacité d'un flux de données Amazon Kinesis sont définies par nombre de partitions au sein du flux de données. Il est possible que ces limites soient dépassées en termes de débit de données ou de nombre d'appels de lecture de données. Tant que les limites de capacité sont atteintes, les appels de lecture de données sont rejetés et l'exception ProvisionedThroughputExceeded exception. Si cette situation est liée à une hausse temporaire des lectures de données du flux, vous pouvez essayer de relancer les appels au niveau de l'application Amazon Kinesis jusqu'à ce que les requêtes soient exécutées. Si cette situation est liée à une hausse durable des lectures de données du flux, nous vous conseillons d'augmenter le nombre de partitions afin de disposer d'une capacité suffisante pour exécuter les appels de lecture de données de façon constante. Dans les deux cas, vous pouvez vous référer aux métriques Amazon CloudWatch pour obtenir des informations sur les variations du débit de données en sortie et sur la survenue d'exceptions ProvisionedThroughputExceeded.

Gestion des flux de données Kinesis

Q : Comment puis-je modifier le débit de mon flux de données Amazon Kinesis ?

Pour modifier le débit de votre flux de données, deux possibilités s'offrent à vous. Vous pouvez utiliser l'API UpdateShardCount API ou AWS Management Console pour mettre à l'échelle le nombre de partitions dans un flux de données. Vous pouvez également modifier le débit d'un flux de données Amazon Kinesis en ajustant le nombre de partitions au sein du flux (repartitionnement).

Q : Combien de temps faut-il pour modifier le débit de mon flux de données Amazon Kinesis à l'aide de l'API UpdateShardCount ou d'AWS Management Console ?

Le traitement des demandes de mise à l'échelle classiques prend quelques minutes. Les demandes de dimensionnement plus importantes prennent plus de temps.

Q : Quelles sont les limites de l'API UpdateShardCount ?

Pour plus d'informations sur les limites de l'API UpdateShardCount, consultez la page Référence des API du service Amazon Kinesis Data Streams.

Q : Le service Amazon Kinesis Data Streams reste-t-il disponible lorsque je modifie le débit de mon flux de données Amazon Kinesis à l'aide de l'API UpdateShardCount ou via une opération de repartitionnement ?

Oui. Vous pouvez continuer à ajouter ou lire des données sur votre flux de données Amazon Kinesis pendant l'utilisation de l'API UpdateShardCount ou la réalisation d'un repartitionnement visant à modifier son débit.

Q : Qu'est-ce qu'un repartitionnement ?

Un repartitionnement est un processus permettant de mettre à l'échelle votre flux de données à l'aide d'une série de fractionnements et de fusions de partitions. Lors d'une division d'une partition, cette dernière est scindée en deux nouvelles partitions, ce qui augmente le débit du flux de données. En cas de fusion de partitions, deux partitions sont réunies en une seule, ce qui réduit le débit du flux de données. Pour plus d'informations, consultez la section relative au repartitionnement d'un flux de données dans le guide du développeur Amazon Kinesis Data Streams.

Q : À quelle fréquence puis-je modifier le débit de mon flux de données Amazon Kinesis par repartitionnement ? Et combien de temps prend cette opération ?

Une opération de repartitionnement telle qu'une division ou une fusion de partitions prend quelques secondes. Vous ne pouvez réaliser qu'une seule opération de repartitionnement à la fois. Ainsi, pour un flux de données Amazon Kinesis ne comptant qu'une seule partition, il suffit de quelques secondes pour doubler le débit en divisant cette partition. Pour un flux de données contenant 1000 partitions, le doublement du débit par division des 1 000 partitions prend 30 000 secondes (8,3 heures). Il est donc recommandé de lancer cette opération à l'avance si vous prévoyez une augmentation du débit de votre flux de données.

Q : Comment modifier la période de rétention des données de mon flux Amazon Kinesis ?

Amazon Kinesis stocke vos données pendant 24 heures par défaut. Vous pouvez porter cette limite à 7 jours en activant la rétention des données étendue.

Pour plus d'informations sur la modification de la période de rétention des données, consultez la section Modifier la période de rétention des données.

Comment puis-je surveiller l'activité et les performances de mon flux de données Amazon Kinesis ?

La console de gestion Amazon Kinesis Data Streams affiche les principales métriques opérationnelles et de performances, notamment les débits de données en entrée et en sortie de vos flux de données Amazon Kinesis. Amazon Kinesis Data Streams peut également être intégré à Amazon CloudWatch ce qui permet d'enregistrer, de consulter et d'analyser des métriques CloudWatch pour vos flux de données Amazon Kinesis et leurs partitions. Pour en savoir plus sur les métriques Amazon Kinesis Data Streams, consultez la section relative à la surveillance d'Amazon Kinesis Data Streams à l'aide d'Amazon CloudWatch.

Veuillez noter que toutes les métriques activées au niveau des flux sont gratuites. Toutes les métriques activées au niveau des partitions sont facturées selon la tarification Amazon CloudWatch.

Q : Comment puis-je gérer et contrôler les accès à mon flux de données Amazon Kinesis ?

Amazon Kinesis Data Streams s'intègre à AWS Identity and Access Management (IAM), service qui vous permet de contrôler l'accès des utilisateurs à vos ressources et services AWS en toute sécurité. Vous pouvez, par exemple, créer une politique permettant uniquement à un utilisateur ou à un groupe d'utilisateurs en particulier d'ajouter des données à votre flux de données Amazon Kinesis. Pour en savoir plus sur la gestion et le contrôle des accès à votre flux de données, consultez la section relative au contrôle de l'accès aux ressources Amazon Kinesis Data Streams avec IAM.

Q : Comment puis-je consigner les appels d'API envoyés à mon flux de données Amazon Kinesis à des fins d'analyse de sécurité et de résolution des problèmes opérationnels ?

Amazon Kinesis s'intègre à Amazon CloudTrail, un service qui enregistre les appels d'API AWS sur votre compte et vous fournit les fichiers journaux. Pour en savoir plus sur la consignation des appels d'API et consulter la liste des opérations d'API Amazon Kinesis prises en charge, reportez-vous à la section Logging Amazon Kinesis API calls Using Amazon CloudTrail.

Q : Comment gérer efficacement mes flux de données Amazon Kinesis et les frais qui leur sont associés ?

Amazon Kinesis Data Streams vous permet d'ajouter des balises à vos flux de données Amazon Kinesis pour faciliter la gestion des coûts et des ressources et des ressources. Une balise est un libellé défini par l'utilisateur sous forme de paire clé-valeur, destiné à faciliter l'organisation des ressources AWS. Par exemple, vous pouvez attribuer des balises à vos flux de données en fonction de leur centre de coûts, ce qui vous permet de catégoriser et de suivre vos frais Amazon Kinesis Data Streams par centre de coûts. Pour en savoir plus sur les balises Amazon Kinesis Data Streams, consultez la section relative au balisage Amazon Kinesis Data Streams.

Q : Comment puis-je décrire la façon dont j'utilise le nombre limite de partitions ?

Vous pouvez comprendre la façon dont vous utilisez le nombre limite de partitions correspondant à un compte à l'aide de l'API DescribeLimits. L'API DescribeLimits renvoie le nombre limite de partitions et le nombre de partitions ouvertes dans votre compte. Si vous devez augmenter le nombre limite de partitions, veuillez demander une augmentation de limite.

Sécurité

Q : Lorsque j'utilise Kinesis Data Streams, quel est le niveau de sécurité de mes données ?

Kinesis est sécurisé par défaut. Seuls les propriétaires de compte et de flux de données ont accès aux ressources Kinesis qu'ils créent. Kinesis prend en charge l'authentification utilisateur pour contrôler l'accès aux données. Vous pouvez utiliser des stratégies AWS IAM pour accorder de façon sélective des autorisations à des utilisateurs et groupes d'utilisateurs. Vous pouvez transférer des données vers Kinesis ou en extraire, en toute sécurité, via des points de terminaison SSL à l'aide du protocole HTTPS. Si vous avez besoin d'une sécurité supplémentaire, vous pouvez utiliser le chiffrement côté serveur avec les clés principales AWS KMS pour chiffrer les données stockées dans votre flux de données. AWS KMS vous permet d'utiliser les clés principales KMS générées par AWS à des fins de chiffrement, ou si vous préférez, vous pouvez utiliser votre propre clé principale dans AWS KMS. Enfin, vous pouvez utiliser vos propres bibliothèques de chiffrement pour crypter les données côté client avant de les transférer vers Kinesis.

Q : Puis-je accéder de manière privée aux API Kinesis Data Streams à partir de mon VPC (Amazon Virtual Private Cloud) sans utiliser aucune adresse IP publique ?

Oui, vous pouvez accéder de manière privée aux API Kinesis Data Streams à partir de votre VPC (Amazon Virtual Private Cloud) en créant des points de terminaison de VPC. Avec des points de terminaison de VPC, le routage entre le VPC et Kinesis Data Streams est géré par le réseau AWS, sans qu'il y ait besoin d'une passerelle Internet, d'une passerelle NAT ou d'une connexion VPN. La dernière génération de points de terminaison de VPC utilisée par Kinesis Data Streams repose sur AWS PrivateLink, une technologie qui permet une connectivité privée entre les services AWS en utilisant des interfaces réseau elastic (ENI) avec des adresses IP privées dans vos VPC. Pour en savoir plus sur PrivateLink, veuillez consulter la documentation PrivateLink.

Chiffrement

Q : Est-il possible de chiffrer les données transférées vers un flux de données Kinesis ?

Oui. Deux possibilités s'offrent à vous pour chiffrer vos données et les transférer vers un flux de données Kinesis. Vous pouvez utiliser le chiffrement côté serveur, une fonction entièrement gérée qui chiffre et déchiffre automatiquement les données lorsqu'elles sont transférées vers un flux de données ou lorsqu'elles en sont extraites. Vous pouvez également écrire vos données chiffrées sur un flux de données en chiffrant et en déchiffrant les données côté client.

Q : Pourquoi utiliser le chiffrement côté serveur au lieu du chiffrement côté client ?

Les clients préfèrent souvent le chiffrement côté serveur au chiffrement côté client pour l'une des raisons suivantes :

  • Il est difficile d'appliquer le chiffrement côté client
  • Ils souhaitent bénéficier d'une deuxième couche de sécurité en plus du chiffrement côté client
  • Il est difficile d'implémenter des programmes de gestion de clés côté client

Q : Qu'est-ce que le chiffrement côté serveur ?

Le chiffrement côté serveur pour Kinesis Data Streams chiffre automatiquement les données à l'aide d'une clé principale (CMK) AWS KMS spécifiée par l'utilisateur avant de les écrire sur la couche de stockage du flux de données, et les déchiffre après leur extraction du stockage. Le chiffrement rend toute écriture impossible et rend la charge utile et la clé de partition illisibles, sauf si l'utilisateur qui écrit sur le flux de données ou lit à partir de ce dernier a l'autorisation d'utiliser la clé sélectionnée pour le chiffrement sur le flux. Le chiffrement côté serveur peut donc permettre de répondre plus facilement aux exigences internes de sécurité et de conformité qui régissent vos données.

Grâce au chiffrement côté serveur, vos applications côté client (producteurs et clients) n'ont pas besoin d'être conscientes du chiffrement ni de gérer vos clés CMK ou opérations de chiffrement, et vos données sont chiffrées lorsqu'elles sont au repos et en mouvement dans le service Kinesis Data Streams. Toutes les clés CMK utilisées par la fonction de chiffrement côté serveur sont fournies par AWS KMS. AWS KMS permet d'utiliser facilement une clé CMK gérée par AWS pour Kinesis (une méthode de chiffrement « en un clic »), votre propre clé CMK générée par AWS KMS ou une clé CMK que vous avez importée pour le chiffrement.

Q : Existe-t-il un guide de démarrage pour le chiffrement côté serveur ?

Oui, vous en trouverez un dans la documentation utilisateur.

Q : Le chiffrement côté serveur perturbe-t-il l'interaction de mes applications avec Kinesis Data Streams ?

C'est probable. Cela dépend de la clé que vous utilisez pour le chiffrement et des autorisations régissant l'accès à la clé.

  • Si vous utilisez la clé CMK gérée par AWS pour Kinesis (alias de la clé = aws/kinesis), l'activation ou la désactivation du chiffrement à l'aide de cette clé n'aura aucun impact sur vos applications.
  • Si vous utilisez une clé principale différente telle qu'une clé principale AWS KMS personnalisée ou une clé que vous avez importée dans le service AWS KMS, et si les producteurs et utilisateurs d'un flux de données n'ont pas l'autorisation d'utiliser la clé CMK AWS KMS utilisée pour le chiffrement, vos demandes PUT et GET échoueront. Avant d'utiliser le chiffrement côté serveur, vous devez configurer les stratégies de clé AWS KMS afin de permettre le chiffrement et le déchiffrement des messages. Pour consulter des exemples et obtenir plus d'informations sur les autorisations AWS KMS, consultez « Autorisations d'API AWS KMS : référence des actions et ressources » dans le Guide du développeur AWS Key Management Service ou les instructions sur la gestion des autorisations dans la documentation utilisateur sur le chiffrement côté serveur de Kinesis Data Streams.

Q : Un coût supplémentaire est-il associé à l'utilisation du chiffrement côté serveur ?

Oui. Toutefois, si vous utilisez la clé CMK gérée par AWS pour Kinesis et que vous ne dépassez pas les coûts d'utilisation des API KMS de l'offre gratuite, l'utilisation du chiffrement côté serveur est gratuite. Voici une description des coûts par ressource :

Clés :

  • La clé CMK gérée par AWS pour Kinesis (alias = « aws/kinesis ») est gratuite.
  • Les clés KMS générées par l'utilisateur sont soumises aux coûts applicables aux clés KMS. En savoir plus.

Utilisation des API KMS :

  • Coûts d'utilisation des API pour chaque clé CMK, y compris les clés personnalisées. Le service Kinesis Data Streams appelle KMS environ toutes les 5 minutes lorsqu'il fait tourner la clé de données. Sur un mois de 30 jours, le coût total des appels d'API KMS initiés par un flux de données Kinesis ne dépasse en principe pas quelques euros. N'oubliez pas que ces coûts sont fonction du nombre d'informations d'identification des utilisateurs que vous utilisez sur vos producteurs et utilisateurs de données, car chaque information d'identification nécessite un appel API unique à AWS KMS. Lorsque vous utilisez le rôle IAM pour l'authentification, chaque appel nominal résulte en un ensemble unique d'informations d'identification et vous devez probablement mettre en cache les informations de l'utilisateur renvoyées par l'appel nominal afin de réduire les coûts de KMS.

Q : Quelles régions AWS proposent le chiffrement côté serveur pour Kinesis Data Streams ?

La fonction de chiffrement côté serveur d'Amazon Kinesis Data Streams est disponible dans la région AWS GovCloud et dans toutes les régions publiques, à l'exception de la Chine (Beijing).

Q : Comment démarrer, mettre à jour ou supprimer le chiffrement côté serveur à partir d'un flux de données ?

Toutes ces opérations peuvent être réalisées à l'aide d'AWS Management Console ou du kit SDK AWS. Pour en savoir plus, consultez le guide de démarrage pour le chiffrement côté serveur Kinesis Data Streams.

Q : Quel est l'algorithme de chiffrement utilisé pour le chiffrement côté serveur ?

Kinesis Data Streams utilise un algorithme AES-GCM 256 pour le chiffrement.

Q : Si je chiffre un flux de données sur lequel sont déjà écrites des données en texte brut ou en texte chiffré, toutes les données du flux seront-elles chiffrées ou déchiffrées si je mets à jour le chiffrement ?

Non, seules les nouvelles données écrites sur le flux seront chiffrées (ou resteront déchiffrées) par la nouvelle application de chiffrement.

Q : Que permet de chiffrer le chiffrement côté serveur pour Kinesis Data Streams ?

Le chiffrement côté serveur chiffre la charge utile du message ainsi que la clé de partition, qui est spécifiée par les applications producteur du flux de données.

Q : Le chiffrement côté serveur est-il une fonction spécifique à une partition ou à un flux ?

Le chiffrement côté serveur est une fonction spécifique à un flux.

Q : Est-il possible de modifier la clé CMK servant à chiffrer un flux de données spécifique ?

Oui, à l'aide d'AWS Management Console ou du kit SDK AWS, vous pouvez choisir une nouvelle clé principale pour l'appliquer à un flux de données spécifique.

Q : Pouvez-vous m'expliquer le cycle de vie du chiffrement des données à partir de l'envoi des données vers un flux de données Kinesis avec le chiffrement côté serveur activé et leur extraction ?

Vous trouverez ci-dessous une description de la manière dont Kinesis Data Streams utilise des clés CMK AWS KMS pour chiffrer un message avant de le stocker dans le chemin PUT et de le déchiffrer après son extraction du chemin GET. Kinesis et AWS KMS effectuent les actions suivantes (y compris le déchiffrement) lorsque vous appelez les opérations putRecord(s) ou getRecords sur un flux de données avec chiffrement côté serveur activé.

  1. Les données sont envoyées depuis l'application producteur (client) Kinesis d'un utilisateur vers Kinesis à l'aide de SSL via le protocole HTTPS.
  2. Les données sont reçues par Kinesis, stockées dans la RAM et le chiffrement est appliqué à la charge utile et à la clé de partition d'un enregistrement.
  3. Kinesis demande un élément de clé d'entrée (IKM) en texte brut et une copie de l'IKM est chiffrée à l'aide de la clé principale KMS sélectionnée du client.
  4. AWS KMS crée un IKM, le chiffre à l'aide de la clé principale et envoie l'IKM en texte brut et l'IKM chiffré à Kinesis.
  5. Kinesis utilise l'IKM en texte brut pour générer des clés de données uniques pour chaque enregistrement.
  6. Kinesis chiffre la charge utile et la clé de partition à l'aide des clés de données et supprime la clé en texte brut de la mémoire.
  7. Kinesis ajoute l'IKM chiffré aux données chiffrées.
  8. L'IKM en texte brut est mis en cache en mémoire pour être réutilisé jusqu'à ce qu'il expire après 5 minutes.
  9. Kinesis transmet le message chiffré à un stockage backend où il est stocké au repos et où il peut être extrait via un appel à l'opération getRecords.

Kinesis et AWS KMS effectuent les actions suivantes (y compris le déchiffrement) lorsque vous appelez l'opération getRecords.

  1. Lors d'un appel à l'opération getRecords, le frontend de Kinesis extrait l'enregistrement chiffré du service backend.
  2. Kinesis envoie une requête à KMS à l'aide d'un jeton généré par la demande du client. AWS KMS autorise l'opération.
  3. Kinesis déchiffre l'IKM chiffré stocké dans l'enregistrement.
  4. Kinesis recrée les clés de données pour chaque enregistrement à partir de l'IKM déchiffré.
  5. Si l'opération est autorisée, Kinesis déchiffre la charge utile et supprime la clé de données en texte brut de la mémoire.
  6. Kinesis transmet la charge utile via SSL et HTTPS au client Kinesis demandant les enregistrements.

Tarification et facturation

Q : Le service Amazon Kinesis Data Streams est-il disponible dans le cadre de l'offre gratuite d'AWS ?

Amazon Kinesis Data Streams n'est actuellement pas disponible dans le cadre de l'offre gratuite d'AWS. L'offre gratuite d'AWS est un programme qui permet d'essayer gratuitement un certain nombre de services AWS. Pour en savoir plus sur le niveau gratuit d'AWS, consultez la page Niveau gratuit d'AWS.

Q : Combien coûte Amazon Kinesis Data Streams ?

Amazon Kinesis Data Streams propose un système de tarification à l'utilisation très simple. Aucun investissement initial n'est nécessaire et nous n'appliquons pas de frais minimum : vous payez uniquement pour les ressources que vous utilisez. Le coût d'Amazon Kinesis Data Streams tient compte de deux facteurs et de trois dimensions optionnelles :

  • Coûts horaires pour les partitions dépendant du nombre de partitions incluses dans votre flux de données Amazon Kinesis.
  • Des frais correspondant aux unités de charge PUT, dépendant du nombre d'unités de charge de 25 Ko que vos producteurs de données ajoutent à votre flux de données.

Facultatif :

  • La rétention de données étendue génère des frais facultatifs déterminés par le nombre d'heures de partition s'appliquant à votre flux de données. Lorsque la rétention des données étendue est activée, vous payez le taux de rétention étendu pour chaque partition dans votre flux.
  • La distribution améliorée génère des frais facultatifs avec deux dimensions : les heures de partition consommateur et les extractions de données. Les heures de partition consommateur représentent le nombre de partitions dans un flux multiplié par le nombre de consommateurs utilisant la distribution améliorée. Les extractions de données sont déterminées par le nombre de Go offerts aux clients utilisant la distribution améliorée. 

Pour en savoir plus sur les frais liés à Amazon Kinesis Data Streams, consultez la page Tarification Amazon Kinesis Data Streams.

Q : Si j'utilise une opération PutRecords plutôt qu'une opération PutRecord, cela a-t-il un impact sur le coût pour les unités de charge PUT ?

Les coûts pour les unités de charge PUT sont calculés sur la base du nombre d'unités de charge de 25 Ko ajoutées à votre flux de données Amazon Kinesis. Le coût pour les unités de charge PUT reste donc identique si vous utilisez une opération PutRecords ou une opération PutRecord.

Q : Suis-je facturé pour les partitions dont l'état est défini sur « FERMÉ » ?

Il est possible que l'état d'une partition soit défini sur « FERMÉ » suite au repartitionnement. Vous ne serez pas facturé pour les partitions dont l'état est défini sur « FERMÉ ».

Q : En dehors des frais directement liés à Amazon Kinesis Data Streams, quels autres coûts peuvent découler de mon utilisation d'Amazon Kinesis Data Streams ?

Si vous utilisez Amazon EC2 pour exécuter vos applications Amazon Kinesis, les ressources Amazon EC2 vous seront facturées en sus des frais liés à Amazon Kinesis Data Streams.

La bibliothèque client Amazon Kinesis (KCL) utilise une table Amazon DynamoDB pour suivre les informations relatives à l'état du traitement des enregistrements. Si vous utilisez la bibliothèque KCL pour vos applications Amazon Kinesis, des ressources Amazon DynamoDB vous seront facturées en sus des frais liés à Amazon Kinesis Data Streams.

Si vous activez les métriques avancées au niveau des partitions, le coût d'Amazon CloudWatch vous sera facturé, en sus du coût associé aux métriques activées au niveau des partitions et des frais liés à Amazon Kinesis Data Streams.

Les trois cas présentés ci-dessus sont les plus courants, mais la liste n’est pas exhaustive.

En savoir plus sur les tarifs Amazon Kinesis Data Streams

Visiter la page de tarification
Prêt à vous lancer ?
S'inscrire
D'autres questions ?
Contactez-nous