View a markdown version of this page

Scénario 2 : données en temps quasi réel pour les équipes en charge de la sécurité - Solutions de données de streaming sur AWS avec Amazon Kinesis

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. Les utilisateurs s'inscrivent à l'événement et reçoivent des badges uniques que les capteurs détectent sur l'ensemble du campus. Lorsque les utilisateurs passent devant un capteur, leurs informations anonymisées sont enregistrées dans une base de données relationnelle.

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. Lors de l'examen des fonctions des services Amazon Kinesis, ils ont constaté qu'Amazon Kinesis Data Firehose pouvait recevoir un flux d'enregistrements de données, regrouper les enregistrements en fonction de la taille de la mémoire tampon et/ou de l'intervalle de temps, et les insérer dans Amazon Redshift. Ils ont créé un flux de diffusion Kinesis Data Firehose et l'ont configuré de sorte qu'il copie les données vers leurs tables Amazon Redshift toutes les cinq minutes. Dans le cadre de cette nouvelle solution, ils ont utilisé l'agent Amazon Kinesis sur leurs serveurs. Toutes les cinq minutes, Kinesis Data Firehose charge les données dans Amazon Redshift. L'équipe Business Intelligence (BI) peut alors les analyser et envoyer les données à l'équipe en charge de la sécurité toutes les 15 minutes.

Nouvelle solution avec Amazon Kinesis Data Firehose

Nouvelle solution avec Amazon Kinesis Data Firehose

Amazon Kinesis Data Firehose

Amazon Kinesis Data Firehose est la solution la plus simple pour charger des données de streaming dans AWS. Elle peut capturer, transformer et charger des données de streaming dans Amazon Kinesis Data Analytics, Amazon Simple Storage Service (Amazon S3), Amazon Redshift, Amazon OpenSearch Service (OpenSearch Service) et Splunk. En outre, Kinesis Data Firehose peut charger des données de streaming dans n'importe quel point de terminaison HTTP personnalisé ou dans des points de terminaison HTTP appartenant à des fournisseurs de services tiers pris en charge.

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. AWS dispose d'un utilitaire pour vous aider à envoyer des données vers votre flux de diffusion. Kinesis Data Firehose a été intégré à d'autres services AWS pour envoyer des données directement depuis ces services vers votre flux de diffusion.

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 (Amazon SNS), Amazon API Gateway et AWS IoT. Vous pouvez envoyer de manière évolutive et fiable vos flux de données, vos journaux, vos événements et vos données d'IoT directement dans une destination Kinesis Data Firehose.

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. Vous pouvez également souhaiter convertir les données JSON dans un format de fichier en colonnes tel qu'Apache Parquet ou Apache ORC avant de stocker les données dans Amazon S3.

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 est un service de stockage d'objets doté d'une interface de services Web simple pour stocker et récupérer n'importe quelle quantité de données depuis n'importe où sur le Web. Il est conçu pour être durable à 99,999999999 % et peut traiter plusieurs billions de données dans le monde entier.

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 (IAM) que Kinesis Data Firehose assume peut ne pas avoir accès au compartiment. Dans ces conditions, Kinesis Data Firehose effectue de nouvelles tentatives pendant 24 heures au maximum, jusqu'à ce que la diffusion réussisse. La durée maximale de stockage des données de Kinesis Data Firehose est de 24 heures. En cas de défaillance de leur diffusion pendant plus de 24 heures, vos données sont perdues.

Amazon Redshift

Amazon Redshift est un service d'entrepôt de données rapide et entièrement géré. Il permet d'analyser de manière simple et économique toutes vos données grâce à une syntaxe SQL standard et à vos outils de business intelligence existants. Vous pouvez ainsi exécuter des requêtes analytiques complexes sur plusieurs pétaoctets de données structurées en utilisant l'optimisation de requêtes sophistiquée, le stockage en colonnes sur des disques locaux hautes performances et l'exécution de requêtes massivement parallèle.

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

Flux de données depuis Kinesis Data Firehose vers Amazon Redshift

Amazon OpenSearch Service (OpenSearch Service)

OpenSearch Service est un service entièrement géré qui fournit des API faciles à utiliser et des capacités en temps réel OpenSearch, ainsi que la disponibilité, la capacité de mise à l'échelle et la sécurité requises par les charges de travail de production. OpenSearch Service facilite le déploiement, l'exploitation et la mise à l'échelle d'OpenSearch pour l'analyse des journaux, la recherche en texte intégral et la surveillance des applications.

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