Guía - DEA-C01 AWS Certified Data Engineer Associate
Última revisión: mayo de 2026
Una referencia escaneable de patrones arquitectónicos que evalúa el examen DEA-C01. Lee de arriba a abajo o salta a una sección.
Ingesta y Transformación de Datos
Elija un servicio de Kinesis para la ingesta de streaming.
Procesamiento controlado por el consumidor en subsegundos → Kinesis Data Streams. Entrega totalmente administrada a S3/Redshift/OpenSearch con conversión de formato opcional → Kinesis Data Firehose.
Por qué: KDS retiene registros (24h-365d) y admite múltiples consumidores. Firehose no tiene repetición; sacrifica la repetición por una entrega sin operaciones.
El stream alcanza errores de ProvisionedThroughputExceeded durante el pico.
Refragmentar. Cada shard admite 1 MB/s o 1,000 registros/s de ingesta, 2 MB/s de salida. Use claves de partición uniformes; habilite Enhanced Fan-Out para >2 MB/s por consumidor.
Por qué: Las claves de partición "calientes" concentran el tráfico en un solo shard. Las claves aleatorias o basadas en hash distribuyen la carga.
Maximizar el rendimiento de la ingesta desde la aplicación del lado del productor.
Kinesis Producer Library (KPL) con agregación + colección. Agrupa múltiples registros de usuario en un solo registro de Kinesis de hasta 1 MB; reduce el costo de PUT.
Por qué: PutRecord de un solo registro tiene límite de velocidad y es costoso a 50k eventos/s. KPL agrega en el lado del cliente.
Almacenar clickstream JSON en S3 como Parquet, particionado por tiempo de evento.
Firehose con conversión de formato de registro (JSON → Parquet) usando una tabla de Glue Data Catalog + particionamiento dinámico por timestamp de evento.
Por qué: Parquet + particionamiento reduce drásticamente el costo de escaneo de Athena. El particionamiento dinámico evita un paso ETL separado.
Asegurar que no haya pérdida de datos en MSK si falla una AZ de broker.
Factor de replicación ≥ 3 en 3 AZs y `min.insync.replicas=2` con `acks=all` del productor. Habilite Multi-AZ a través de KRaft sin ZooKeeper o mediante la colocación de brokers en 3 AZs.
El tema almacena la última versión de un registro por clave; las versiones antiguas pueden descartarse.
Configure el tema `cleanup.policy=compact`. Kafka retiene el valor más reciente para cada clave; los registros más antiguos con la misma clave son elegibles para la compactación.
El trabajo Spark de Glue falla con OutOfMemoryError en el controlador durante grandes agregaciones.
Cambie a workers G.2X o G.4X (más memoria de controlador) o habilite los predicados push-down `--enable-glue-datacatalog` para reducir los datos barajados.
Crawler infiere todas las columnas CSV como `string` - necesita tipos de fecha y número.
Agregue un clasificador de Glue personalizado (patrón Grok o sugerencia de columna) antes del crawling. Alternativamente, escriba previamente una fila de encabezado con tipos explícitos.
Múltiples productores/consumidores en Kafka necesitan evolución de esquemas sin romperse entre sí.
AWS Glue Schema Registry con reglas de compatibilidad (BACKWARD/FORWARD/FULL). Los productores registran el esquema; los consumidores lo obtienen + validan.
Spark personalizado de larga duración con ajuste profundo, múltiples frameworks (Hive, Presto, Flink) → EMR. ETL serverless de pago por trabajo con integración de Glue Data Catalog → Glue. Spark irregular/impredecible → EMR Serverless.
Mezclar nodos de tarea spot y core bajo demanda para EMR optimizado en costos.
Instance Fleets con capacidad objetivo por tipo. Flota de core bajo demanda para estabilidad de HDFS; flota de tarea spot con tipos de instancia diversificados.
Un paso de Step Functions falla ocasionalmente por limitación transitoria; reintentar y luego alertar.
Agregue un bloque `Retry` con `ErrorEquals: ["Lambda.ThrottlingException", "States.TaskFailed"]`, `IntervalSeconds`, `MaxAttempts`, `BackoffRate=2`. Además, `Catch` a un estado de notificación.
Necesidad de revertir cambios en DAGs si un despliegue causa fallos.
Almacene los DAGs en un bucket S3 versionado + sincronice a través del versionamiento de S3. O mantenga el repositorio de DAGs en Git con un entorno por rama + sincronización con S3 a través de CI.
Datos crudos "calientes" durante 30 días, acceso ocasional durante los siguientes 90 días, archivo durante 7 años.
Ciclo de vida de S3: 0-30 días Standard, transición a los 30 días a Standard-IA, transición a los 120 días a Glacier Flexible Retrieval, expira después de 7 años.
Patrones de acceso impredecibles; la política de ciclo de vida manual es una elección incorrecta.
S3 Intelligent-Tiering. Mueve objetos automáticamente entre Frequent / Infrequent / Archive Instant Access / Archive / Deep Archive basándose en el patrón de acceso. Tarifa de monitoreo por objeto; sin tarifas de recuperación en Frequent/IA.
Las consultas de Athena en el data lake son lentas; la partición tiene miles de archivos JSON de 1-5 KB.
Compacte archivos pequeños a través de un trabajo de Glue/EMR en archivos Parquet de ~256 MB. Utilice Iceberg `OPTIMIZE` o la compactación de Hudi para formatos de tabla administrados.
Por qué: El overhead por archivo de Athena/Spark domina con archivos pequeños. El punto óptimo es ~128-512 MB de Parquet.
El clúster de Redshift necesita escalar el almacenamiento independientemente del cómputo.
Nodos RA3 con almacenamiento administrado (RMS). Almacenamiento respaldado por S3; el cómputo escala por separado. Requerido para AQUA, Concurrency Scaling, Federated Queries.
La consulta de Redshift filtra frecuentemente por `created_at`; los escaneos de tabla completa son lentos.
Defina una clave de clasificación en `created_at` (o una clave de clasificación compuesta que incluya `created_at`). Redshift utiliza mapas de zona para omitir bloques durante el escaneo.
La carga de 32 archivos CSV gzip (~1 GB cada uno) en un clúster de Redshift de 4 nodos es lenta.
COPY en paralelo desde un único manifiesto. Apunte a #archivos = múltiplo del número de slices (slices = nodos × vCPU). 4 nodos ra3.xlplus = 8 slices → 32 archivos = 4 por slice.
Las consultas del equipo de informes durante el pico ralentizan las cargas de trabajo ETL; ambas se ejecutan en el mismo clúster.
Habilite Concurrency Scaling en la cola WLM relevante. Redshift enruta transparentemente las consultas de desbordamiento a clústeres escalados horizontalmente.
El panel une pedidos + clientes + productos en cada renderizado; el esquema estrella es demasiado lento.
Desnormalice en una tabla de hechos ancha o vista materializada. Las cargas de trabajo de BI favorecen las uniones en tiempo de lectura resueltas en tiempo de escritura.
S3 particiona por `año/mes/día/hora`; `MSCK REPAIR TABLE` toma más de 30 minutos.
Habilite la proyección de particiones de Athena (sin entradas de partición de Glue Catalog). Defina los tipos de claves de partición + rangos en las propiedades de la tabla.
Por qué: Athena calcula las ubicaciones de las particiones en tiempo de consulta a partir de las reglas de proyección - sin MSCK, sin limitación de la API de Glue.
El costo de almacenamiento de OpenSearch crece; los índices antiguos rara vez se consultan.
Las políticas ISM de OpenSearch organizan los datos por niveles: hot → UltraWarm (respaldado por S3) → Cold. El nivel Cold está separado pero es searchable bajo demanda.
Encuentre todos los trabajos de Glue cuya duración superó 1 hora en los últimos 7 días.
Consulta de CloudWatch Logs Insights: `fields @timestamp, @message | filter @message like /JobRunDuration/ | parse @message "duration=*" as d | filter d > 3600`.
El trabajo de Glue es lento; se necesita saber si tiene pocos recursos o un shuffle sesgado.
Habilite las métricas + observabilidad de los trabajos de Glue. CloudWatch muestra el uso máximo de DPU, la utilización del ejecutor, la lectura/escritura del shuffle por etapa.
El clúster de Redshift funciona 24/7; el precio bajo demanda es caro.
Nodos reservados de Redshift (1 año o 3 años, pago inicial total/parcial/sin pago). Hasta ~75% de descuento frente a bajo demanda para cargas de trabajo de estado estable.
Por qué: Athena factura por datos escaneados; Redshift factura por hora de clúster; EMR por hora de instancia. Empareje la facturación con el patrón de acceso.
Los reintentos de Glue ETL producen filas de salida duplicadas en el destino S3.
Idempotencia: escriba a un prefijo temporal por ejecución, luego renombre atómicamente a través de S3 multipart `CompleteMultipartUpload` o use Iceberg/Hudi MERGE para upserts.
Los consumidores de MSK se quedan atrás de los productores; es necesario detectarlo y alertar.
Métrica de CloudWatch `MaxOffsetLag` por grupo de consumidores. Alarma cuando > umbral; escale el número de consumidores o aumente el paralelismo de particiones.
Identificar las consultas de Redshift más lentas de la última hora para optimizarlas.
Consulte `SVL_QLOG` / `STL_QUERY` / `SYS_QUERY_HISTORY` para las entradas de mayor tiempo transcurrido; use `SVL_QUERY_REPORT` para un desglose paso a paso.
Los equipos de ventas solo deben ver las filas de sus regiones asignadas en el data lake compartido.
Seguridad a nivel de fila de Lake Formation a través de filtro de datos: `region IN ('NA', 'EU')` por principal de IAM. Tabla única; vista filtrada por principal.
Muchos equipos + muchas tablas; las concesiones por tabla son inmanejables.
LF-Tags de Lake Formation. Etiquete tablas/columnas; otorgue permisos basados en etiquetas a los principales. Agregar una nueva tabla solo necesita la etiqueta correcta.
La Cuenta A tiene el data lake; los analistas de la Cuenta B necesitan acceso de lectura a tablas específicas.
Compartir entre cuentas de Lake Formation a través de RAM. La Cuenta A otorga permisos al principal/cuenta de IAM de B; B accede a través de Athena/Redshift Spectrum.
Seguridad a nivel de fila dentro de Redshift (no Lake Formation).
Políticas RLS nativas de Redshift: `CREATE RLS POLICY` con predicado que hace referencia al contexto de la sesión (`current_user`, `session_role`). Adjunte la política a la tabla.
El cumplimiento requiere una clave administrada por el cliente con pista de auditoría para el cifrado de Redshift.
Clúster de Redshift cifrado con clave KMS administrada por el cliente. Rotación de claves habilitada; CloudTrail captura cada operación de Decrypt contra la CMK.
Cifrar las entradas/salidas de los trabajos ETL de Glue con una clave administrada por la empresa.
Configuración de seguridad de Glue con CMK para S3 + CloudWatch Logs + marcadores de trabajo. Rol de Glue con permisos `kms:Decrypt`/`Encrypt` en la clave.
Auditar cada GetObject / PutObject de S3 en el bucket del data lake.
Eventos de datos de CloudTrail para el bucket. CloudTrail por defecto solo registra eventos de administración; los eventos de datos deben habilitarse explícitamente.
Por qué: Los eventos de datos se facturan por evento; limite el alcance al bucket sensible solo para controlar los costos.
Se necesita saber quién/cuándo/IP para cada acceso a S3; los eventos de datos de CloudTrail son demasiado caros.
Registro de acceso al servidor S3. Gratuito; los logs se entregan a un bucket de logging separado; menos detalle que CloudTrail pero cubre el solicitante + IP + ruta.
Glue ETL necesita lectura de S3, escritura de Redshift, lectura de Secrets Manager.
Un único rol de ejecución de Glue con políticas de mínimo privilegio: `s3:GetObject` en el prefijo de origen, `redshift-data:ExecuteStatement`, `secretsmanager:GetSecretValue` en el ARN del secreto específico.
Recopilación continua de evidencia de cumplimiento para auditorías HIPAA / SOC 2.
AWS Audit Manager con frameworks predefinidos. Recopila automáticamente evidencia de CloudTrail, Config, Security Hub; produce informes listos para auditorías.