Справочник - DEA-C01 AWS Certified Data Engineer Associate
Последняя проверка: май 2026 г.
Сжатый справочник архитектурных шаблонов, проверяемых на экзамене DEA-C01. Читайте сверху вниз или переходите к нужному разделу.
Прием и преобразование данных
Выберите сервис Kinesis для потокового приема данных.
Обработка данных за доли секунды, управляемая потребителем → Kinesis Data Streams. Полностью управляемая доставка в S3/Redshift/OpenSearch с опциональной конвертацией формата → Kinesis Data Firehose.
Почему: KDS хранит записи (от 24 часов до 365 дней) и поддерживает нескольких потребителей. Firehose не имеет возможности повторного воспроизведения; он обменивает повторное воспроизведение на доставку без операций.
Поток сталкивается с ошибками ProvisionedThroughputExceeded в пиковые нагрузки.
Решардирование. Каждый шард поддерживает прием 1 МБ/с или 1000 записей/с, исходящий трафик 2 МБ/с. Используйте равномерные ключи партиционирования; включите Enhanced Fan-Out для скорости >2 МБ/с на потребителя.
Почему: Горячие ключи партиционирования концентрируют трафик на одном шарде. Случайные или хеш-основанные ключи распределяют нагрузку.
Максимизировать пропускную способность приема данных из приложения на стороне производителя.
Kinesis Producer Library (KPL) с агрегацией + коллекцией. Объединяет несколько пользовательских записей в одну запись Kinesis размером до 1 МБ; снижает стоимость PUT-запросов.
Почему: PutRecord для одной записи имеет ограничение по скорости и является дорогим при 50 тыс. событий/с. KPL агрегирует данные на стороне клиента.
Разместить JSON-кликстрим в S3 в формате Parquet, секционированный по времени события.
Firehose с конвертацией формата записей (JSON → Parquet) с использованием таблицы Glue Data Catalog + динамическое партиционирование по временной метке события.
Почему: Parquet + партиционирование значительно снижает стоимость сканирования в Athena. Динамическое партиционирование избегает отдельного шага ETL.
Обеспечьте отсутствие потери данных в MSK, если сбойнет AZ брокера.
Фактор репликации ≥ 3 в 3-х AZ и `min.insync.replicas=2` с `acks=all` для производителя. Включите Multi-AZ через KRaft без ZooKeeper или размещение брокеров в 3-х AZ.
Топик хранит последнюю версию записи по каждому ключу; старые версии могут быть отброшены.
Установите `cleanup.policy=compact` для топика. Kafka сохраняет самое последнее значение для каждого ключа; более старые записи с тем же ключом подлежат компактированию.
Glue Crawler определяет неоднозначные типы (`choice<int,string>`) из неструктурированных CSV-данных.
Примените преобразование `ResolveChoice` - приведите к определенному типу или спроецируйте в структуру. Или исправьте в источнике, принудительно задав схему.
Задача Glue Spark завершается с ошибкой OutOfMemoryError на драйвере во время крупных агрегаций.
Переключитесь на воркеры G.2X или G.4X (больше памяти драйвера) или включите предикаты push-down `--enable-glue-datacatalog` для уменьшения объема перемешиваемых данных.
Краулер определяет все столбцы CSV как `string` - нужны типы даты и числа.
Добавьте пользовательский классификатор Glue (шаблон Grok или подсказка столбца) перед сканированием. В качестве альтернативы предварительно запишите строку заголовка с явными типами.
Длительно работающий кастомный Spark с глубокой настройкой, несколько фреймворков (Hive, Presto, Flink) → EMR. Бессерверный ETL с оплатой за задание и интеграцией с Glue Data Catalog → Glue. Нестабильный/непредсказуемый Spark → EMR Serverless.
Периодические задачи Spark/Hive; требуется отсутствие операций с кластером и холостого простоя вычислений.
EMR Serverless. Предварительно инициализированные пулы емкости для запусков с низкой задержкой; масштабируется для каждого задания; оплата за vCPU-час.
Сочетание узлов core по запросу и узлов task в режиме Spot для экономичной оптимизации EMR.
Парки инстансов (Instance Fleets) с целевой емкостью по типу. Парк core узлов по запросу для стабильности HDFS; парк task узлов в режиме Spot с разнообразными типами инстансов.
Шаг Step Functions иногда завершается сбоем из-за временного регулирования; повторная попытка, затем оповещение.
Добавьте блок `Retry` с `ErrorEquals: ["Lambda.ThrottlingException", "States.TaskFailed"]`, `IntervalSeconds`, `MaxAttempts`, `BackoffRate=2`. А также `Catch` для состояния уведомления.
Необходимо откатить изменения DAG, если развертывание вызывает сбои.
Храните DAG в версионированном бакете S3 + синхронизация через версионирование S3. Или поддерживайте репозиторий DAG в Git с одной средой на ветку + синхронизация S3 через CI.
Необработанные данные активно используются 30 дней, случайный доступ в течение следующих 90 дней, архив на 7 лет.
Жизненный цикл S3: 0-30 дней Standard, переход на 30-й день в Standard-IA, переход на 120-й день в Glacier Flexible Retrieval, истечение срока действия через 7 лет.
Непредсказуемые паттерны доступа; ручная политика жизненного цикла - неправильный выбор.
S3 Intelligent-Tiering. Автоматически перемещает объекты между Frequent / Infrequent / Archive Instant Access / Archive / Deep Archive на основе паттерна доступа. Стоимость мониторинга за объект; без платы за извлечение в Frequent/IA.
Запросы Athena в озере данных медленные; партиция содержит тысячи JSON-файлов размером 1-5 КБ.
Скомпонуйте маленькие файлы с помощью задачи Glue/EMR в файлы Parquet размером ~256 МБ. Используйте Iceberg `OPTIMIZE` или компактирование Hudi для управляемых форматов таблиц.
Почему: Накладные расходы Athena/Spark на каждый файл доминируют при работе с крошечными файлами. Оптимальный размер составляет ~128-512 МБ Parquet.
Один бакет; нескольким командам требуются различные паттерны доступа, ограниченные префиксами.
Точки доступа S3 (S3 Access Points) - именованная конечная точка для каждой команды со своей политикой, привязанной к префиксу. Проще, чем одна гигантская политика бакета.
Кластер Redshift должен масштабировать хранилище независимо от вычислений.
Узлы RA3 с управляемым хранилищем (RMS). Хранилище на базе S3; вычисления масштабируются отдельно. Требуется для AQUA, Concurrency Scaling, Federated Queries.
Запрос Redshift часто фильтрует по `created_at`; полное сканирование таблицы медленное.
Определите ключ сортировки по `created_at` (или составной ключ сортировки, включающий `created_at`). Redshift использует карты зон для пропуска блоков во время сканирования.
Загрузка 32 gzip CSV-файлов (по ~1 ГБ каждый) в 4-узловой кластер Redshift медленная.
COPY параллельно из одного манифеста. Цель: количество файлов = кратное количеству срезов (срезы = узлы × vCPU). 4 узла ra3.xlplus = 8 срезов → 32 файла = 4 на срез.
Запрос дашборда многократно соединяет 3 большие таблицы и агрегирует; задержка высокая.
Материализованное представление с автоматическим обновлением. Redshift поддерживает предварительно вычисленный результат; запрос читает из материализованных данных.
Дашборд соединяет заказы + клиентов + продукты при каждом рендеринге; звездообразная схема слишком медленная.
Денормализуйте в широкую таблицу фактов или материализованное представление. Рабочие нагрузки BI предпочитают соединения во время чтения, разрешаемые во время записи.
Один и тот же шаблон запроса выполняется с разными значениями параметров в течение дня.
Подготовленные операторы Athena: `PREPARE`, `EXECUTE` со значениями параметров. Избегает повторного синтаксического анализа и обеспечивает чистую параметризацию.
Показания IoT-устройств; требуются (1) все показания для устройства в заданном временном окне, (2) последнее показание для каждого устройства.
PK = `device_id`, SK = `timestamp`. GSI с PK = `device_id`, SK = инвертированная `timestamp` (или используйте Query с `ScanIndexForward=false LIMIT 1`).
Данные IoT-датчиков: "горячие" запросы за последние 7 дней, случайные запросы за 2 года.
Amazon Timestream. Хранилище в памяти для недавних данных (быстрые запросы); автоматическое многоуровневое хранение в магнитном хранилище для исторических данных.
Задача Glue работает медленно; нужно узнать, не хватает ли ей ресурсов или есть ли перекос в перемешивании.
Включите метрики задач Glue + наблюдаемость. CloudWatch показывает максимальное использование DPU, утилизацию исполнителей, чтение/запись shuffle для каждого этапа.
Athena сканирует 5 ТБ для ответа на запросы, которые касаются данных за один день; стоимость слишком высока.
Секционируйте по дате и убедитесь, что в предложении WHERE используются ключи партиционирования. Проверьте с помощью `EXPLAIN`, показывающего отсечение партиций.
Запросы Athena к озеру данных JSON медленные и дорогие.
Преобразуйте в Parquet (столбчатый) или ORC. Читаются только необходимые столбцы; нативная компрессия сокращает как стоимость сканирования, так и время.
Оптимизация стоимости кластера EMR без риска потери данных.
Базовые узлы (Core nodes) по требованию (хост HDFS / shuffle). Узлы задач (Task nodes) на Spot через Instance Fleets с разнообразными типами инстансов.
Кластер Redshift работает 24/7; ценообразование по требованию дорогое.
Зарезервированные узлы Redshift (1 год или 3 года, полная/частичная/без предоплаты). Скидка до ~75% по сравнению с ценами по требованию для стабильных нагрузок.
Почему: Athena взимает плату за сканированные данные; Redshift - за час работы кластера; EMR - за час работы инстанса. Сопоставьте оплату с паттерном доступа.
Повторные попытки Glue ETL приводят к дублированию выходных строк в целевом S3.
Идемпотентность: запись во временный префикс за каждый запуск, затем атомарное переименование через S3 multipart `CompleteMultipartUpload` или использование MERGE Iceberg/Hudi для upserts.
Потребители MSK отстают от производителей; необходимо обнаружить и оповестить.
Метрика CloudWatch `MaxOffsetLag` для каждой группы потребителей. Тревога, когда > порога; масштабирование количества потребителей или увеличение параллелизма партиций.
Отделы продаж должны видеть только строки, относящиеся к их регионам, в общем озере данных.
Безопасность на уровне строк Lake Formation через фильтр данных: `region IN ('NA', 'EU')` для каждого субъекта IAM. Одна таблица; фильтрованное представление для каждого субъекта.
Много команд + много таблиц; разрешения для каждой таблицы становятся неуправляемыми.
LF-теги Lake Formation. Тегируйте таблицы/столбцы; предоставляйте разрешения на основе тегов субъектам. Добавление новой таблицы требует только правильного тега.
Учетная запись A содержит озеро данных; аналитикам учетной записи B нужен доступ для чтения к определенным таблицам.
Меж-аккаунтный доступ Lake Formation через RAM. Учетная запись A предоставляет разрешения субъекту IAM/учетной записи B; B получает доступ через Athena/Redshift Spectrum.
Безопасность на уровне строк внутри Redshift (не Lake Formation).
Нативные политики RLS Redshift: `CREATE RLS POLICY` с предикатом, ссылающимся на контекст сессии (`current_user`, `session_role`). Прикрепите политику к таблице.
Требуется информация о том, кто/когда/IP для каждого доступа к S3; события данных CloudTrail слишком дороги.
Журналирование доступа к серверу S3. Бесплатно; журналы доставляются в отдельный бакет для логирования; меньше деталей, чем в CloudTrail, но покрывает запрашивающего + IP + путь.
Redshift в VPC должен читать из S3 без использования публичного интернета.
Шлюзовая конечная точка S3 (S3 Gateway Endpoint) в таблице маршрутизации подсети Redshift. Трафик маршрутизируется через магистральную сеть AWS; без NAT, без IGW.
Glue ETL требуется чтение из S3, запись в Redshift, чтение из Secrets Manager.
Единая роль выполнения Glue с политиками наименьших привилегий: `s3:GetObject` для исходного префикса, `redshift-data:ExecuteStatement`, `secretsmanager:GetSecretValue` для конкретного ARN секрета.
Непрерывный сбор доказательств соответствия для аудитов HIPAA / SOC 2.
AWS Audit Manager с предустановленными фреймворками. Автоматически собирает доказательства из CloudTrail, Config, Security Hub; создает готовые к аудиту отчеты.