Aspectos generales

P: ¿Qué es Amazon Kinesis Data Streams?

Amazon Kinesis Data Streams permite crear aplicaciones personalizadas que procesan o analizan datos de streaming para satisfacer necesidades especiales. Puede agregar constantemente distintos tipos de datos (por ejemplo, secuencias de clics, logs de aplicaciones y redes sociales) de cientos de miles de orígenes a una transmisión de datos Amazon Kinesis. En cuestión de segundos, los datos estarán disponibles en sus aplicaciones de Amazon Kinesis para su lectura y procesamiento desde el streaming.

P: ¿Qué administra Amazon Kinesis Data Streams por usted?

Amazon Kinesis Data Streams se encarga de administrar la infraestructura, el almacenamiento, las redes y la configuración que se necesitan para transmitir datos al nivel de su procesamiento de datos. No tiene que preocuparse por el aprovisionamiento, la implementación ni el mantenimiento continuo del hardware ni del software, ni por ningún otro servicio necesario para las transmisiones de datos. Además, Amazon Kinesis Data Streams realiza una réplica sincronizada de los datos en tres zonas de disponibilidad, lo que proporciona un alto nivel de disponibilidad y durabilidad de los datos.

P: ¿Qué puedo hacer con Amazon Kinesis Data Streams?

Amazon Kinesis Data Streams resulta útil para trasladar datos rápidamente desde los generadores de datos y procesarlos sin interrupción, ya sea para transformar los datos antes de enviarlos a un almacenamiento de datos, ejecutar métricas y análisis en tiempo real o para derivar las transmisiones de datos más complejas para someterlos a un procesamiento más amplio. A continuación, se muestran casos de uso típicos de Amazon Kinesis Data Streams:

  • Introducción acelerada de registros y datos: en lugar de esperar a que lleguen los datos para agruparlos en lotes, puede hacer que los generadores de datos envíen datos a un streaming de datos de Amazon Kinesis en cuanto se hayan creado y, de este modo, se evita la pérdida de datos si fallan los generadores de datos. Por ejemplo, los logs de sistemas y aplicaciones se pueden agregar sin interrupción a un streaming de datos de Amazon Kinesis y quedar disponibles para su procesamiento en cuestión de segundos.
  • Métricas e informes en tiempo real: puede obtener métricas y elaborar informes a partir de datos del streaming de Amazon Kinesis en tiempo real. Por ejemplo, su Aplicación de Amazon Kinesis puede utilizar las métricas y los informes para los registros de sistemas y aplicaciones a medida que ingresan los datos del streaming, en lugar de esperar a que lleguen lotes completos de datos.
  • Análisis de datos en tiempo real: con Amazon Kinesis Data Streams, puede analizar los datos de streaming en tiempo real. Por ejemplo, puede añadir secuencias de clics al streaming de datos de Amazon Kinesis y hacer que su aplicación de Amazon Kinesis realice análisis en tiempo real, con lo que obtendrá una perspectiva de los datos en cuestión de minutos, y no de horas o días.
  • Procesamiento de streaming complejos: puede crear gráficos acíclicos dirigidos (DAG) a partir de aplicaciones de Amazon Kinesis y streaming de datos. En este caso, una o varias aplicaciones de Amazon Kinesis pueden agregar datos a otra transmisión de datos de Amazon Kinesis para un procesamiento posterior, lo que permite procesar las transmisiones con fases sucesivas.

P: ¿Cómo puedo utilizar Amazon Kinesis Data Streams?

Una vez que se registre en Amazon Web Services, puede comenzar a utilizar Amazon Kinesis Data Streams de las siguientes maneras:

  • Cree un streaming de datos de Amazon Kinesis a través de la consola de administración de AWS o bien, mediante la operación CreateStream.
  • Configure los generadores de datos para agregar datos al streaming de datos sin interrupción.
  • Cree sus aplicaciones de Amazon Kinesis para la lectura y el procesamiento de datos del streaming de datos, mediante la API de Amazon Kinesis o bien con la biblioteca de clientes de Amazon Kinesis (KCL).

P: ¿Qué límites tiene Amazon Kinesis Data Streams?

El procesamiento de un streaming de datos de Amazon Kinesis está diseñado para escalarse sin límites mediante el aumento de la cantidad de particiones de un streaming de datos. No obstante, existen determinados límites que se deben tener en cuenta al utilizar Amazon Kinesis Data Streams:

  • De forma predeterminada, puede obtener acceso a los registros de un straming hasta 24 horas desde el momento en que se añaden a este. Puede aumentar este límite hasta los 7 días habilitando la retención de datos ampliada.
  • El tamaño máximo de un blob de datos (la carga útil de datos anterior a la codificación Base64) en un registro es de 1 megabyte (MB).
  • Cada partición admite hasta 1000 registros PUT por segundo.

Para obtener más información sobre los demás límites de la API, consulte Límites de Amazon Kinesis Data Streams.

P: ¿En qué se diferencia Amazon Kinesis Data Streams de Amazon SQS?

Con Amazon Kinesis Data Streams puede procesar big data de streaming en tiempo real. Le permite ordenar los registros, así como leerlos o volver a reproducirlos en el mismo orden en varias aplicaciones de Amazon Kinesis. La biblioteca de clientes de Amazon Kinesis (KCL) entrega todos los registros de una clave de partición determinada al mismo procesador de registros, lo que facilita el desarrollo de varias aplicaciones que lean desde un mism streaming de datos de Amazon Kinesis (por ejemplo, para realizar un recuento, para agregar y para filtrar).

Amazon Simple Queue Service (Amazon SQS) es una cola hospedada de confianza, altamente escalable y diseñada para almacenar mensajes mientras viajan de un equipo a otro. Amazon SQS le permite trasladar datos con facilidad entre componentes de aplicaciones distribuidas y le ayuda a crear aplicaciones en las que los mensajes se procesan de manera independiente (con una semántica de ack/fail a nivel de mensaje), como los flujos de trabajo automáticos.

P: ¿Cuándo debería utilizar Amazon Kinesis Data Streams y cuándo Amazon SQS?

Le recomendamos que utilice Amazon Kinesis Data Streams cuando se presenten casos de uso con requisitos similares a los siguientes:

  • Para enrutar registros relativos al mismo procesador de registros (al igual que en el streaming de MapReduce). Por ejemplo, es más fácil contar y agregar cuando todos los registros de una clave determinada se enrutan al mismo procesador de registros.
  • Para ordenar registros. Por ejemplo, si desea trasladar datos de logs desde el equipo host de una aplicación hasta el equipo host encargado de procesar y archivar, manteniendo el orden de los logs.
  • Para utilizar la misma transmisión de forma simultánea en diferentes aplicaciones. Por ejemplo, si cuenta con una aplicación que actualiza un panel en tiempo real y otra que archiva datos en Amazon Redshift. En este caso, interesa que las dos aplicaciones consuman datos del mismo streaming de forma simultánea e independiente.
  • Para consumir registros en el mismo orden unas horas después. Por ejemplo, si tiene una aplicación de facturación y otra de auditoría que se ejecuta con unas horas de retraso respecto a la primera. Dado que Amazon Kinesis Data Streams almacena datos hasta 7 días, puede ejecutar la aplicación de auditoría con hasta 7 días de retraso respecto a la aplicación de facturación.

