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 la transmisión.

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 logs 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 una transmisión 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 una transmisión 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 de transmisiones de datos de Amazon Kinesis en tiempo real. Por ejemplo, su Aplicación de Amazon Kinesis puede utilizar las métricas y los informes para los logs 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 a la transmisión 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 transmisiones complejas: puede crear gráficos acíclicos dirigidos (DAG) a partir de aplicaciones de Amazon Kinesis y transmisiones 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 inscriba en Amazon Web Services, puede comenzar a utilizar Amazon Kinesis Data Streams de las siguientes maneras:

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

El procesamiento de una transmisión de datos de Amazon Kinesis está diseñado para escalarse sin límites mediante el aumento del número de fragmentos de una transmisión 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 una transmisión hasta 24 horas desde el momento en que se añaden a la transmisión. 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 fragmento admite hasta 1 000 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 una misma transmisión 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, 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 de la misma transmisión 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.


P: ¿Qué es un fragmento?

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 una transmisión con dos fragmentos. Esta transmisión de datos tiene un procesamiento de entrada de datos de 2 MB/s y de salida de datos de 4 MB/s y admite hasta 2 000 registros PUT por segundo. Puede monitorear las métricas a nivel de fragmento en Amazon Kinesis Data Streams y añadir o eliminar fragmentos de su transmisión de datos de manera dinámica a medida que cambie el procesamiento de los datos mediante la modificación de fragmentos de la transmisión de datos.

P: ¿Qué es un registro?

