Scénario 2 : données en temps quasi réel pour les équipes en charge de la sécurité
La société ABC2Badge fournit des capteurs et des badges pour les événements d'entreprise ou de grande envergure tels que l'AWS re:Invent
Dans le cadre d'un futur événement et en raison du nombre élevé de participants, l'équipe en charge de la sécurité a demandé à ABC2Badge de collecter des données toutes les 15 minutes pour les zones les plus concentrées du campus. Cela donnera à l'équipe en charge de la sécurité suffisamment de temps pour réagir et répartir le personnel de sécurité proportionnellement aux zones concentrées. Compte tenu de cette nouvelle exigence de l'équipe en charge de la sécurité et du manque d'expérience en matière de création d'une solution de streaming, ABC2Badge recherche une solution simple, mais évolutive et fiable, pour traiter les données en temps quasi réel.
Leur solution d'entrepôt de données actuelle est Amazon Redshift
Nouvelle solution avec Amazon Kinesis Data Firehose
Amazon Kinesis Data Firehose
Amazon Kinesis Data Firehose
Kinesis Data Firehose permet d'effectuer des analyses en temps quasi réel grâce aux outils de Business Intelligence et aux tableaux de bord que vous utilisez déjà aujourd'hui. Ce service sans serveur entièrement géré s'adapte automatiquement à votre débit de données et ne nécessite aucune administration continue. Kinesis Data Firehose peut regrouper, compresser et chiffrer les données avant de les charger, optimisant ainsi la sécurité et limitant le volume de stockage utilisé à l'emplacement de destination. Il peut également transformer les données sources à l'aide d'AWS Lambda et fournir les données transformées aux destinations. Vous pouvez configurer vos producteurs de données pour envoyer des données vers Kinesis Data Firehose, qui diffuse automatiquement les données vers la destination que vous spécifiez.
Envoi de données vers un flux de diffusion Firehose
Pour envoyer des données à votre flux de diffusion, vous disposez de plusieurs options. AWS propose des kits SDK pour de nombreux langages de programmation populaires, chacun d'entre eux fournissant des API pour Amazon Kinesis Data Firehose
Utilisation d'Amazon Kinesis Agent
Amazon Kinesis Agent est une application logicielle autonome qui surveille en permanence un ensemble de fichiers journaux à la recherche de nouvelles données à envoyer au flux de diffusion. L'agent gère automatiquement la rotation des fichiers, les points de contrôle et les nouvelles tentatives en cas d'échec. Il émet également des métriques Amazon CloudWatch pour la surveillance et le dépannage du flux de diffusion. Des configurations supplémentaires, telles que le prétraitement des données, la surveillance de plusieurs répertoires de fichiers et l'écriture dans plusieurs flux de diffusion, peuvent être appliquées à l'agent.
L'agent peut être installé sur des serveurs Linux ou Windows tels que des serveurs Web, des serveurs de journaux et des serveurs de base de données. Une fois l'agent installé, il vous suffit de spécifier les fichiers journaux qu'il surveillera et le flux de diffusion vers lequel il sera envoyé. L'agent enverra de manière durable et fiable de nouvelles données au flux de diffusion.
Utilisation de l'API avec le kit SDK AWS et les services AWS en tant que source
L'API Kinesis Data Firehose propose deux opérations pour envoyer des données à votre flux de diffusion. PutRecord envoie un enregistrement de données par appel. PutRecordBatch peut envoyer plusieurs enregistrements de données par appel et atteindre un débit plus élevé par producteur. Dans chaque méthode, vous devez spécifier le nom du flux de diffusion et l'enregistrement de données, ou le tableau d'enregistrements de données, lorsque vous utilisez cette méthode. Pour de plus amples informations et un exemple de code pour les opérations d'API Kinesis Data Firehose, veuillez consulter Écriture dans un flux de diffusion Firehose à l'aide du kit SDK AWS.
Kinesis Data Firehose fonctionne également avec Kinesis Data Firehose, CloudWatch Logs, CloudWatch Events, Amazon Simple Notification Service
Traitement des données avant livraison à leur destination
Dans certains scénarios, vous pouvez souhaiter transformer ou améliorer vos données de streaming avant que celles-ci ne soient livrées à leur destination. Par exemple, des producteurs de données peuvent envoyer du texte non structuré dans chaque enregistrement de données, celui-ci devant être transformé en JSON avant transmission à OpenSearch Service
Kinesis Data Firehose dispose d'une capacité de conversion de format de données intégrée. Cela vous permet de convertir facilement vos flux de données JSON au format de fichier Apache Parquet ou Apache ORC.
Flux de transformation de données
Pour activer les transformations de données de streaming, Kinesis Data Firehose utilise une fonction Lambda que vous créez pour transformer vos données. Kinesis Data Firehose met en mémoire tampon les données entrantes jusqu'à une taille spécifiée pour la fonction, puis appelle la fonction Lambda spécifiée de manière asynchrone. Les données transformées sont envoyées depuis Lambda vers Kinesis Data Firehose, et Kinesis Data Firehose transmet les données à la destination.
Conversion de format de données
Vous pouvez également activer la conversion de format de données Kinesis Data Firehose, qui convertira votre flux de données JSON au format Apache Parquet ou Apache ORC. Cette fonction ne peut convertir le format JSON qu'en Apache Parquet ou Apache ORC. Si vous avez des données au format CSV, vous pouvez les transformer en données JSON via une fonction Lambda, puis appliquer la conversion de format de données.
Diffusion de données
En tant que flux de diffusion en temps quasi réel, Kinesis Data Firehose met en mémoire tampon les données entrantes. Une fois les seuils de mise en mémoire tampon de votre flux de diffusion atteints, vos données sont transmises à la destination que vous avez configurée. Il existe certaines différences dans la manière dont Kinesis Data Firehose transmet les données à chaque destination. Ces différences sont détaillées dans les sections suivantes.
Amazon S3
Amazon S3
Diffusion de données vers Amazon S3
Pour la diffusion de données vers Amazon S3, Kinesis Data Firehose concatène plusieurs enregistrements entrants en fonction de la configuration de mise en mémoire tampon de votre flux de diffusion, puis les transmet à Amazon S3 en tant qu'objet S3. La fréquence de diffusion de données vers S3 est déterminée par la taille du tampon S3 (de 1 Mo à 128 Mo) ou par l'intervalle de mémoire tampon (de 60 secondes à 900 secondes), selon la première éventualité.
La diffusion de données à votre compartiment S3 peut échouer pour plusieurs raisons. Par exemple, le compartiment peut ne plus exister ou le rôle Gestion des identités et des accès AWS
Amazon Redshift
Amazon Redshift
Diffusion de données vers Amazon Redshift
Pour la diffusion de données vers Amazon Redshift, Kinesis Data Firehose diffuse d'abord les données entrantes vers votre compartiment S3 dans le format décrit précédemment. Kinesis Data Firehose émet ensuite une commande COPY Amazon Redshift pour charger les données depuis votre compartiment S3 vers votre cluster Amazon Redshift.
La fréquence des opérations COPY des données depuis S3 vers Amazon Redshift est déterminée par la rapidité avec laquelle votre cluster Amazon Redshift peut traiter la commande COPY. Pour une destination Amazon Redshift, vous pouvez spécifier une durée de nouvelle tentative (de 0 à 7 200 secondes) lors de la création d'un flux de diffusion pour gérer les échecs de diffusion de données. Kinesis Data Firehose procède à de nouvelles tentatives pendant la durée spécifiée et ignore ce lot particulier d'objets S3 en cas d'échec. Les informations concernant les documents ignorés sont transmises à votre compartiment S3 en tant que fichier manifeste dans le dossier errors/, que vous pouvez utiliser pour le renvoi manuel.
Voici un schéma d'architecture du flux de données depuis Kinesis Data Firehose vers Amazon Redshift. Bien que ce flux de données soit propre à Amazon Redshift, Kinesis Data Firehose suit des modèles similaires pour les autres cibles de destination.
Flux de données depuis Kinesis Data Firehose vers Amazon Redshift
Amazon OpenSearch Service (OpenSearch Service)
OpenSearch Service
Diffusion de données vers OpenSearch Service
Pour la diffusion des données vers OpenSearch Service, Kinesis Data Firehose met en mémoire tampon les enregistrements entrants basés sur la configuration de mise en mémoire tampon de votre flux de diffusion, puis génère une demande groupée OpenSearch pour indexer plusieurs enregistrements dans votre cluster OpenSearch. La fréquence de diffusion des données vers OpenSearch Service est déterminée par la taille de la mémoire tampon OpenSearch (de 1 Mo à 100 Mo) et les valeurs de l'intervalle de mémoire tampon (de 60 secondes à 900 secondes), selon la première éventualité.
Pour la destination OpenSearch Service, vous pouvez spécifier une période de tentative d'envoi (de 0 à 7 200 secondes) lorsque vous créez un flux de diffusion. Kinesis Data Firehose procède à de nouvelles tentatives pendant la durée spécifiée, puis ignore cette demande d'index particulière. Les documents ignorés sont transmis à votre compartiment S3 dans le dossier elasticsearch_failed/ que vous pouvez utiliser pour le renvoi manuel.
Amazon Kinesis Data Firehose peut procéder à la rotation de votre index OpenSearch Service en fonction d'une certaine durée. Selon l'option de rotation que vous choisissez (NoRotation, OneHour, OneDay, OneWeek ou OneMonth), Kinesis Data Firehose ajoute une partie de l'horodatage d'arrivée en temps universel coordonné (UTC) au nom d'index que vous avez spécifié.
Point de terminaison HTTP personnalisé ou fournisseur de services tiers pris en charge
Kinesis Data Firehose peut envoyer des données à des points de terminaison HTTP personnalisés ou à des fournisseurs tiers pris en charge tels que Datadog, Dynatrace, LogicMonitor, MongoDB, New Relic, Splunk et Sumo Logic.
Point de terminaison HTTP personnalisé ou fournisseur de services tiers pris en charge
Pour que Kinesis Data Firehose puisse fournir des données à des points de terminaison HTTP personnalisés, ces derniers doivent accepter les demandes et envoyer des réponses en utilisant certains formats de demande et de réponse Kinesis Data Firehose.
Lors de la diffusion de données à un point de terminaison HTTP appartenant à un fournisseur de services tiers pris en charge, vous pouvez utiliser le service AWS Lambda intégré pour créer une fonction permettant de transformer le ou les enregistrements entrants au format correspondant au format attendu par l'intégration du fournisseur de services.
Pour la fréquence de diffusion des données, chaque fournisseur de services a une taille de mémoire tampon recommandée. Contactez votre fournisseur de services pour plus d'informations sur la taille de mémoire tampon recommandée. Pour la gestion des échecs de diffusion de données, Kinesis Data Firehose établit une connexion avec le point de terminaison HTTP en attendant une réponse de la destination. Kinesis Data Firehose continue d'établir la connexion jusqu'à l'expiration de la durée des nouvelles tentatives. Ensuite, Kinesis Data Firehose considère qu'il s'agit d'un échec de diffusion et sauvegarde les données dans votre compartiment S3.
Récapitulatif
Kinesis Data Firehose peut diffuser en permanence vos données de streaming vers une destination prise en charge. Il s'agit d'une solution entièrement gérée qui ne nécessite que peu ou pas de développement. Pour la société ABC2Badge, l'utilisation de Kinesis Data Firehose était un choix naturel. Ils utilisaient déjà Amazon Redshift comme solution d'entrepôt de données. Comme leurs sources de données écrivaient en permanence dans les journaux de transactions, ils ont pu tirer parti d'Amazon Kinesis Agent pour diffuser ces données sans écrire de code supplémentaire. Maintenant que la société ABC2Badge a créé un flux d'enregistrements de capteurs et reçoit ces enregistrements via Kinesis Data Firehose, elle peut l'utiliser comme base pour le cas d'utilisation de l'équipe en charge de la sécurité.