Le recomendamos que utilice Amazon SQS cuando se presenten casos de uso con requisitos similares a los siguientes:

  • Semántica del sistema de mensajería a nivel de mensajes individuales (ack/fail) y tiempo de espera de visibilidad. Por ejemplo, si tiene una cola de elementos de trabajo y desea controlar la finalización de cada elemento de forma individual. Amazon SQS hace un seguimiento de ack/fail para que la aplicación no tenga que mantener un control o un cursor de manera permanente. Amazon SQS elimina los mensajes de recepción confirmada y vuelve a enviar los mensajes fallidos una vez transcurrido el tiempo de espera de visibilidad configurado.
  • Demora de mensajes individuales. Por ejemplo, si tiene una cola de tareas y tiene que retrasar tareas de forma individual. Con Amazon SQS, puede configurar los mensajes de forma individual para que tengan una demora de hasta 15 minutos.
  • Aumento dinámico de la concurrencia/caudal en el momento de la lectura. Por ejemplo, si tiene una cola de trabajo y desea añadir más lectores hasta que se hayan enviado todas las transmisiones pendientes. Con Amazon Kinesis Data Streams puede ajustar el número de fragmentos que necesite (no obstante, tenga en cuenta que debe contar con un aprovisionamiento de fragmentos suficiente por adelantado).
  • Aproveche la capacidad de Amazon SQS para escalar de manera transparente. Por ejemplo, si coloca las solicitudes en una memoria intermedia y el volumen de carga cambia según los picos de carga ocasionales o el crecimiento natural de su negocio. Ya que cada solicitud que ha colocado en la memoria intermedia se puede procesar de forma individual, Amazon SQS puede escalarse de forma transparente para administrar la carga sin necesidad de instrucciones por su parte.

Conceptos clave

P: ¿Qué es una partición?

El fragmento es la unidad básica de procesamiento de una transmisión de datos Amazon Kinesis. Un fragmento proporciona una capacidad de entrada de datos de 1 MB/s y de salida de datos de 2 MB/s. Un fragmento puede soportar hasta 1 000 registros PUT por segundo. Cuando cree una transmisión de datos, deberá especificar el número de fragmentos que necesitará. Por ejemplo, puede crear un streaming de datos con dos particiones. Este streaming de datos tiene una capacidad de procesamiento de entrada de datos de 2 MB/s y de salida de datos de 4 MB/s, y admite hasta 2000 registros PUT por segundo. Puede monitorear las métricas a nivel de la par en Amazon Kinesis Data Streams y añadir o eliminar particiones de su streaming de datos de manera dinámica a medida que cambie el procesamiento de los datos mediante la modificación de particiones del streaming de datos.

P: ¿Qué es un registro?

Un registro es la unidad de datos que se almacena en un streaming de datos de Amazon Kinesis. Un registro se compone de un número secuencial, una clave de partición y un blob de datos. El blob de datos son los datos de interés que su generador de datos agrega a una transmisión de datos. El tamaño máximo de un blob de datos (la carga útil de datos anterior a la codificación Base64) es de 1 megabyte (MB).

P: ¿Qué es una clave de partición?

La clave de partición se utiliza para segregar y enrutar registros a diferentes particiones de un streaming de datos. El generador de datos especifica la clave de partición en el momento de agregar datos a un streaming de datos de Amazon Kinesis. Por ejemplo, supongamos que tiene un streaming de datos con dos particiones (partición 1 y partición 2). Puede configurar el generador de datos para que utilice dos claves de partición (clave A y clave B), a fin de que todos los registros con clave A se incluyan en la partición 1 y todos los registros con clave B se incluyan en la partición 2.

P: ¿Qué es un número secuencial?

Un número secuencial es un identificador exclusivo de cada registro. Amazon Kinesis asigna el número secuencial cuando un generador de datos llama a una operación PutRecord o PutRecords para agregar datos a un streaming de datos de Amazon Kinesis. Por lo general, los números secuenciales de una misma clave de partición aumentan a medida que transcurre el tiempo; cuanto mayor sea el período de tiempo transcurrido entre las solicitudes PutRecord o PutRecords, mayor será el aumento de los números secuenciales.

Creación de streamings de datos

P: ¿Cómo puedo crear un streaming de datos de Amazon Kinesis?

Cuando se registra en Amazon Web Services, puede crear un streaming de datos de Amazon Kinesis a través de la consola de administración de Amazon Kinesis, o bien mediante la operación CreateStream.

P: ¿Cómo determino la capacidad de rendimiento de un streaming de datos de Amazon Kinesis?

La cantidad de particiones de un streaming de datos determina la capacidad de un streaming de datos de Amazon Kinesis. Siga los pasos indicados a continuación para realizar un cálculo aproximado de la cantidad inicial de particiones que necesita su streaming de datos. Observe cómo puede ajustar de manera dinámica la cantidad de particiones incluidas en su streaming de datos mediante la modificación de particiones.

  1. Calcule el tamaño promedio del registro escrito en el streaming de datos en kilobytes (KB), y redondee al KB más cercano. (tamaño_de_datos_promedio_en_KB)
  2. Calcule la cantidad de registros escritos por segundo en el streaming de datos. (número_de_registros_por_segundo)
  3. Determine el número de aplicaciones de Amazon Kinesis que consume datos de forma simultánea e independiente del streaming de datos. (número_de_consumidores)
  4. Calcule el ancho de banda de entrada de las operaciones de escritura en KB (ancho_de_banda_entrante_para_escritura_en_KB), que equivale al tamaño_medio_datos_en_KB multiplicado por el número_de_registros_por_segundo.
  5. Calcule el ancho de banda de salida de las operaciones de lectura en KB (ancho_de_banda_saliente_para_lectura_en_KB), que equivale a ancho_de_banda_entrante_para_escritura_en_KB multiplicado por número_de_consumidores.

Puede calcular la cantidad inicial de particiones (cantidad_de_particiones) que necesita el streaming de datos con la siguiente fórmula:

número_de_fragmentos = máx (ancho_de_banda_entrante_para_escritura_en_KB/1000, ancho_de_banda_saliente_para_lectura_en_KB/2000)

P: ¿Cuál es la capacidad de rendimiento mínima que puedo solicitar para mi streaming de datos de Amazon Kinesis?

La capacidad de rendimiento de un streaming de datos de Amazon Kinesis se escala por unidad de partición. El nivel de procesamiento mínimo que tiene una transmisión datos es un único fragmento, que ofrece una entrada de datos de 1 MB/s y una salida de datos de 2 MB/s.

P: ¿Cuál es el nivel de procesamiento máximo que puedo solicitar para mi transmisión de datos de Amazon Kinesis?

La capacidad de rendimiento de un streaming de datos de Amazon Kinesis se diseña para escalar sin ningún tipo de límite. De forma predeterminada, una cuenta aprovisiona 10 particiones por región. Con el formulario Límites de Amazon Kinesis Data Streams, puede solicitar más de 10 particiones en una misma región.

P: ¿Cómo afecta el tamaño del registro en la capacidad de procesamiento de un streaming de datos de Amazon Kinesis?

Una partición ofrece una velocidad de entrada de datos de 1 MB/s y soporta hasta 1000 registros PUT por segundo. Por tanto, si el tamaño del registro es inferior a 1 KB, la velocidad real de entrada de datos de una partición será inferior a 1 MB/s, y se verá limitada por el número máximo de registros PUT por segundo.

