Despliegue automatizado de Kinesis con CloudFormation
Clase 16 de 52 • Curso de Big Data en AWS
Contenido del curso
Arquitecturas
Extracción de información
- 9

Cómo mover datos a cloud con SDK y CLI
02:21 min - 10

Python y boto3 para listar buckets S3
10:16 min - 11

Boto3: inicializar clients de AWS en Python
03:56 min - 12

API Gateway como puerta de big data
03:40 min - 13

Storage Gateway: puerta entre on-premise y S3
03:13 min - 14

AWS Kinesis: streaming masivo de datos
05:53 min - 15

Cómo crear Kinesis Data Stream en AWS
06:50 min - 16

Despliegue automatizado de Kinesis con CloudFormation
Viendo ahora - 17

Cómo Kinesis Firehose entrega datos en tiempo real
03:27 min - 18

Configuración de Kinesis Firehose en AWS
05:45 min - 19
Configuración Básica de Amazon Kinesis Firehose en AWS
02:53 min - 20

MSK vs Kinesis: cuál elegir en AWS
03:42 min - 21

Creación de clúster AWS MSK desde la consola
07:21 min
Transformación de Información
- 22

Cómo AWS Glue transforma datos en la nube
06:33 min - 23

Instalación de Apache Zeppelin paso a paso
04:49 min - 24

Configurar developer endpoint de AWS Glue con Zeppelin
05:38 min - 25

Conexión de Apache Zeppelin con AWS
08:29 min - 26

Configurar AWS Glue Crawler para poblar catálogo
08:15 min - 27

Configuración de Developer Endpoint en AWS Glue
08:00 min - 28

Cómo configurar AWS Glue ETL desde S3 a Parquet
10:23 min - 29

Qué es EMR y cuándo usarlo
05:30 min - 30

Crear tu primer cluster de AWS EMR
09:01 min - 31

Conectar Apache Zeppelin a EMR
03:18 min - 32

EMR automatizado con CloudFormation
06:32 min - 33

AWS Lambda para proyectos de big data
07:02 min - 34

Lambdas en big data: real time y batch
04:54 min - 35

Configuración de AWS Lambda para Big Data
07:16 min
Carga de Información
Consumo de información
Seguridad, Orquestación y Automatización
Clase pública
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: 1 Resources: 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: 24 ShardCount: !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.