Automatiza con confianza la creación de Kinesis Data Streams usando AWS CloudFormation e infraestructura como código: plantillas en YAML, parámetros reutilizables y nested stacks que facilitan versionado, control por ambiente y despliegues repetibles en minutos.
¿Qué es CloudFormation y por qué automatiza Kinesis?
CloudFormation gestiona recursos de AWS como código mediante templates en YAML o JSON. Aquí se usa para crear un Kinesis Data Stream de forma totalmente automatizada, evitando la configuración manual y habilitando buenas prácticas de DevOps.
Infraestructura como código: plantillas versionables y reutilizables.
Parámetros: definen valores dinámicos como environment y número de shards.
Ambientes: posibilidad de condicionar despliegues por entorno: staging, preproducción o cuentas distintas.
Composición: una plantilla master invoca otra por URL como nested stack.
Outputs: exportan datos del stream para consumo por otros stacks.
Tags: etiquetan recursos con el environment para trazabilidad.
¿Qué parámetros controlan el despliegue?
environment: nombre del ambiente a incorporar en nombres y tags.
Kinesis Shards Number: cantidad de shards; por defecto 1, configurable antes de crear.
¿Cómo se estructuran las plantillas master y Kinesis Distribution?
La plantilla master recibe parámetros (environment y shards) y llama por URL a una segunda plantilla que define el Kinesis. Esa segunda plantilla crea el stream, aplica retención de 24 horas, toma el número de shards de la master y etiqueta con el environment. Además, publica outputs para integraciones futuras, por ejemplo una función Lambda que consuma el stream.
¿Cómo luce la plantilla master en YAML?
AWSTemplateFormatVersion:'2010-09-09'Description:'Master para Kinesis Data Stream.'Parameters:Environment:Type: String
KinesisShardsNumber:Type: Number
Default:1Resources:KinesisStream:Type: AWS::CloudFormation::Stack
Properties:# URL del archivo Kinesis Distribution en S3.TemplateURL: https://s3.amazonaws.com/<bucket>/<carpeta>/KinesisDistribution.yaml
Parameters:Environment:!Ref Environment
KinesisShardsNumber:!Ref KinesisShardsNumber
¿Cómo define Kinesis la plantilla Kinesis Distribution?
AWSTemplateFormatVersion:'2010-09-09'Description:'Kinesis Distribution: define Kinesis Data Stream.'Parameters:Environment:Type: String
KinesisShardsNumber:Type: Number
Resources:KinesisRT:Type: AWS::Kinesis::Stream
Properties:Name:!Sub'${Environment}-Kinesis-RT'RetentionPeriodHours:24ShardCount:!Ref KinesisShardsNumber
Tags:-Key: Environment
Value:!Ref Environment
Outputs:KinesisStreamName:Description:'Nombre del Kinesis Data Stream.'Value:!Ref KinesisRT
Export:Name:!Sub'${Environment}-Kinesis-RT-Name'
Nombre del recurso: incluye el environment y el sufijo Kinesis RT para identificar que es de real time.
Retención: 24 horas definida en código.
Shards: toma el valor de la master.
Outputs: listos para que otros stacks (por ejemplo, Lambda) lean el nombre del stream.
¿Cómo se despliega con S3 y CloudFormation y cómo se reutiliza?
El flujo operativo conecta S3 con CloudFormation para referenciar plantillas por URL y crear el stack con parámetros. Luego, confirma en Kinesis que el stream quedó activo con la configuración deseada.
Crear un bucket S3 para plantillas: por ejemplo, CFN Kinesis Lab.
Cargar master y Kinesis Distribution al bucket.
Copiar la URL de la master desde S3.
En CloudFormation: crear stack desde URL, nombrarlo (ej.: Kinesis Lab Platzi), elegir environment (ej.: staging) y definir 5 shards.
Avanzar sin opciones extra y presionar crear.
Monitorear el estado: creación en proceso hasta ver create complete.
Verificar en Kinesis: nombre con estructura basada en environment, 5 shards y retención de 24 horas en estado activo.
¿Cómo escalar reutilización y control por código?
Nested stacks: segmentar una gran plantilla en bloques reutilizables.
Repositorios: guardar templates en GitHub, BitBucket o CodeCommit.
Automatización: orquestar con CodePipeline y CodeBuild para empaquetar y desplegar en CloudFormation.
Portabilidad: replicar la arquitectura en otra región o cuenta desplegando las mismas plantillas.
¿Te gustaría que agreguemos validaciones de parámetros o ejemplos de integración con Lambda a partir de los outputs? Comparte tus dudas y experiencia en comentarios.
Tengan mucho cuidado con el presupuesto y especialmente con servicios como Glue, Kinesis y Managed Streaming for Apache Kafka. Yo estuve activa en la plataforma por 14 días mientras desarrollaba las actividades del curso y, al finalizar el mes, me generaron una factura por 785 dólares, por lo que me tocó abrir una disputa en AWS.
La forma de creacion de recursos es muy util ya que se puede hacer como codigo. usando GIthub.
versionado, controlado, aprobado, plantillas bien reutilizable segmentado en multiples plantillas.(nested stacks
Para evitar este tipo de cosas es importante poner alarmas, tu puedes poner un tope maximo y cuando el se pasa el te genere una alarma.
Comparto repositorio en Git con stacks de clodformation para desplegar servicios API Gateway, Lambda Function y DynamoDB con infraestructura como código.
Les recomiendo Former2, es una plataforma en la web que se conecta a tu consola por medio de key/secret y lo que hiciste de forma manual desde la consola web de AWS, te lo puede mapear en una plantilla de cloudformation sin necesidad de explorar tanto la documentación de cada uno de los recursos. Entonces te aseguras que lo que hiciste de forma manual ya te funciona, y ya lo pasas a CloudFormation para manejarlo de esa forma en el futuro.
Se puse usar terraform para hacer algo parecido a cloudformation. Al menos yo lo hice con dynamoDB.
¡Simplemente del carajo esta clase.! Refuerza los conceptos y elementos claves del curso de AWS de Infraestructura como Código.
Sigue el curso de Infraestructura como código y practica mucho amigo.!!!
Muy buena clase, enlaza con el curso anterior de Infraestructura como codigo
copiar la route que sale despues de subir los docs en el S3> URL del objeto. y esa es la que vamos a usar para el cloudformation
Hola John. Me podrías colaborar cómo tomas los cursos. Solo vas con uno o varios a la vez. Gracias.
outputs: son utiles por que son exportados a una parte de cloudformation, nos sirve para reutilizar a futuro la conexion de ese kinesis. usando los outputs del kinesis y la adaptas para tu nuevo template
importante
KinesisShardNumber:
Description: "Select the number of shards"
Type:Number
Default: 1
Me salio este error, ayuda:
There was an error creating this change set
The following resources to import [KinesisStream] must have DeletionPolicy attribute specified in the template
Que clase! Excelente recordatorio de lo visto en el curso de Cloudformation :)
Muy bien
Kinesis video stream
AWS resource that ingests, durably stores, encrypts, and indexes video streams for real-time and batch analytics.
Video analytics
Analyze video feeds stored on AWS using machine learning algorithms
Facial recognition analytics
Conduct facial analysis on live feeds by creating a serverless video analytics environment.
buena explicación
ok. muy claro, gracias
Podemos crear nuestro kinesis como código que despliega los recursos que necesitamos
Hola tuve el siguente resultado
<code>ROLLBACK_IN_PROGRESSThe following resource(s) failed to create:[KinesisStream]..Rollback requested by user.2019-07-1711:23:42UTC-0400KinesisStreamCREATE_FAILEDS3error:AccessDeniedFor more information check http://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html
Hola Pablo, tienes acceso de lectura sobre el bucket donde subiste los archivos??
cambia la ruta del archivo del master.yml por la ruta en que realmetne tienes almacenado el archivo kinesis-distribution.yml, la ruta a mi tambien me parecia presentar problemas, cambie eso en el master.yml y volvi a subir el archivo al bucket y todo solucionado
La forma de creacion de recursos es muy util ya que se puede hacer como codigo. usando GIthub.
versionado, controlado, aprobado, plantillas bien reutilizable segmentado en multiples plantillas.(nested stacks)
lo mejor es que se puede hacer deployment con las plantillas que se usaron en cloudformation