Incorporación de datos a un streaming de datos de Kinesis

P: ¿Cómo agrego datos a un streaming de datos de Amazon Kinesis?

Puede agregar datos a un streaming de datos de Amazon Kinesis a través de las operaciones PutRecord y PutRecords, la biblioteca de generadores de Amazon Kinesis (KPL) o el agente de Amazon Kinesis.

P: ¿Qué diferencia hay entre PutRecord y PutRecords?

 La operación PutRecord permite incluir un solo registro de datos en una llamada al API, mientras que la operación PutRecords permite varios registros de datos en una llamada al API. Para obtener más información sobre las operaciones PutRecord y PutRecords, consulte PutRecord y PutRecords.

P: ¿Qué es la biblioteca de generadores de Amazon Kinesis (KPL)?

La biblioteca de generadores de Amazon Kinesis (KPL) es una biblioteca de uso sencillo y altamente configurable que le permite incluir datos en una transmisión de datos de Amazon Kinesis. La KPL contiene una interfaz sencilla, asíncrona y de confianza que le permite lograr un alto desempeño de generación de manera rápida con recursos del cliente mínimos.

P: ¿Con qué lenguajes o plataformas de programación puedo tener acceso al API de Amazon Kinesis?

El API de Amazon Kinesis está disponible en los SDK de Amazon Web Services. Puede consultar la lista de los lenguajes y las plataformas de programación para los SDK de Amazon Web Services en Herramientas de Amazon Web Services.

P: ¿En qué lenguaje de programación se encuentra disponible la biblioteca de generadores de Amazon Kinesis (KPL)?

El núcleo de la biblioteca de generadores de Amazon Kinesis (KPL) se ha creado con el módulo C++ y se puede compilar para que funcione con cualquier plataforma con un compilador C++ reciente. En la actualidad, la biblioteca se encuentra disponible en una interfaz de Java. Esperamos adaptarlos a otros lenguajes de programación.

P: ¿Qué es el agente de Amazon Kinesis?

El agente de Amazon Kinesis es una aplicación precompilada en Java que ofrece una forma fácil de recopilar y enviar datos a una transmisión de datos de Amazon Kinesis. Puede instalar el agente en entornos de servidor basados en Linux, como servidores web, servidores de log y servidores de base de datos. El agente monitorea determinados archivos y envía continuamente datos a su transmisión de datos. Para obtener más información, consulte Escribir con agentes.

P: ¿Qué plataformas son compatibles con el agente de Amazon Kinesis?

En este momento, el agente de Amazon Kinesis es compatible con Amazon Linux y Red Hat Enterprise Linux.

P: ¿Dónde consigo el agente de Amazon Kinesis?

Puede descargar e instalar el agente de Amazon Kinesis usando el siguiente comando y enlace:

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

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

Desde GitHub: awlabs/amazon-kinesis-agent

P: ¿Cómo se utiliza el agente de Amazon Kinesis?

Después de instalar el agente de Amazon Kinesis en sus servidores, puede configurarlo para monitorear determinados archivos del disco y enviar datos de forma constante a su transmisión de datos de Amazon Kinesis. Para obtener más información, consulte Escribir con agentes.

P: ¿Qué sucede si se supera el límite de capacidad de un streaming de datos de Amazon Kinesis mientras el generador de datos agrega datos a dicho streaming?

El límite de capacidad de un streaming de datos de Amazon Kinesis lo determina su cantidad de particiones. El límite puede superarse por el caudal de los datos o por el número de registros PUT. Cuando se supere el límite de capacidad, se rechazarán las llamadas a los datos PUT y se generará una excepción ProvisionedThroughputExceeded. Si se superó el límite porque se aumentó la velocidad de entrada de datos del streaming de datos, el generador de datos volverá a intentarlo hasta conseguir completar las solicitudes. Si se debe a un aumento sostenido de la velocidad de entrada de datos del streaming de datos, deberá incrementar la cantidad de particiones de su streaming de datos a fin de que las llamadas a los datos PUT tengan capacidad suficiente para realizarse normalmente. En ambos casos, las métricas de Amazon CloudWatch le permiten obtener información sobre el cambio de la velocidad de entrada de datos del streaming de datos y la generación de excepciones ProvisionedThroughputExceeded.

P: ¿Qué datos se tendrán en cuenta en relación a la capacidad de procesamiento de los datos de un streaming de Amazon Kinesis durante una llamada PutRecord o PutRecords?

El blob de datos, la clave de partición y el nombre del streaming de datos son parámetros imprescindibles para realizar una llamada PutRecord o PutRecords. El tamaño de su blob de datos (antes de la codificación Base64) y de su clave de partición se tendrán en cuenta en relación a la capacidad de procesamiento de datos de su streaming de Amazon Kinesis, que se determina según la cantidad de particiones que componen el streaming de datos.

Distribución ramificada mejorada

P: ¿Qué es la distribución ramificada mejorada?

La distribución ramificada mejorada es una función opcional para los consumidores de Kinesis Data Streams que proporciona canales de rendimiento lógicos de 2 MB/s entre consumidores y particiones. Esto permite a los clientes escalar en paralelo la cantidad de consumidores que leen un streaming mientras se mantiene el alto rendimiento.

P: ¿Cómo usan los consumidores una distribución ramificada mejorada?

Los consumidores primero deben registrarse en el servicio Kinesis Data Streams. De forma predeterminada, el registro del consumidor activa la distribución ramificada mejorada. Si está utilizando KCL, la versión 2.x se ocupa de registrar a sus consumidores automáticamente y utiliza el nombre de la aplicación KCL como nombre del consumidor. Una vez registrados, estos consumidores tendrán sus propios canales de rendimiento lógicos de distribución ramificada mejorada aprovisionados. Luego, los consumidores usan la API SubscribeToShard de HTTP/2 para recuperar datos dentro de estos canales de rendimiento. La API GetRecords de HTTP/1 actualmente no es compatible con la distribución ramificada mejorada, por lo que deberá actualizar a la versión 2.x de KCL o, alternativamente, registrar su consumidor y hacer que este llame a la API SubscribeToShard.

P: ¿Cómo se usa un consumidor la distribución ramificada mejorada?

Los consumidores utilizan la distribución ramificada mejorada al recuperar datos con la API SubscribeToShard. El nombre del consumidor registrado se utiliza dentro de la API SubscribeToShard, que a lleva a utilizar el beneficio de la distribución ramificada mejorada que se ofrece al consumidor registrado.

Q: ¿Por qué debo usar la distribución ramificada mejorada?
Debe utilizarla si tiene, o espera tener, múltiples consumidores que recuperan datos de un streaming en paralelo, o si tiene al menos un consumidor que requiere el uso de la API SubscribeToShard para ofrecer velocidades de entrega de datos inferiores a 200 ms entre generadores y consumidores.

P: ¿Puedo hacer que los consumidores usen la distribución ramificada mejorada y otros no?

Sí, puede hacer que, al mismo tiempo, varios consumidores utilicen la distribución ramificada mejorada y otros no. El uso de una distribución ramificada mejorada no afecta los límites de las particiones para el uso tradicional de GetRecords.

