Escenario 2: datos casi en tiempo real para los equipos de seguridad
La empresa ABC2Badge proporciona sensores e insignias para eventos corporativos o a gran escala, como AWS re:Invent
En un evento próximo, debido al gran volumen de asistentes, el equipo de seguridad del evento solicitó a ABC2Badge que recopilara datos para las áreas de mayor concentración del campus cada 15 minutos. Esto le dará al equipo de seguridad tiempo suficiente para reaccionar y repartir al personal de seguridad proporcionalmente a las áreas concentradas. Debido a este nuevo requisito del equipo de seguridad y la inexperiencia de crear una solución de streaming, para procesar los datos casi en tiempo real, ABC2Badge busca una solución simple pero escalable y fiable.
Su solución de almacenamiento de datos actual es Amazon Redshift
Nueva solución con Amazon Kinesis Data Firehose
Amazon Kinesis Data Firehose
Amazon Kinesis Data Firehose
Kinesis Data Firehose permite el análisis casi en tiempo real con herramientas y paneles de inteligencia empresarial existentes que ya está utilizando en la actualidad. Se trata de un servicio sin servidor completamente administrado cuya escala se ajusta de forma automática para adaptarse al rendimiento de los datos y que no precisa administración permanente. Kinesis Data Firehose puede procesar por lotes, comprimir y cifrar los datos antes de cargarlos, a fin de minimizar la cantidad de almacenamiento utilizado en el destino y aumentar la seguridad. También puede transformar los datos de origen con AWS Lambda y entregar los datos transformados a los destinos. Usted configura los productores de datos para que envíen datos a Kinesis Data Firehose, que entrega inmediatamente los datos al destino que usted especifique.
Envío de datos a una secuencia de entrega de Firehose
Para enviar datos a su secuencia de entrega, hay varias opciones. AWS ofrece SDK para muchos lenguajes de programación conocidos, cada uno de los cuales proporciona las API para Amazon Kinesis Data Firehose
Uso del agente de Amazon Kinesis
El agente de Amazon Kinesis Agent es una aplicación de software independiente que supervisa continuamente un conjunto de archivos de registro para que se envíen nuevos datos a la secuencia de entrega. El agente gestiona automáticamente la rotación de archivos, los puntos de control, los reintentos en caso de error y emite métricas de Amazon CloudWatch para la supervisión y la solución de problemas de la secuencia de entrega. Se pueden aplicar al agente configuraciones adicionales, como el preprocesamiento de datos, la supervisión de varios directorios de archivos y la escritura en varias secuencias de entrega.
El agente se puede instalar en servidores basados en Linux o Windows, como servidores web, de registro y de bases de datos. Una vez instalado el agente, solo tiene que especificar los archivos de registro que supervisará y la secuencia de entrega a la que se enviará. El agente enviará nuevos datos de manera duradera y fiable a la secuencia de entrega.
Uso de la API con AWS SDK y los servicios de AWS como origen
La API de Kinesis Data Firehose ofrece dos operaciones para enviar datos a su secuencia de entrega. PutRecord envía un registro de datos en una sola llamada. PutRecordBatch puede enviar varios registros de datos en una sola llamada y puede obtener un mayor rendimiento por productor. En cada método, debe especificar el nombre de la secuencia de entrega y el registro de datos, o matriz de registros de datos, al utilizar este método. Para obtener más información y código de muestra para las operaciones de la API de Kinesis Data Firehose, consulte Escribir en una secuencia de entrega de Firehose con el SDK de AWS.
Kinesis Data Firehose también se ejecuta con Kinesis Data Firehose, CloudWatch Logs, CloudWatch Events, Amazon Simple Notification Service
Procesamiento de datos antes de la entrega en destino
En algunos casos, es recomendable que transforme o mejore sus datos de streaming antes de que se entreguen a su destino. Por ejemplo, los productores de datos pueden enviar texto no estructurado en cada registro de datos y debe transformarlo en JSON antes de entregarlo a OpenSearch Service
Kinesis Data Firehose tiene incorporada la capacidad de conversión de formato de datos incorporada. Con esto, puede convertir fácilmente sus secuencias de datos JSON en formatos de archivo Apache Parquet o Apache ORC.
Flujo de transformación de datos
Para habilitar las transformaciones de datos en streaming, Kinesis Data Firehose utiliza una función Lambda que ha creado para transformar los datos. Kinesis Data Firehose almacena en búfer los datos entrantes en un tamaño de búfer especificado para la función y, a continuación, invoca la función Lambda especificada de forma asíncrona. Los datos transformados se envían de Lambda a Kinesis Data Firehose y Kinesis Data Firehose entrega los datos al destino.
Conversión de formato de datos
También puede activar la conversión de formato de datos de Kinesis Data Firehose, que convertirá su secuencia de datos JSON a Apache Parquet o Apache ORC. Esta función solo puede convertir JSON a Apache Parquet o Apache ORC. Si tiene datos en CSV, puede transformarlos mediante una función Lambda a JSON y, después, aplicar la conversión de formato de datos.
Entrega de datos
Como secuencia de entrega casi en tiempo real, Kinesis Data Firehose almacena en búfer los datos entrantes. Una vez alcanzados los umbrales de almacenamiento en búfer de la secuencia de entrega, los datos se entregan en el destino que ha configurado. Existen algunas diferencias en la forma en que Kinesis Data Firehose entrega los datos en cada destino, que este documento analiza en las siguientes secciones.
Amazon S3
Amazon S3
Entrega de datos a Amazon S3
Para entregar datos a Amazon S3, Kinesis Data Firehose primero concatena varios registros entrantes en función de la configuración de búfer de su secuencia de entrega y, a continuación, los entrega a Amazon S3 como un objeto de S3. La frecuencia de entrega de datos a S3 viene determinada por el tamaño del búfer de S3 (de 1 a 128 MB) o el intervalo del búfer (de 60 a 900 segundos), lo que suceda antes.
La entrega de datos al bucket de S3 podría generar errores por varias razones. Por ejemplo, es posible que el bucket ya no exista o que el rol de AWS Identity and Access Management
Amazon Redshift
Amazon Redshift
Entrega de datos a Amazon Redshift
Para la entrega de datos a Amazon Redshift, Kinesis Data Firehose primero envía los datos entrantes a su bucket de S3 en el formato descrito anteriormente. A continuación, Kinesis Data Firehose emite un comando COPY de Amazon Redshift para cargar los datos del bucket de S3 en el clúster de Amazon Redshift.
La frecuencia con que se ejecutan las operaciones COPY de datos de S3 a Amazon Redshift depende de la velocidad con la que el clúster de Redshift pueda completar el comando COPY. Si es un destino de Amazon Redshift, puede especificar durante cuánto tiempo se reintenta la entrega (de 0 a 7200 segundos) al crear una secuencia de entrega para gestionar los errores de entrega de datos. Kinesis Data Firehose lo reintenta durante el tiempo especificado y omite ese lote concreto de objetos S3 si no lo consigue. La información de los objetos omitidos se entrega al bucket de S3 en forma de archivo de manifiesto, que puede utilizar para reposiciones manuales.
A continuación, se presenta un diagrama de arquitectura del flujo de datos de Kinesis Data Firehose a Amazon Redshift. Si bien este flujo de datos es exclusivo de Amazon Redshift, Kinesis Data Firehose sigue patrones similares para los demás objetivos de destino.
Flujo de datos de Kinesis Data Firehose a Amazon Redshift
Amazon OpenSearch Service (OpenSearch Service)
OpenSearch Service
Entrega de datos a OpenSearch Service
Para entregar datos a OpenSearch Service, Kinesis Data Firehose primero almacena en búfer los registros entrantes a partir de la configuración de búfer de la secuencia de entrega y, después, genera una solicitud masiva de OpenSearch para indexar varios registros en el clúster de OpenSearch. La frecuencia de entrega de datos a OpenSearch Service viene determinada por los valores de tamaño del búfer de OpenSearch (de 1 a 100 MB) y de intervalo del búfer (de 60 a 900 segundos), lo que suceda antes.
Si el destino es OpenSearch Service, puede especificar durante cuánto tiempo se reintenta la entrega (de 0 a 7200 segundos) al crear la secuencia de entrega. Kinesis Data Firehose reintenta la entrega durante el tiempo especificado y, si no lo consigue, omite la solicitud de indexación. Los documentos ignorados se entregan al bucket de S3 en forma de archivo de manifiesto, en la carpeta elasticsearch_failed/, que puede utilizar para reposiciones manuales.
Amazon Kinesis Data Firehose puede rotar su índice de OpenSearch Service en función de una duración de tiempo. En función de la opción de rotación seleccionada (NoRotation, OneHour, OneDay, OneWeek o OneMonth), Kinesis Data Firehose añadirá una parte de la marca de tiempo de llegada en tiempo universal coordinado (UTC) al nombre de índice especificado.
Punto de conexión HTTP personalizado o proveedor de servicios externo compatible
Kinesis Data Firehose puede enviar datos a puntos de conexión HTTP personalizados o a proveedores externos compatibles, como Datadog, Dynatrace, LogicMonitor, MongoDB, New Relic, Splunk y Sumo Logic.
Punto de conexión HTTP personalizado o proveedor de servicios externo compatible
Para que Kinesis Data Firehose entregue datos correctamente a puntos de conexión HTTP personalizados, estos puntos de conexión deben aceptar solicitudes y enviar respuestas con ciertos formatos de solicitud y respuesta de Kinesis Data Firehose.
Al entregar datos a un punto de conexión HTTP propiedad de un proveedor de servicios externo compatible, puede usar el servicio AWS Lambda integrado para crear una función que transforme los registros entrantes al formato que coincida con el formato que espera la integración del proveedor de servicios.
Para la frecuencia de entrega de datos, cada proveedor de servicios tiene un tamaño de búfer recomendado. Colabore con su proveedor de servicios para obtener más información sobre el tamaño de búfer recomendado. Para la gestión de errores en la entrega de datos, Kinesis Data Firehose primero establece una conexión con el punto de conexión HTTP esperando una respuesta del destino. Kinesis Data Firehose sigue estableciendo la conexión hasta que caduca la duración de los reintentos. Después de eso, Kinesis Data Firehose lo considera un error de entrega de datos y realiza una copia de seguridad de los datos en el bucket de S3.
Resumen
Kinesis Data Firehose puede entregar sus datos de streaming de forma persistente a un destino admitido. Es una solución completamente administrada, que requiere poco o ningún desarrollo. Para la empresa ABC2Badge, usar Kinesis Data Firehose era la decisión lógica. Ya utilizaba Amazon Redshift como solución de almacenamiento de datos. Como sus orígenes de datos escribía continuamente en los registros de transacciones, pudo aprovechar el agente de Amazon Kinesis para transmitir esos datos sin escribir código adicional. Ahora que la empresa ABC2Badge ha creado un flujo de registros de sensores y los recibe a través de Kinesis Data Firehose, puede usarlo como base para el caso de uso del equipo de seguridad.