Un registro es la unidad de datos que se almacena en una transmisión 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 fragmentos de una transmisión de datos. El generador de datos especifica la clave de partición en el momento de agregar datos a una transmisión de datos de Amazon Kinesis. Por ejemplo, supongamos que tiene una transmisión de datos con dos fragmentos (fragmento 1 y fragmento 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 el fragmento 1 y todos los registros con clave B se incluyan en el fragmento 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 una transmisión 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.


P: ¿Cómo puedo crear una transmisión de datos de Amazon Kinesis?

Cuando se inscribe en Amazon Web Services, puede crear una transmisión de datos de Amazon Kinesis a partir de la consola de administración de Amazon Kinesis, o bien mediante una operación CreateStream.

P: ¿Cómo determino el nivel de procesamiento de una transmisión de datos de Amazon Kinesis?

El número de fragmentos de una transmisión de datos determina el nivel de procesamiento de una transmisión de datos de Amazon Kinesis. Siga los pasos indicados a continuación para realizar un cálculo aproximado del número inicial de fragmentos que necesita su transmisión de datos. Observe cómo puede ajustar de manera dinámica el número de fragmentos incluidos en su transmisión de datos mediante la modificación de fragmentos.

  1. Calcule el tamaño promedio del registro escrito en la transmisión de datos en kilobytes (KB), y redondee al KB más cercano. (tamaño_de_datos_promedio_en_KB)
  2. Calcule el número de registros escritos en la transmisión de datos por segundo. (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 de la transmisión 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 el número inicial de fragmentos (número_de_fragmentos) que necesita su transmisión de datos con la siguiente fórmula:

número_de_fragmentos = máx (ancho_de_banda_entrante_para_escritura_en_KB/1 000, ancho_de_banda_saliente_para_lectura_en_KB/2 000)

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

El nivel de procesamiento de una transmisión de datos de Amazon Kinesis se ajusta por unidad de fragmento. 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?

El nivel de procesamiento de una transmisión de datos de Amazon Kinesis se concibe para ajustarse a medida sin ningún tipo de límite. De forma predeterminada, una cuenta aprovisiona 10 fragmentos por región. Con el formulario Límites de Amazon Kinesis Data Streams, puede solicitar más de 10 fragmentos en una misma región.

P: ¿Cómo repercute el tamaño del registro en el nivel de procesamiento de una transmisión de datos de Amazon Kinesis?

Un fragmento ofrece una velocidad de entrada de datos de 1 MB/s y soporta hasta 1 000 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 un fragmento será inferior a 1 MB/s, y se verá limitada por el número máximo de registros PUT por segundo.


P: ¿Cómo agrego datos a una transmisión de datos de Amazon Kinesis?

Puede añadir datos a una transmisión de datos de Amazon Kinesis a través de 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 adaptarla 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 una transmisión de datos de Amazon Kinesis mientras el generador de datos agrega datos a dicha transmisión?

El límite de capacidad de una transmisión de datos de Amazon Kinesis lo determina su número de fragmentos. 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 de la transmisión 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 de la transmisión de datos, deberá incrementar el número de fragmentos de su transmisión 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 de la transmisión de datos y la generación de excepciones ProvisionedThroughputExceeded.

P: ¿Qué datos se tendrán en cuenta para calcular el nivel de procesamiento de los datos de una transmisión de datos de Amazon Kinesis durante una llamada PutRecord o PutRecords?

El blob de datos, la clave de partición y el nombre de la transmisión 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á en cuenta para calcular el nivel de procesamiento de datos de su transmisión de datos de Amazon Kinesis, que se determina según el número de fragmentos que componen la transmisión de datos.


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 una transmisión de datos de Amazon Kinesis. Puede crear aplicaciones con el 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 una transmisión de datos de Amazon Kinesis. La KCL se encarga de administrar las cuestiones complejas, como la adaptación a los cambios de volumen de la transmisión 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.

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 de la transmisión de datos 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, fiable, de registro, almacenamiento y reproducción de transmisiones.

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 procede, ya que realiza las tareas pesadas asociadas al procesamiento de transmisiones distribuidas y, de este modo, aumenta la productividad del 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 un fragmento de una transmisión 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 un fragmento y procesa los registros de dicho fragmento.

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 de la transmisión 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 de la transmisión 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 cambios de fragmentos 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 trabajan de forma conjunta en la misma transmisión 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 una transmisión de datos de Amazon Kinesis?

Un posible motivo es que no haya un registro en la posición indicada por el iterador de fragmento vigente. Esto puede suceder incluso aunque se utilice el tipo de iterador de fragmento TRIM_HORIZON. Una transmisión de datos de Amazon Kinesis representa una transmisión continua de datos. Debe realizar una llamada a la operación GetRecords en un bucle y se devolverá el registro cuando el iterador de fragmento 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 un fragmento o de una transmisión de datos podrían tener marcas de tiempo desordenadas.

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

El límite de capacidad de una transmisión de datos de Amazon Kinesis lo determina su número de fragmentos. 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 de la transmisión de datos. 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 de la transmisión, deberá aumentar el número de fragmentos de su transmisión 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 de la transmisión y de la aparición de las excepciones ProvisionedThroughputExceeded.


P: ¿Cómo modifico el nivel de procesamiento de una transmisión de datos de Amazon Kinesis?

Existen dos formas de cambiar el nivel de procesamiento de la transmisión de datos. Puede usar la API UpdateShardCount o la consola de administración de AWS para ajustar el número de fragmentos en una transmisión de datos o cambiar el nivel de procesamiento de una transmisión de datos de Amazon Kinesis mediante el ajuste del número de fragmentos dentro de la transmisión de datos (modificación de fragmentos).

P: ¿Cuánto demora la modificación del nivel de procesamiento de una transmisión 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 permanece disponible cuando modifico el nivel de procesamiento de una transmisión de datos de Amazon Kinesis con UpdateShardCount o mediante la modificación de fragmentos?

Sí. Puede seguir agregando datos y leyendo datos de la transmisión de datos de Amazon Kinesis mientras usa UpdateShardCount o realiza la operación de modificación de fragmentos para cambiar el nivel de procesamiento de la transmisión de datos.

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

La modificación de fragmentos es un proceso utilizado para ajustar una transmisión de datos por medio de una serie de divisiones o fusiones de fragmentos. 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 los fragmentos de una transmisión de datos en la guía para desarrolladores de Amazon Kinesis Data Streams.

P: ¿Con qué frecuencia puedo cambiar el nivel de procesamiento de una transmisión de datos de Amazon Kinesis mediante la modificación de fragmentos? ¿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 una transmisión de datos de Amazon Kinesis que tenga un único fragmento, el nivel de procesamiento puede duplicarse en pocos segundos mediante la división de un fragmento. En una transmisión de datos con 1 000 fragmentos, el nivel de procesamiento tarda 30 000 segundos (8,3 horas) en duplicarse mediante la división de 1 000 fragmentos. Recomendamos aumentar el nivel de procesamiento de las transmisiones de datos antes de necesitarlo.

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 desempeño, como el nivel de procesamiento de entrada y salida de datos de sus transmisiones de datos de Amazon Kinesis. Amazon Kinesis Data Streams también se integra con Amazon CloudWatch para recopilar, ver y analizar métricas de CloudWatch correspondientes a las transmisiones de datos y a los fragmentos de dichas transmisiones. 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 de transmisión son gratuitas. Todas las métricas a nivel de fragmento habilitadas se cobran de acuerdo con los precios de Amazon CloudWatch.

P: ¿Cómo puedo administrar y controlar el acceso a una transmisión 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 productos 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 una transmisión de datos 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.


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 de la transmisión 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 del lado del servidor con claves maestras de AWS KMS para cifrar los datos almacenados en su transmisión de datos. 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 acerca de PrivateLink, consulte la documentación de PrivateLink.  


P: ¿Puedo cifrar los datos que coloque en una transmisión de datos 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 una transmisión cifrándolos y descifrándolos en el lado del 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 del lado del servidor para Kinesis Data Streams cifra los datos automáticamente con una clave maestra de AWS KMS (CMK) especificada por el usuario antes de escribirlos en la capa de almacenamiento de la transmisión de datos y los descifra una vez recuperados del almacenamiento. El cifrado imposibilita la sobrescritura de datos y la lectura de la clave de partición y la carga a menos que el usuario que esté escribiendo o leyendo en la transmisión de datos tenga permiso para usar la clave seleccionada para el cifrado de la transmisión. 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 sus productores y consumidores de una transmisión de datos no tienen permiso para usar la CMK de AWS KMS utilizada 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 una transmisión 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 una transmisión de datos que ya tiene datos escritos, en texto sin formato o cifrado, ¿se cifrarán o descifrarán todos los datos de la transmisión si actualizo el cifrado?

No, la nueva aplicación del cifrado solo cifrará los nuevos datos escritos en la transmisión (o los dejados sin cifrar).

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

El cifrado del lado del servidor cifra la carga del mensaje y la clave de partición, que las aplicaciones del productor de la transmisión de datos especifican.

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 una transmisión de datos de Kinesis con el cifrado del lado del servidor habilitado hasta 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 una transmisión de datos con el cifrado del lado del servidor habilitado.

  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.

 


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 se aplican costos iniciales ni tarifas mínimas y solo tendrá que pagar por los recursos que consuma. El costo de Amazon Kinesis Data Streams tiene dos partes principales y una opcional:

  • Costo de los fragmentos por hora, determinado por el número de fragmentos incluidos en la transmisión 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 la transmisión de datos.
  • Costo optativo de la retención de datos ampliada, que se determina en función de las horas de fragmento utilizadas por la transmisión de datos. 

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 la transmisión 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 derivarse del uso que haga de Amazon Kinesis Data Streams?

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 una tabla 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 a nivel de fragmento mejoradas, se le cobrará el costo de Amazon CloudWatch asociado con las métricas a nivel de fragmento habilitadas, 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.