P: ¿Existe un límite en la cantidad de consumidores que utilizan una distribución ramificada mejorada en un streaming determinado?

Hay un límite predeterminado de 5 consumidores para el uso de una distribución ramificada mejorada por streaming de datos. Si necesita más de 5, envíe una solicitud de aumento de límite a través de AWS Support. Tenga en cuenta que puede haber más de 5 consumidores totales leyendo un streaming, si 5 consumidores utilizan la distribución ramificada mejorada y otros consumidores que no lo hacen al mismo tiempo.

P: ¿Cómo se registran los consumidores para utilizar una distribución ramificada mejorada y la API SubscribeToShard de HTTP/2?

Le recomendamos el uso de KCL 2.x, que registrará automáticamente al consumidor y utilizará tanto la distribución ramificada mejorada como la API SubscribeToShard de HTTP/2. De lo contrario, puede registrar manualmente un consumidor utilizando la API RegisterStreamConsumer y luego puede usar la API SubscribeToShard con el nombre del consumidor que registró.

P: ¿El uso de la distribución ramificada mejorada tiene algún costo asociado?

Sí, hay un costo por hora bajo demanda para cada combinación de partición en un streaming y un consumidor (hora consumidor-partición) registrado para utilizar la distribución ramificada mejorada, además de un costo de recuperación de datos por cada GB recuperado. Consulte la página de precios de Kinesis Data Streams para obtener más detalles.

P: ¿Cómo se calcula una hora consumidor-partición?

Se calcula multiplicando la cantidad de consumidores del streaming registrados por la cantidad de particiones en el streaming. Por ejemplo, si una hora consumidor-partición cuesta 0,015 USD para un streaming de datos de 10 particiones, este consumidor al utilizar la distribución ramificada mejorada podría leer las 10 particiones y, por lo tanto, incurriría en un cargo de 0,15 USD por hora (1 consumidor x 10 particiones x 0,015 USD por hora consumidor-partición). Si hubiera dos consumidores registrados para una distribución ramificada mejorada simultáneamente, la tarifa total por hora consumidor-partición sería de 0,30 USD por hora (2 consumidores x 10 particiones x 0,015 USD).

P: ¿Se prorrateará automáticamente la facturación de horas consumidor-partición si termino o inicio un consumidor dentro de una hora?

Sí, solo pagará la parte prorrateada de la hora en que el consumidor se registró para utilizar una distribución ramificada mejorada.

P: ¿Cómo funciona la facturación de recuperaciones de datos de la distribución ramificada mejorada?

Usted paga una tarifa baja por GB que se mide por byte de datos recuperados por los consumidores que utilizan la distribución ramificada mejorada. No hay redondeo de carga ni mínimo de entrega.

P: ¿Debo cambiar mis generadores o mi streaming de datos para utilizar la distribución ramificada mejorada?

No, se puede activar la distribución ramificada mejorada sin afectar a los generadores de datos o a los streamings de datos.

Lectura y procesamiento de datos de streamings de Kinesis

P: ¿Qué es una aplicación de Amazon Kinesis?

Una aplicación de Amazon Kinesis es un consumidor de datos que se encarga de leer y procesar datos procedentes de un streaming de Amazon Kinesis. Puede crear aplicaciones con Amazon Kinesis Data Analyticsla API de Amazon Kinesis o la biblioteca de clientes de Amazon Kinesis (KCL).

P: ¿Qué es la biblioteca de clientes de Amazon Kinesis (KCL)?

La biblioteca de clientes de Amazon Kinesis (KCL) es una biblioteca preintegrada para Java | Python | Ruby | Node.js | .NET que permite desarrollar de forma sencilla aplicaciones de Amazon Kinesis para la lectura y el procesamiento de datos de un streaming de Amazon Kinesis.

La KCL se encarga de administrar las cuestiones complejas, como la adaptación a los cambios de volumen del streaming de datos, el equilibrio de carga de datos de streaming, la coordinación de servicios distribuidos y el procesamiento de datos con tolerancia a errores. La KCL le permite concentrarse en la lógica de negocio al desarrollar aplicaciones. KCL 2.x es compatible con las API GetRecords de HTTP/1 y SubscribeToShard de HTTP/2, junto con la distribución ramificada mejorada para recuperar datos de un streaming. KCL 1.x no es compatible con la API SubscribeToShard ni con la distribución ramificada mejorada.

¿Cómo puedo actualizar KCL 1.x a 2.x para utilizar SubscribeToShard y la distribución ramificada mejorada?

Visite la documentación del usuario de Kinesis Data Streams para saber cómo actualizar KCL 1.x a KCL 2.x.

P: ¿Qué es la API SubscribeToShard?

La API SubscribeToShard es una API de streaming de alto rendimiento que envía datos de las particiones a los consumidores a través de una conexión persistente sin un ciclo de solicitud del cliente. La API SubscribeToShard utiliza el protocolo HTTP/2 para entregar datos a los consumidores registrados cada vez que llegan nuevos datos a la partición, generalmente dentro de los 70 ms, ofreciendo una entrega ~65% más rápida en comparación con la API GetRecords. Los consumidores disfrutarán de una entrega rápida, incluso cuando múltiples consumidores registrados estén leyendo en la misma partición.

P: ¿Puedo usar SubscribeToShard sin usar una distribución ramificada mejorada?

No, SubscribeToShard requiere el uso de la distribución ramificada mejorada, lo que significa que también debe registrar a su consumidor en el servicio Kinesis Data Streams antes de poder utilizar SubscribeToShard.

P: ¿Cuánto tiempo dura la conexión persistente de SubscribeToShard?

La conexión persistente puede durar hasta 5 minutos.

P: ¿Kinesis Client Library (KCL) es compatible con SubscribeToShard?

Sí, la versión 2.x de KCL usa SubscribeToShard y la distribución ramificada mejorada para recuperar datos con alto rendimiento de un streaming de datos de Kinesis.

P: ¿El uso de SubscribeToShard tiene algún costo asociado?

No, no hay ningún costo adicional asociado con SubscribeToShard, pero debe usar esta API con la distribución ramificada mejorada que tiene un costo adicional por hora por cada combinación consumidor-partición y por GB de datos entregados mediante la distribución ramificada mejorada.

P: ¿Debo utilizar la distribución ramificada mejorada si quiero utilizar SubscribeToShard?

Sí, para utilizar SubscribeToShard debe registrar a sus consumidores y el registro activa la distribución ramificada mejorada. De manera predeterminada, su consumidor utilizará la distribución ramificada mejorada automáticamente cuando los datos se recuperan a través de SubscribeToShard.

P: ¿Qué es la biblioteca de conectores de Amazon Kinesis?

La biblioteca de conectores de Amazon Kinesis es una biblioteca preintegrada que permite integrar de forma sencilla Amazon Kinesis Data Streams con otros servicios de AWS y herramientas de terceros. La biblioteca de clientes de Amazon Kinesis (KCL) para Java | Python | Ruby | Node.js y .NET es necesaria para usar la biblioteca de conectores de Amazon Kinesis. La versión actual de esta biblioteca proporciona conectores para Amazon DynamoDB, Amazon Redshift, Amazon S3 y Elasticsearch. La biblioteca también incluye conectores de muestra de cada tipo, además de archivos de compilación de Apache Ant para ejecutar las muestras.

