El temario oficial de AWS Certified Data Engineer - Associate, organizado por dominio. Marca cada punto según lo vayas repasando.
Inicia sesión para guardar tu progreso entre sesiones.
Perform data ingestion
Amazon Redshift puede leer directamente de Kinesis Data Streams o Amazon MSK hacia una vista materializada, sin pasar por S3, y AUTO REFRESH la mantiene al día. DynamoDB Streams guarda los cambios 24 horas; Kinesis Data Streams para DynamoDB permite más retención y varios consumidores. AWS Glue ofrece trabajos de ETL de streaming continuos sobre Kinesis, Kafka y MSK.
Streaming ingestion to a materialized view - Amazon Redshift ↗Streaming ETL jobs in AWS Glue ↗
S3DistCp copia de forma distribuida datos de Amazon S3 a HDFS en Amazon EMR y puede concatenar archivos pequeños con --groupBy. AWS DMS ofrece carga completa, carga completa con CDC o solo cambios, y con destino S3 escribe CSV o Parquet. Redshift COPY carga en paralelo varios archivos comprimidos de tamaño similar indicados por prefijo común o manifiesto.
S3DistCp (s3-dist-cp) - Amazon EMR ↗Loading data from compressed and uncompressed files - Amazon Redshift ↗
En Redshift, un manifiesto enumera los archivos exactos que debe cargar COPY, incluso de buckets distintos, y mandatory=true hace fallar la carga si falta alguno. En AWS Glue, groupFiles y groupSize agrupan muchos archivos pequeños de S3 en menos particiones. Los flujos programados de AppFlow admiten transferencia completa o incremental con un desfase opcional.
Using a manifest to specify data files - Amazon Redshift ↗Reading input files in larger groups - AWS Glue ↗
Amazon AppFlow transfiere datos de aplicaciones SaaS como Salesforce o Zendesk a servicios de AWS sin escribir código, bajo demanda, por evento o con programación. La Amazon Redshift Data API permite ejecutar SQL mediante un punto de enlace HTTP sin controladores ni conexiones persistentes; es asíncrona y se autentica con Secrets Manager o credenciales temporales.
What is Amazon AppFlow? - Amazon AppFlow ↗Using the Amazon Redshift Data API - Amazon Redshift ↗
AWS Glue admite desencadenadores programados con cron en UTC, condicionales (según el estado de trabajos o rastreadores) y bajo demanda. Amazon EventBridge Scheduler crea programaciones cron, rate o únicas, en la zona horaria elegida y con ajuste al horario de verano, y puede llamar a APIs de AWS. Amazon MWAA ejecuta DAG de Apache Airflow sin administrar infraestructura.
AWS Glue triggers ↗Schedule types in EventBridge Scheduler ↗
S3 Event Notifications envía eventos de objetos a SNS, SQS estándar, Lambda o EventBridge; para colas FIFO hay que pasar por EventBridge. Si una función escribe en el mismo bucket que la activa puede crear un bucle, que se evita con dos buckets o un prefijo de entrada. Un flujo de AWS Glue puede iniciarse con eventos de EventBridge y agruparlos con una condición de lote.
Amazon S3 Event Notifications - Amazon Simple Storage Service ↗Starting an AWS Glue workflow with an Amazon EventBridge event ↗
Lambda lee los fragmentos de Kinesis mediante una asignación de origen de eventos, con iterador estándar o consumidor de distribución ramificada mejorada. BatchSize y la ventana de lotes controlan el tamaño de cada invocación, ParallelizationFactor procesa un fragmento con lotes simultáneos y la división de lotes, el límite de reintentos y un destino en caso de error evitan que un registro defectuoso bloquee el fragmento.
Using Lambda to process records from Amazon Kinesis Data Streams - AWS Lambda ↗Retain discarded batch records for a Kinesis Data Streams event source in Lambda - AWS Lambda ↗
Para que un socio permita el tráfico saliente de recursos en subredes privadas se usa una puerta de enlace NAT pública con IP elástica. Las listas de prefijos administradas por el cliente agrupan rangos CIDR que se referencian en grupos de seguridad y se actualizan en un solo sitio. Firehose entrega a Redshift en una VPC si el clúster es público y su grupo de seguridad permite el CIDR de Firehose de la región.
Consolidate and manage network CIDR blocks with managed prefix lists - Amazon VPC ↗Controlling access with Amazon Data Firehose ↗
DynamoDB devuelve en UnprocessedItems las escrituras por lotes no procesadas, normalmente por limitación, y deben reintentarse con espera exponencial; los SDK ya reintentan los errores de limitación. RDS Proxy agrupa y reutiliza conexiones para absorber picos sin saturar la base de datos. En Kinesis, una clave de partición bien distribuida evita fragmentos calientes que provocan ProvisionedThroughputExceededException.
Error handling with DynamoDB - Amazon DynamoDB ↗Amazon RDS Proxy - Amazon Relational Database Service ↗
Para distribuir un flujo de Kinesis a varios consumidores, la distribución ramificada mejorada da a cada uno su propio rendimiento por fragmento y entrega por push; los consumidores estándar y Firehose comparten el límite de lectura. Para repartir mensajes, un tema de SNS con varias colas de SQS suscritas entrega una copia persistente a cada servicio. Firehose puede leer de un flujo de Kinesis y escribir en S3.
Develop enhanced fan-out consumers with dedicated throughput - Amazon Kinesis Data Streams ↗Fanout Amazon SNS notifications to Amazon SQS queues for asynchronous processing ↗
Una canalización es reproducible cuando conserva los datos de origen el tiempo suficiente para volver a procesarlos. Kinesis Data Streams permite ampliar la retención y leer desde un momento con AT_TIMESTAMP; EventBridge archiva eventos y los reproduce en el bus de origen; MSK con almacenamiento por niveles retiene más datos; y los marcadores de AWS Glue pueden rebobinarse a una ejecución anterior.
Change the data retention period - Amazon Kinesis Data Streams ↗Archiving and replaying events in Amazon EventBridge ↗
Un procesamiento sin estado trata cada evento por separado; uno con estado conserva información entre eventos. Lambda es sin estado por defecto, pero las ventanas de saltos guardan estado entre invocaciones. Managed Service for Apache Flink usa puntos de control e instantáneas para conservar el estado. TransactWriteItems de DynamoDB aplica varios cambios como todo o nada y es idempotente con un token de cliente.
Implementing stateful Kinesis Data Streams processing in Lambda - AWS Lambda ↗Amazon DynamoDB Transactions: How it works ↗
Transform and process data
Amazon EMR on EKS ejecuta Spark y otros marcos en un clúster de EKS existente y administra sus contenedores, compartiendo recursos con otras aplicaciones. En Amazon ECS, Service Auto Scaling ajusta las tareas según CPU, memoria, horarios, patrones históricos o mensajes pendientes por tarea en SQS. Fargate Spot ejecuta tareas tolerantes a interrupciones con descuento y avisa con SIGTERM antes de detenerlas.
What is Amazon EMR on EKS? - Amazon EMR ↗Amazon ECS clusters for Fargate - Amazon ECS ↗
AWS Glue se conecta a bases de datos mediante conexiones JDBC; con Amazon RDS en una VPC necesita un grupo de seguridad con una regla de entrada autorreferenciada, y hashfield y hashpartitions permiten leer una tabla JDBC en paralelo. Athena ofrece controladores JDBC y ODBC para herramientas de BI y aplicaciones, y Amazon Redshift ofrece controladores JDBC y ODBC propios.
Reading from JDBC tables in parallel - AWS Glue ↗Setting up Amazon VPC for JDBC connections to Amazon RDS data stores from AWS Glue ↗
Athena Federated Query consulta en su ubicación orígenes como DynamoDB mediante conectores, y las consultas federadas de Redshift llegan a RDS y Aurora PostgreSQL o MySQL delegando parte del cálculo en la base remota. Las integraciones zero-ETL replican Aurora, RDS, DynamoDB o aplicaciones SaaS en Redshift sin canalización propia, y Amazon AppFlow mueve datos SaaS a S3 sin código.
Use Amazon Athena Federated Query ↗Zero-ETL integrations - Amazon Redshift ↗
En AWS Glue, la clase de ejecución flexible abarata trabajos no urgentes (pruebas, cargas puntuales) y Auto Scaling, desde Glue 3.0, añade y quita trabajadores según el paralelismo de cada etapa. En Amazon EMR, las instancias de spot convienen en los nodos de tarea, que no guardan datos de HDFS; los nodos principal y básicos deben ser bajo demanda si el clúster no puede perderse.
Using auto scaling for AWS Glue ↗Configuring Amazon EMR cluster instance types and best practices for Spot instances ↗
EMR Serverless ejecuta Spark y Hive sin operar clústeres; AWS Glue ofrece trabajos sin servidor de Spark, Spark Streaming y Python shell. Lambda encaja con transformaciones pequeñas activadas por eventos de S3, y en Amazon Redshift las vistas materializadas guardan resultados precalculados de combinaciones y agregaciones con actualización automática.
What is Amazon EMR Serverless? ↗Materialized views in Amazon Redshift ↗
Parquet y ORC son formatos columnares que ocupan menos y aceleran las consultas. Athena convierte tablas con CTAS indicando format y write_compression, y Amazon Data Firehose convierte JSON a Parquet u ORC con un deserializador (OpenX o Hive JSON SerDe), un esquema de AWS Glue Data Catalog y un serializador; el CSV debe pasarse antes a JSON con Lambda.
Convert input data format in Amazon Data Firehose ↗Examples of CTAS queries - Amazon Athena ↗
La generación de perfiles de AWS Glue y la interfaz de Spark ayudan a localizar fallos: muchos archivos pequeños agotan la memoria del driver (se corrige agrupando con groupFiles), una lectura JDBC sin tamaño de recuperación agota un ejecutor (los DynamicFrame lo fijan por defecto) y coalesce(1) crea una tarea rezagada que deja inactivos al resto de ejecutores.
Debugging OOM exceptions and job abnormalities ↗Debugging demanding stages and straggler tasks ↗
La Data API de Redshift ejecuta SQL por HTTP sin controladores ni conexiones persistentes, con Secrets Manager o credenciales temporales; BatchExecuteStatement ejecuta varias sentencias en una transacción. Para publicar datos a terceros, API Gateway ofrece API REST con claves y planes de uso que limitan por cliente, y caché por etapa para no invocar el backend en cada petición.
Using the Amazon Redshift Data API ↗Usage plans and API keys for REST APIs in API Gateway ↗
Los datos estructurados encajan en un esquema de filas y columnas; los no estructurados (audio, vídeo, documentos) no, y los semiestructurados combinan ambos, como vídeos con etiquetas. Un lago de datos en S3 guarda cualquier variedad tal cual, y para alta velocidad con tráfico impredecible Kinesis Data Streams en modo bajo demanda escala sin planificar capacidad.
Structured Data vs Unstructured Data ↗Choose the right mode to stream in - Amazon Kinesis Data Streams ↗
Amazon Redshift puede llamar a modelos de Amazon Bedrock desde SQL con CREATE EXTERNAL MODEL y MODEL_TYPE BEDROCK, que crea una función de inferencia. Para grandes volúmenes sin tiempo real, la inferencia por lotes de Bedrock lee archivos JSONL de S3 con recordId y modelInput y escribe las respuestas en S3; el orden de salida no está garantizado, por lo que se une por recordId.
CREATE EXTERNAL MODEL - Amazon Redshift ↗Format and upload your batch inference data ↗
Orchestrate data pipelines
Amazon MWAA ejecuta DAG de Apache Airflow en Python sin gestionar infraestructura. Los flujos de trabajo de AWS Glue encadenan trabajos y rastreadores y pueden iniciarse por programación, bajo demanda o con eventos de EventBridge agrupados por tamaño y ventana de lote. En Step Functions, el patrón .sync espera a que termine el trabajo integrado, mientras que Request Response continúa al recibir la respuesta.
What Is Amazon Managed Workflows for Apache Airflow? ↗Discover service integration patterns in Step Functions ↗
En Step Functions, los campos Retry con BackoffRate y JitterStrategy reparten los reintentos y Catch dirige los errores a estados de gestión; el estado Map distribuido admite umbrales de fallos tolerados y MaxConcurrency para no saturar servicios posteriores. En Amazon SQS, una cola de mensajes fallidos con maxReceiveCount aísla los mensajes que fallan siempre sin detener el resto.
Handling errors in Step Functions workflows ↗Using dead-letter queues in Amazon SQS ↗
Step Functions ofrece flujos estándar, de larga duración y con ejecución exactamente una vez para acciones no idempotentes, y flujos Express, de al menos una vez y para eventos de gran volumen con acciones idempotentes; el tipo no se puede cambiar tras crearlo. El estado Map distribuido, solo en flujos estándar, procesa en paralelo grandes conjuntos de S3 con ItemReader y ResultWriter.
Choosing workflow type in Step Functions ↗Using Map state in Distributed mode for large-scale parallel workloads in Step Functions ↗
Amazon SNS envía mensajes por inserción a varios suscriptores y, con colas de SQS suscritas, los mensajes persisten para procesarse después; las políticas de filtro se asignan a cada suscripción. AWS Glue emite a EventBridge cambios de estado de trabajos (FAILED, TIMEOUT…) y, con un umbral de retraso, eventos de ejecuciones lentas que una regla puede enviar a SNS.
Fanout Amazon SNS notifications to Amazon SQS queues for asynchronous processing ↗Automating AWS Glue with EventBridge ↗
Apply programming concepts
Para acelerar trabajos de Spark en AWS Glue conviene leer menos datos: podar particiones con push_down_predicate, seleccionar columnas y filtrar filas antes de combinar para aprovechar la delegación en Parquet, y evitar reorganizaciones con combinaciones por difusión (broadcast) cuando una tabla cabe en la memoria del ejecutor.
Reduce the amount of data scan - AWS Prescriptive Guidance ↗Optimize shuffles - AWS Prescriptive Guidance ↗
En Lambda, la simultaneidad reservada garantiza y limita la capacidad de una función, y la aprovisionada mantiene entornos preinicializados contra los arranques en frío. La CPU crece con la memoria configurada. Con Kinesis, ParallelizationFactor procesa varios lotes por partición manteniendo el orden por clave, y con SQS la simultaneidad máxima limita cada origen de eventos por separado.
Understanding Lambda Event Function scaling ↗Configuring scaling behavior for SQS event source mappings ↗
AWS Glue para Spark admite scripts ETL en Python (PySpark) y en Scala. En Amazon Athena, las funciones definidas por el usuario se escriben en Java, se despliegan como función de Lambda y se invocan con USING EXTERNAL FUNCTION. En Amazon Redshift, los procedimientos almacenados en PL/pgSQL admiten DDL, DML, bucles y condiciones, a diferencia de las UDF.
Programming Spark scripts - AWS Glue ↗Query with user defined functions - Amazon Athena ↗
Las buenas prácticas de ingeniería de software también se aplican a los pipelines de datos. AWS Glue Studio se integra con Git (GitHub, GitLab, Bitbucket, CodeCommit) para versionar trabajos; la imagen Docker de AWS Glue permite probar en local con pytest sin coste de Glue; glueContext.get_logger() escribe en CloudWatch y las métricas de observabilidad muestran sesgo y utilización.
Using Git version control systems in AWS Glue ↗Monitoring with AWS Glue Observability metrics ↗
Con AWS CloudFormation, la infraestructura de datos se describe en plantillas versionables. Los conjuntos de cambios muestran antes de ejecutar si un recurso se modificará, reemplazará o eliminará; la detección de desviaciones encuentra cambios hechos fuera de CloudFormation; y el atributo DeletionPolicy (Delete, Retain, RetainExceptOnCreate, Snapshot) decide qué ocurre con cada recurso al eliminar la pila.
Update CloudFormation stacks using change sets ↗DeletionPolicy attribute - CloudFormation ↗
AWS SAM es un marco de IaC que amplía CloudFormation con sintaxis abreviada para funciones de Lambda, máquinas de estados de Step Functions y tablas de DynamoDB. sam deploy empaqueta, sube los artefactos a S3 y despliega mediante un conjunto de cambios; AWS::Serverless::StateMachine admite DefinitionUri y DefinitionSubstitutions, y SimpleTable solo crea claves de un atributo.
What is the AWS Serverless Application Model (AWS SAM)? ↗sam deploy - AWS SAM CLI command reference ↗
Una función de Lambda dispone de almacenamiento efímero en /tmp, exclusivo de cada entorno de ejecución y ampliable con su propio ajuste. Para datos compartidos entre invocaciones se monta un sistema de archivos en una ruta /mnt/: Amazon EFS mediante un punto de acceso, o Amazon S3 Files, que presenta un bucket como archivos. Ambos requieren VPC, destinos de montaje y tráfico NFS en el puerto 2049.
Configure ephemeral storage for Lambda functions ↗Configuring file system access for Lambda functions ↗
La IaC permite desplegar de forma repetible. CloudFormation StackSets crea o actualiza pilas en varias cuentas y regiones con una sola operación. El AWS CDK define la infraestructura en lenguajes como Python o TypeScript: cdk synth genera las plantillas de CloudFormation, cada entorno necesita cdk bootstrap y las construcciones van de L1 (Cfn, control total) a L3 (patrones).
Managing stacks across accounts and Regions with StackSets ↗What is the AWS CDK? ↗
La CI/CD automatiza la compilación, las pruebas y el despliegue de pipelines de datos. AWS CodePipeline modela las etapas y admite acciones de aprobación manual con aviso por SNS; AWS CodeBuild ejecuta pruebas y crea informes con la sección reports del buildspec; AWS CodeDeploy desvía tráfico a nuevas versiones de Lambda con configuraciones canary, lineales o all-at-once.
La computación distribuida reparte datos y trabajo entre varios nodos que procesan en paralelo. En Spark, cada partición es una tarea, así que un archivo gzip no divisible crea una sola partición hasta usar repartition. En Redshift, el nodo líder planifica y los nodos de cómputo ejecutan en paralelo; en EMR, los nodos core guardan HDFS y los de tarea solo aportan cómputo.
Parallelize tasks - Best practices for performance tuning AWS Glue for Apache Spark jobs ↗Understand node types in Amazon EMR: primary, core, and task nodes ↗
Los grafos (nodos y aristas) y los árboles (jerarquías) se modelan con servicios adecuados. Amazon Neptune ejecuta Gremlin, openCypher y SPARQL sobre datos muy conectados; Neptune Analytics carga grafos en memoria y ofrece algoritmos de caminos, centralidad y comunidades. En DynamoDB, las listas de adyacencia representan grafos y las claves de ordenación compuestas, jerarquías consultables con begins_with.
Neptune Analytics algorithms ↗Best practices for using sort keys to organize data in DynamoDB ↗
Practica por dominio oficial y revisa la explicación de cada respuesta.
Empezar a practicar