P: ¿Qué es Amazon Kinesis Storm Spout?

Amazon Kinesis Storm Spout es una biblioteca preintegrada que permite integrar de forma sencilla Amazon Kinesis Data Streams con Apache Storm. La versión actual de Amazon Kinesis Storm Spout obtiene datos del streaming de Amazon Kinesis y los emite como tuplas. Se añade el canal (spout) a la topología de Storm para poder utilizar Amazon Kinesis Data Streams como un servicio escalable y de confianza para la captura, el almacenamiento y la reproducción de streamings.

P: ¿En qué lenguaje de programación están disponibles la biblioteca de clientes de Amazon Kinesis (KCL), la biblioteca de conectores de Amazon Kinesis y Amazon Kinesis Storm Spout?

En la actualidad, la biblioteca de clientes de Amazon Kinesis (KCL) se encuentra disponible en Java, Python, Ruby Node.js y .NET. La biblioteca de conectores de Amazon Kinesis y Amazon Kinesis Storm Spout están disponibles en Java. Esperamos adaptarlos a otros lenguajes de programación.

P: ¿Tengo que utilizar la biblioteca de clientes de Amazon Kinesis (KCL) para mi aplicación de Amazon Kinesis?

No, también puede usar el API de Amazon Kinesis para desarrollar su aplicación de Amazon Kinesis. No obstante, le recomendamos que utilice la biblioteca de clientes de Amazon Kinesis (KCL) para Java | Python | Ruby | Node.js y .NET si corresponde, ya que realiza las tareas pesadas asociadas al procesamiento de streamings distribuidos y, de este modo, aumenta la productividad para el desarrollo de aplicaciones.

P: ¿Cómo interactúa la biblioteca de clientes de Amazon Kinesis (KCL) con una aplicación de Amazon Kinesis?

La biblioteca de clientes de Amazon Kinesis (KCL) para Java | Python | Ruby | Node.js | .NET ejerce de intermediaria entre Amazon Kinesis Data Streams y su aplicación de Amazon Kinesis. La KCL utiliza la interfaz IRecordProcessor para comunicarse con su aplicación. Su aplicación implementa esta interfaz y la KCL llama al código de su aplicación por medio de los métodos existentes en esta interfaz.

Para obtener más información sobre cómo crear aplicaciones con la KCL, consulte Desarrollo de aplicaciones para consumidores de Amazon Kinesis con la biblioteca de clientes de Amazon Kinesis.

P: ¿Qué es una unidad de trabajo y un procesador de registros generados por la biblioteca de clientes de Amazon Kinesis (KCL)?

Una aplicación de Amazon Kinesis puede tener distintas instancias de aplicaciones, y una unidad de trabajo es la unidad de procesamiento que se asigna a cada instancia de aplicación. Un procesador de registros es la unidad de procesamiento encargada de procesar datos procedentes de una partición de un streaming de datos de Amazon Kinesis. Una unidad de trabajo se asocia a uno o varios procesadores de registros. Un procesador de registros se asocia a una partición y procesa los registros en ella.

Al comenzar, una aplicación llama a la biblioteca de clientes de Amazon Kinesis (KCL) para Java | Python | Ruby | Node.js | .NET para iniciar una instancia de unidad de trabajo. Esta llamada le ofrece a la KCL información de configuración de la aplicación, como el nombre del streaming de datos y las credenciales de AWS. Asimismo, esta llamada traslada una referencia a una implementación IRecordProcessorFactory. La KCL utiliza esta fábrica con el fin de crear los nuevos procesadores de registros que se necesiten para procesar datos procedentes del streaming de datos. La KCL se comunica con estos procesadores de registros mediante la interfaz IRecordProcessor.

P: ¿Cómo conserva la biblioteca de clientes de Amazon Kinesis (KCL) los registros de datos de seguimiento que se procesan en una aplicación de Amazon Kinesis?

La biblioteca de clientes de Amazon Kinesis (KCL) para Java | Python | Ruby | Node.js | .NET crea una tabla de Amazon DynamoDB de forma automática para cada aplicación de Amazon Kinesis a fin de llevar a cabo un seguimiento y mantener actualizada la información de estado, como los eventos de modificación de particiones y las comprobaciones del número de secuencia. La tabla de DynamoDB comparte el nombre con la aplicación; por lo tanto, es importante asegurarse de que el nombre de la aplicación no entre en conflicto con ninguna tabla de DynamoDB que ya exista en la misma cuenta de una misma región.

Se entiende que las unidades de trabajo asociadas a un mismo nombre de aplicación funcionan de forma conjunta en el mismo streaming de datos de Amazon Kinesis. Si ejecuta otra instancia del mismo código de aplicación, pero con otro nombre de aplicación distinto, la KCL considera que la segunda instancia es una aplicación completamente independiente de la otra que también funciona en la misma transmisión de datos.

Tenga en cuenta que se cargarán en su cuenta los costos asociados con la tabla de Amazon DynamoDB, además de los costos asociados con Amazon Kinesis Data Streams.

Para obtener más información sobre cómo la KCL realiza el seguimiento del estado de la aplicación, consulte Seguimiento del estado de la aplicación de Amazon Kinesis.

P: ¿Cómo puedo escalar automáticamente la capacidad de procesamiento de mi aplicación de Amazon Kinesis por medio de la biblioteca de clientes de Amazon Kinesis (KCL)?

Puede crear varias instancias de su aplicación de Amazon Kinesis y hacer que estas instancias de la aplicación se ejecuten en un conjunto de instancias de Amazon EC2 que forman parte de un grupo de Auto Scaling. Mientras aumente la demanda de procesamiento, se creará automáticamente una instancia de Amazon EC2 para ejecutar la instancia de su aplicación. La biblioteca de clientes de Amazon Kinesis (KCL) para Java | Python | Ruby | Node.js | .NET generará una unidad de trabajo para esta nueva instancia y trasladará automáticamente a esta nueva instancia los procesadores de registros de instancias que sufran sobrecarga.

P: ¿Por qué la llamada GetRecords devuelve un resultado vacío cuando hay datos en un streaming de Amazon Kinesis?

Un posible motivo es que no haya un registro en la posición indicada por el iterador de partición vigente. Esto puede suceder incluso aunque se utilice el tipo de iterador de partición TRIM_HORIZON. Un streaming de datos de Amazon Kinesis representa un streaming continuo de datos. Debe realizar una llamada a la operación GetRecords en un bucle y se devolverá el registro cuando el iterador de partición avance hasta la posición donde está almacenado el registro.

P: ¿Qué es ApproximateArrivalTimestamp en la operación GetRecords?

Cada registro incluye un valor llamado ApproximateArrivalTimestamp. Se configura cuando Amazon Kinesis recibe y almacena correctamente el registro. Esta marca de tiempo tiene una precisión de milisegundos, aunque su precisión no puede garantizarse. Por ejemplo, los registros de una partición o de un streaming de datos podrían tener marcas de tiempo desordenadas.

P: ¿Qué ocurre si se superan los límites de capacidad de un streaming de datos de Amazon Kinesis mientras una aplicación de Amazon Kinesis lee datos procedentes del streaming de datos?

El límite de capacidad de un streaming de datos de Amazon Kinesis lo determina su cantidad de particiones. Los límites pueden superarse por el caudal de datos o por el número de llamadas de lectura de datos. Cuando se superen los límites de capacidad, se rechazará la llamada de lectura de datos con una excepción ProvisionedThroughputExceeded. Esto se debe a un incremento temporal de la velocidad de salida de datos del streaming. La aplicación de Amazon Kinesis seguirá intentándolo hasta lograr completar todas las solicitudes. Si se debe a un incremento sostenido de la velocidad de salida de datos del streaming, deberá aumentar la cantidad de particiones de su streaming de datos para ofrecer una capacidad suficiente que permita que todas las llamadas de lectura de datos se realicen correctamente. Tanto en un caso como en el otro, las métricas de Amazon CloudWatch permiten estar informado del cambio de la velocidad de salida de datos del streaming y de la aparición de las excepciones de ProvisionedThroughputExceeded.

Administración de streaming de datos de Kinesis

P: ¿Cómo modifico la capacidad de rendimiento de un streaming de datos de Amazon Kinesis?

Existen dos formas de cambiar la capacidad de rendimiento del streaming de datos. Puede usar la API UpdateShardCount o la consola de administración de AWS para ajustar la cantidad de particiones en un streaming de datos o cambiar la capacidad de rendimiento de un streaming de datos de Amazon Kinesis mediante el ajuste de la cantidad de particiones dentro del streaming de datos (modificación de particiones).

P: ¿Cuánto demora la modificación de la capacidad de rendimiento de un streaming de datos de Amazon Kinesis con UpdateShardCount o la consola de administración de AWS?

Las solicitudes de escalado típicas pueden tardar unos minutos en completarse. Las solicitudes de escalado más grandes llevan más tiempo que las más pequeñas.

P: ¿Qué limitaciones tiene una UpdateShardCount?

Para obtener información sobre las limitaciones de UpdateShardCount, consulte la referencia de API del servicio Amazon Kinesis Data Streams.

P: ¿Amazon Kinesis Data Streams sigue disponible cuando modifico la capacidad de rendimiento de un streaming de datos de Amazon Kinesis con UpdateShardCount o mediante la modificación de particiones?

Sí. Puede seguir agregando datos y leyendo datos del streaming de Amazon Kinesis mientras usa UpdateShardCount o realiza la operación de modificación de particiones para cambiar la capacidad de rendimiento del streaming de datos.

P: ¿Qué es la modificación de particiones?

La modificación de particiones es un proceso utilizado para ajustar un streaming de datos por medio de una serie de divisiones o fusiones de las particiones. En una división, un fragmento se separa en dos fragmentos y con ello se aumenta el nivel de procesamiento de la transmisión de datos. En una fusión, se combinan dos fragmentos para formar un único fragmento, lo que reduce el nivel de procesamiento de la transmisión de datos. Para obtener más información, consulte la sección Modificación de las particiones de un streaming de datos en la guía para desarrolladores de Amazon Kinesis Data Streams.

P: ¿Con qué frecuencia puedo cambiar la capacidad de rendimiento de un streaming de datos de Amazon Kinesis mediante la modificación de particiones? ¿Cuánto tiempo demora esta operación?

Una operación de cambio de fragmentos (una división o una fusión) tarda unos segundos en realizarse. Las operaciones de cambio de fragmentos tienen que realizarse de una en una. Por lo tanto, en un streaming de datos de Amazon Kinesis que tenga una única partición, la capacidad de rendimiento puede duplicarse en pocos segundos mediante la división de una partición. En un streaming de datos con 1000 particiones, la capacidad de rendimiento tarda 30 000 segundos (8,3 horas) en duplicarse mediante la división de 1000 particiones. Recomendamos aumentar la capacidad de rendimiento de los streamings de datos antes de que sea necesario el aumento.

P: ¿Cómo cambio el período de retención de datos de mi transmisión de datos de Amazon Kinesis?

De forma predeterminada, Amazon Kinesis almacena sus datos hasta 24 horas. Puede elevar el periodo de retención hasta los 7 días habilitando la retención de datos ampliada.

Para obtener más información sobre cómo cambiar el periodo de retención de datos, consulte Cambio del periodo de retención de datos.

P: ¿Cómo puedo monitorear las operaciones y el desempeño de mi transmisión de datos de Amazon Kinesis?

La consola de administración de Amazon Kinesis Data Streams incluye métricas clave sobre funcionamiento y rendimiento, como la capacidad de rendimiento de entrada y salida de datos de sus streamings de datos de Amazon Kinesis. Amazon Kinesis Data Streams también se integra con Amazon CloudWatch para que pueda recopilar, ver y analizar métricas de CloudWatch correspondientes a los streamings de datos y a las particiones de dichos streamings. Para obtener más información sobre las métricas de Amazon Kinesis Data Streams, consulte Monitorización de Amazon Kinesis Data Streams con Amazon CloudWatch.

Tenga en cuenta que todas las métricas a nivel del streaming son gratuitas. Todas las métricas a nivel de la partición habilitadas se cobran de acuerdo con los precios de Amazon CloudWatch.

P: ¿Cómo puedo administrar y controlar el acceso a un streaming de datos de Amazon Kinesis?

Amazon Kinesis Data Streams se integra con AWS Identity and Access Management (IAM), un servicio que permite controlar de forma segura el acceso de los usuarios a sus recursos y servicios de AWS. Por ejemplo, puede crear una política que permita únicamente a un usuario o a un grupo específico añadir datos a su transmisión de datos de Amazon Kinesis. Para obtener más información sobre cómo administrar y controlar el acceso a su transmisión de datos, consulte Control del acceso a los recursos de Amazon Kinesis Data Streams por medio de IAM.

P: ¿Cómo puedo registrar las llamadas a la API que se realizan a un streaming de datos de Amazon Kinesis para el análisis de seguridad y la solución de problemas operativos?

Amazon Kinesis se integra con Amazon CloudTrail, un servicio que registra las llamadas a la API de AWS de su cuenta y le entrega logs. Para obtener más información sobre los logs de llamadas al API y una lista de las operaciones del API de Amazon Kinesis soportadas, consulte Registro de las llamadas al API de Amazon Kinesis por medio de Amazon CloudTrail.

P: ¿Cómo puedo administrar de manera eficaz las transmisiones de datos de Amazon Kinesis y los costos asociados con ellas?

Amazon Kinesis Data Streams permite etiquetar las transmisiones de datos de Amazon Kinesis para facilitar la administración de recursos y costos. Una etiqueta es un par clave-valor definido por el usuario que ayuda a organizar los recursos de AWS. Por ejemplo, puede etiquetar las transmisiones de datos por centros de costos para clasificar en categorías y seguir los costos de Amazon Kinesis Data Streams de cada centro de costos. Para obtener más información sobre el etiquetado en Amazon Kinesis Data Streams, consulte Etiquetado de transmisiones en Amazon Kinesis Data Streams.

P: ¿Cómo puedo describir la utilización de mi límite de fragmentos?

Puede comprender cómo usa su límite de fragmentos de una cuenta por medio de la API DescribeLimits. Esta mostrará el límite de fragmentos y el número de fragmentos abiertos en su cuenta. Si necesita aumentar su límite de fragmentos, solicite un aumento del límite.

Seguridad

P: ¿Hasta qué punto están protegidos los datos al usar Kinesis Data Streams?

Kinesis es seguro por defecto. Solo los propietarios de la cuenta y del streaming de datos disponen de acceso a los recursos de Kinesis que crean. Kinesis admite la autenticación de usuario para controlar el acceso a los datos. Puede usar políticas de AWS IAM para otorgar permisos selectivos a usuarios y grupos de usuarios. Puede colocar sus datos en Kinesis u obtenerlos de este a través de extremos SSL con el protocolo HTTPS. Si necesita seguridad adicional, puede usar el cifrado desde el servidor con claves maestras de AWS KMS para cifrar los datos almacenados en su streaming. AWS KMS le permite usar claves maestras de KMS generadas por AWS para el cifrado o, si lo prefiere, puede llevar su propia clave maestra a AWS KMS. Por último, puede usar sus propias bibliotecas de cifrado para cifrar los datos en el lado del cliente antes de colocarlos en Kinesis.

P: ¿Puedo obtener acceso de manera privada a las API de Kinesis Data Streams desde mi Amazon Virtual Private Cloud (VPC) sin usar IP públicas?

Sí, puede obtener acceso de manera privada a las API de Kinesis Data Streams desde su Amazon Virtual Private Cloud (VPC) mediante la creación de puntos de conexión de VPC. Con los puntos de conexión de VPC, el enrutamiento entre la VPC y Kinesis Data Streams se controla mediante la red de AWS sin la necesidad de utilizar una gateway de Internet, una gateway de NAT ni una conexión de VPN. La última generación de puntos de conexión de VPC que usa Kinesis Data Streams cuenta con la tecnología de AWS PrivateLink, un recurso que habilita la conectividad privada entre los servicios de AWS mediante el uso de interfaces de red elástica (ENI) con IP privadas en sus VPC. Para obtener más información sobre PrivateLink, visite la documentación de PrivateLink.

Cifrado

P: ¿Puedo cifrar los datos que coloque en un steaming de Kinesis?

Sí. Hay dos opciones para cifrar los datos que coloque en una transmisión de datos de Kinesis. Puede usar el cifrado del lado del servidor, que es una característica completamente administrada que cifra y descifra datos automáticamente a medida que los coloca en una transmisión o los recibe de ella. O puede escribir datos cifrados en un streaming cifrándolos y descifrándolos en el cliente.

P: ¿Por qué debería usar el cifrado del lado del servidor en lugar del lado del cliente?

Con frecuencia, los clientes eligen el cifrado del lado del servidor en lugar del lado del cliente por uno de las siguientes motivos:

  • Resulta difícil efectuar el cifrado del lado del cliente.
  • Quieren una segunda capa de seguridad además del cifrado del lado del cliente.
  • Resulta difícil implementar esquemas de administración de claves del lado del cliente.

P: ¿Qué es el cifrado del lado del servidor?

El cifrado desde el servidor para Kinesis Data Streams cifra los datos automáticamente con una clave maestra de AWS KMS (CMK) que especifica el usuario antes de escribirlos en la capa de almacenamiento del streaming de datos y los descifra una vez recuperados del almacenamiento. El cifrado imposibilita la sobreescritura de datos y la lectura de la clave de la partición y de la carga, a menos que el usuario que esté escribiendo o leyendo el streaming de datos tenga permiso para usar la clave seleccionada para el cifrado del streaming. Por lo tanto, el cifrado del lado del servidor puede simplificar el cumplimiento de requisitos de seguridad y conformidad internos que gobiernan los datos.

Con el cifrado del lado del servidor, las aplicaciones del lado del cliente (productores y consumidores) no tienen que ocuparse del cifrado, administrar operaciones de CMK o criptográficas, y sus datos están cifrados cuando están en reposo o en movimiento gracias al servicio Kinesis Data Streams. AWS KMS proporciona todas las CMK utilizadas por la característica de cifrado del lado del servidor. AWS KMS hace que resulte sencillo usar una CMK administrada por AWS para Kinesis (método de cifrado de “un clic”), su propia CMK generada por AWS KMS o una CMK que importe para el cifrado.

P: ¿Existe alguna guía sobre cómo comenzar con el cifrado del lado del servidor?

Sí, puede encontrar una guía de inicio en la documentación del usuario.

P: ¿El cifrado del lado del servidor interfiere con el modo en que mis aplicaciones interactúan con Kinesis Data Streams?

Es posible. Depende de la clave que utilice para el cifrado y los permisos que gobiernen el acceso a la clave.

  • Si usa la CMK administrada por AWS para Kinesis (alias de clave = aws/kinesis), sus aplicaciones no se verán afectadas por la habilitación o deshabilitación del cifrado con esta clave.
  • Si usa una clave maestra diferente, como una clave maestra de AWS KMS personalizada o una que haya importado al servicio AWS KMS, y si los generadores y consumidores de un streaming de datos no tienen permiso para usar la CMK de AWS KMS que se utiliza para el cifrado, sus solicitudes PUT y GET no se concretarán. Para poder usar el cifrado del lado del servidor, primero debe configurar las políticas de claves de AWS KMS para permitir el cifrado y descifrado de mensajes. Para ver ejemplos y obtener más información sobre los permisos de AWS KMS, consulte AWS KMS API Permissions: Actions and Resources Reference en la Guía para desarrolladores de AWS Key Management Service o las orientaciones sobre permisos en la documentación del usuario sobre el cifrado del lado del servidor de Kinesis Data Streams.

P: Conlleva el uso del cifrado del lado del servidor algún costo adicional?

Sí. Sin embargo, si utiliza la CMK administrada por AWS para Kinesis y no excede el costo de uso de la capa gratuita de las API de KMS, su uso del cifrado del lado del servidor será gratuito. A continuación se describen los costos por recurso:

Claves:

  • La CMK administrada por AWS para Kinesis (alias = “aws/kinesis”) es gratuita.
  • Las claves de KMS generadas por el usuario están sujetas a los costos por clave de KMS. Más información.

Uso de las API de KMS:

  • Los costos de las API para cada CMK, incluidas las personalizadas. Kinesis Data Streams llama a KMS aproximadamente cada 5 minutos cuando está rotando la clave de datos. En un mes de 30 días, el costo total de llamadas a la API de KMS que inicia un streaming de datos de Kinesis debería ser menos de unos pocos dólares. Recuerde que este costo aumenta con la cantidad de credenciales de usuarios que use en sus productores de datos y consumidores porque cada credencial de usuario requiere una llamada al API única para KMS de AWS. Cuando use el rol IAM para la autenticación, cada llamada por rol resultará en credenciales de usuario únicas y quizás quiera guardar en la caché las credenciales de usuario devueltas en la llamada por rol para ahorrar costos de KMS.

P: ¿Qué regiones de AWS ofrecen cifrado del lado del servidor para Kinesis Data Streams?

El cifrado del lado del servidor para Kinesis Data Streams está disponible en la región AWS GovCloud y en todas las regiones públicas, excepto la región de China (Pekín).

P: ¿Cómo puedo iniciar, actualizar o eliminar el cifrado del lado del servidor en una transmisión de datos?

Todas estas operaciones se pueden completar mediante la consola de administración de AWS o el SDK de AWS. Para obtener más información, consulte la guía de introducción al cifrado del lado del servidor de Kinesis Data Streams.

P: ¿Qué algoritmo de cifrado se utiliza para el cifrado del lado del servidor?

Kinesis Data Streams usa un algoritmo AES-GCM 256 para el cifrado.

P: Si cifro un streaming que ya tiene datos escritos, en texto sin formato o cifrado, ¿se cifrarán o descifrarán todos los datos del streaming si actualizo el cifrado?

No, la nueva aplicación de cifrado solo cifrará los nuevos datos escritos en el streaming (o los que están sin cifrar).

P: ¿Qué cifra el cifrado del lado del servidor para Kinesis Data Streams?

El cifrado desde el servidor codifica la carga del mensaje y la clave de la partición, las cuales son especificadas por las aplicaciones del generador del streaming de datos.

P: ¿Es el cifrado del lado del servidor una característica específica de un fragmento o transmisión?

El cifrado del lado del servidor es una característica específica de una transmisión.

P: ¿Puedo cambiar la CMK utilizada para cifrar una transmisión de datos específica?

Sí, con la consola de administración de AWS o el SDK de AWS puede elegir aplicar una nueva clave maestra a una transmisión de datos específica.

P: ¿Puedo recibir instrucciones acerca del ciclo de vida de mis datos desde el momento en que los envío a un streaming de datos de Kinesis con el cifrado habilitado desde el servidor, incluso cuando los recupero?

A continuación, encontrará instrucciones sobre cómo Kinesis Data Streams utiliza CMK de AWS KMS para cifrar un mensaje antes de almacenarlo en la ruta PUT y para descifrarlo después de recuperarlo en la ruta GET. Kinesis y AWS KMS realizan las siguientes acciones (incluido descifrar) cuando usa putRecord(s) o getRecords en un streaming de datos con el cifrado habilitado desde el servidor.

  1. Se envían datos de la aplicación de productor de Kinesis del cliente (cliente) a Kinesis usando SSL a través de HTTPS.
  2. Kinesis recibe los datos, se almacenan en RAM y se aplica el cifrado a la clave de partición y carga de un registro.
  3. Kinesis solicita un material de clave de entrada de texto sin formato (IKM) y se cifra una copia del IKM usando la clave maestra de KMS que ha seleccionado el cliente.
  4. AWS KMS crea un IKM, lo cifra usando la clave maestra y envía el IKM del texto sin formato y el IKM cifrado a Kinesis.
  5. Kinesis usa el IKM del texto sin formato para derivar claves de datos únicas por registro.
  6. Kinesis cifra la clave de partición y carga con las claves de datos y elimina el texto sin formato de la memoria
  7. Kinesis adjunta el IKM cifrado a los datos cifrados.
  8. El IKM del texto sin formato se almacena en la memoria caché para poder volver a usarlo hasta que expira a los 5 minutos.
  9. Kinesis entrega el mensaje cifrado a un almacén de backend donde se almacena en reposo y es recuperable mediante una llamada getRecords.

Kinesis y AWS KMS realizan las siguientes acciones (incluido descifrar) cuando efectúa una llamada getRecords.

  1. Cuando se efectúa una llamada getRecords, el frontend de Kinesis recupera el registro cifrado del servicio de backend.
  2. Kinesis realiza una solicitud a KMS usando un token generado por la solicitud del cliente. AWS KMS lo autoriza.
  3. Kinesis descifra el IKM cifrado almacenado con el registro.
  4. Kinesis recrea las claves de datos por registro del IKM descifrado.
  5. Si tiene permiso, Kinesis descifra la carga y elimina la clave de datos del texto sin formato de la memoria.
  6. Kinesis entrega la carga usando SSL a través de HTTPS al consumidor de Kinesis (cliente) solicitando los registros.

Precios y facturación

P: ¿Amazon Kinesis Data Streams está disponible dentro de la capa gratuita de AWS?

No. En la actualidad, Amazon Kinesis Data Streams no está disponible dentro de la capa gratuita de AWS. La capa gratuita de AWS es un programa que ofrece pruebas gratuitas de varios servicios de AWS. Para obtener más detalles sobre la capa gratuita de AWS, consulte Capa gratuita de AWS.

P: ¿Cuánto cuesta Amazon Kinesis Data Streams?

Amazon Kinesis Data Streams aplica un modelo sencillo de precios por uso. No requiere costos iniciales ni cuotas mínimas y solo tendrá que pagar por los recursos que consuma. El costo de Amazon Kinesis Data Streams tiene dos partes principales y tres opcionales:

  • Costo de las particiones por hora, determinado por la cantidad de fragmentos incluidos en el streaming de datos de Amazon Kinesis.
  • Costo por unidad de carga PUT, determinado por el número de unidades de carga de 25 KB que los generadores de datos incluyen en el streaming de datos.

Opcional:

  • La retención de datos ampliada es un costo opcional determinado por la cantidad de horas de partición en que incurre el streaming de datos. Cuando la retención de datos ampliada está habilitada, paga la proporción de retención ampliada para cada partición en su streaming.
  • La distribución ramificada mejorada es un costo opcional con dos partes de costo: horas consumidor-partición y de recuperación de datos. Las horas consumidor-partición reflejan la cantidad de particiones en un streaming mulplicadas por la cantidad de consumidores que utilizan una distribución ramificada mejorada. Las recuperaciones de datos se determinan por la cantidad de GB entregados a los consumidores que usan una distribución ramificada mejorada. 

Para obtener más información sobre los costos de Amazon Kinesis Data Streams, consulte Precios de Amazon Kinesis Data Streams.

P: ¿Cambia el costo de mi unidad de carga PUT si utilizo una operación PutRecords en lugar de PutRecord?

El costo de la unidad de carga PUT se calcula a partir del número de unidades de carga de 25 KB incluidas en el streaming de datos de Amazon Kinesis. El costo de la unidad de carga PUT es idéntico independientemente de si se utiliza una operación PutRecords o PutRecord.

P: ¿Se me cobran los fragmentos con estado "CERRADO"?

Un fragmento puede tener estado "CERRADO" después de un cambio de fragmentos. Los fragmentos con estado "CERRADO" no se le cobrarán.

P: Aparte de los costos de Amazon Kinesis Data Streams, ¿existen otros costos que podrían surgir del uso que haga de este servicio?

Si utiliza Amazon EC2 para ejecutar aplicaciones de Amazon Kinesis, se le cobrarán los recursos de Amazon EC2 además de los costos de Amazon Kinesis Data Streams.

La biblioteca de clientes de Amazon Kinesis (KCL) utiliza tablas de Amazon DynamoDB para realizar el seguimiento de la información de estado del procesamiento del registro. Si utiliza la KCL para sus aplicaciones de Amazon Kinesis, se le cobrarán los recursos de Amazon DynamoDB, además de los costos de Amazon Kinesis Data Streams.

Si habilita las métricas mejoradas a nivel de la partición, se le cobrará el costo de Amazon CloudWatch asociado con las métricas habilitadas a nivel de la partición, así como los costos de Amazon Kinesis Data Streams.

Tenga en cuenta que si bien los tres ejemplos anteriores son frecuentes, existen muchos otros casos de uso.

Más información sobre los precios de Amazon Kinesis Data Streams

Visite la página de precios
¿Listo para comenzar?
Inscribirse
¿Tiene más preguntas?
Contacte con nosotros