AWS DEA受験レポート

# 概要

[Data Engineer Associate(DEA)](https://aws.amazon.com/jp/certification/certified-data-engineer-associate/)は2024/04より一般に公開された新しいAWS認定です。

廃止となったData Analytics Specialty, Database Specialtyの範囲をカバーしているようです。

### 感想

まず自身の経験値ですが、DAS,DBSを取得済みでMLSは未取得です。業務でもビッグデータまわりの経験は皆無です。関連技術スタックについてもDAS受験時に知ったものがほとんどでした。

DAS,DBS,MLSの範囲から出題がある模様で、出題範囲がかなり広範です。
さらに機能を知っている程度では選択肢を絞り切れないような問題が多く、特にGlue,Redshift,Athena,EMR,Kinesis,StepFunctionsなどはBlackBeltだけでは不十分で公式ドキュメントも全編しっかり目を通しておく必要性を感じました。
SageMakerも詳細ではないものの出題範囲で、固有名称のついた機能が何を司るかは覚えておく必要がありました。
しかしそれだけの範囲を覚えたり実際に操作するのはかなりの時間を要すはずで、業務で触れていない自分は、SkillBuilderの公式模試を受けないで合格するビジョンが全く見えませんでした。
総じて、難易度がDASと同等かそれ以上に感じられました。
今後他の資格も試験内容がアップデートされ、DEAと同等の難易度になるとすると、認定の継続はかなり困難になるだろうなという印象です。

### 使用教材

特にSkillBuilder公式模試をおススメします。

* 各種BlackBelt Youtube
* [SkillBuilder公式模試](https://explore.skillbuilder.aws/learn/course/external/view/elearning/18862/exam-prep-official-pretest-aws-certified-data-engineer-associate-dea-c01-japanese)(こちらはサブスクリプションが必要)
* [要点整理から攻略する『AWS認定 データ分析-専門知識』](https://www.amazon.co.jp/dp/4839978174/)
* [Udemy【DEA-C01対応】AWS認定 データエンジニア アソシエイト 模擬問題集＋詳解](https://www.udemy.com/course/dea-c01aws/)

---

## その他参考

* [【2024年】AWS全サービスまとめ](https://dev.classmethod.jp/articles/aws-summary-2024/)
* [AWS入門ブログリレー2024〜 Amazon QuickSight 編〜](https://dev.classmethod.jp/articles/introduction-2024-amazon-quicksight/)


* [AWS Snowball Edge 上の Amazon S3 互換ストレージと AWS DataSync を使用してオブジェクトをレプリケートする](https://aws.amazon.com/jp/blogs/news/replicate-objects-using-aws-datasync-with-amazon-s3-compatible-storage-on-snowball-edge/)
* [AWS Batch マルチコンテナジョブを使用して大規模なシミュレーションを実行する](https://aws.amazon.com/jp/blogs/news/run-large-scale-simulations-with-aws-batch-multi-container-jobs/)


* [Apache Iceberg とは何か](https://bering.hatenadiary.com/entry/2023/09/24/175953)
* [はじめようApache Icebergハンズオン](https://github.com/lawofcycles/apache-iceberg-101-ja)
* [HiveとHBase](https://www.integrate.io/jp/blog/hive-vs-hbase-ja/)
* [APコミュニケーションズ技術ブログ 受験記](https://techblog.ap-com.co.jp/entry/2024/04/15/090000)

---

# 以下学習メモ

## 関連する技術スタック

* MapReduce,Hadoop,Spark
  * 分散コンピューティングフレームワーク
* HBase
  * 分散DB
* Pig
  * スクリプト言語
* Avro,ORC,Parquet
  * ビッグデータファイル形式
* Presto,Trino
  * SQLクエリエンジン
  * Athena
* Hive, Hive metastore
  * Glue Data Catalog
* Oozie
  * ワークフロー,ジョブ管理
* Delta Lake,Hudi,Iceberg
  * データレイク
* Ganglia
  * クラスターモニタリング
* Flink
  * ストリーム処理,分析
  * Kinesis Analytics
* Tez
  * タスクワークフローエンジン(DAG)
* Zeppelin
  * インタラクティブノートブック環境

## コンピューティング

#### EC2
* 分散ノードにスポットインスタンスや[スポットキャパシティ](https://repost.aws/ja/knowledge-center/ec2-spot-instance-insufficient-capacity)を利用する
#### Lambda
* 最大実行時間 15分

#### Batch
* ジョブはECSクラスターで実行される

#### EMR

## データソース,ストレージ

#### S3
* リソースベースポリシー(バケットポリシー/アクセスポリシー)
* 暗号化,バージョニング,ライフサイクル管理ポリシー,イベント通知
* クロスリージョンレプリケーション,アクセスポイント,オブジェクトロック
* 削除保護にはバージョニングをON
* Object Lambda
* ストレージクラス
    Standard,Intelijent,Express-1zone,1zone-IA
    Glacier Instant Retrieval, Flexible Retrieval, Deep Archive
* Mountpoint for S3
* S3 Select

#### RDS
* Aurora(MySQL,PostgreSQL)
    Data API
* MySQL,PostgreSQL,MariaDB,Oracle,SQL Server

#### Neptune
* グラフDB
* Provisioned,Serverless
* Gremlin,SPARQL,openCypher

#### DocumentDB
* MongoDB互換

#### Keyspaces
* Cassandra互換
* CQL

#### DynamoDB
* KeyValue型NoSQLDB
* イベントストリーム機能

#### MemoryDB for Redis
* Redis互換のインメモリDB

## ファイルストレージ

#### EFS

#### FSx

## データ収集

#### Lake Formation
* 行レベルアクセスコントロール

## ストリーム

#### Kinesis Data Streams
* on demand

#### Kinesis Data Firehose
* S3,Redshift,OpenSearchへ直接配信
#### Managed Streaming for Kafka
* Provisioned,Serverless

## データ処理

#### Managed Apache Flink
* 標準SQL

#### Glue
* Data Catalog
  * [パーティションインデックス](https://dev.classmethod.jp/articles/optimize-highly-partitioned-table-with-aws-glue-data-catalog-partition-index-and-filtering/)
* Data Quality
* DataBrew ノーコードのビジュアルデータ準備ツール
  * NEST_TO_MAP変換 ->KV型
  * NEST_TO_ARRAY変換
  * PIVOT変換 行から新たな列を生成
* Schema Registory
* DynamicFrame
* Studio
  * Detect PII

#### EMR
* Hadoop,Sparkなどのフレームワーク実行環境
* HDFS,EMRFS
* RunJobFlow
  * KeepJobFlowAliveWhenNoSteps

#### Macie
* S3データの個人情報検出

## ワークフロー

#### Step Functions
* ステートマシンに基づくワークフロー
* ASL(Amazon State Language)
* ステート
  * Parallel
  * Map
  * Wait
  * Choice

#### Managed Workflow for Apache Airflow
* 有向非巡回グラフ(DAG)でワークフローを表現


## イベント連携

#### AppFlow
* SaaS連携

#### EventBridge
* イベントバス

## キュー

#### MQ
* Apache ActiveMQ メッセージブローカーサービス

#### SQS
* スタンダード,FIFO

## 分析

#### Athena
* Presto
* CSV,JSON,ORC,Parquet,Avro
* S3のデータを分析
* FederatedQueryによりRDS,DynamoDB,DocumentDBにもクエリ可能
  * データソースコネクタにより実現
* Express One Zone と組み合わせて高速化
* ワークグループ
* データ使用量コントロール
* クエリ結果再利用
* Spark
  * データソースコネクタまたはワークグループ
* [パーティションプロジェクション](https://dev.classmethod.jp/articles/tried-to-check-how-to-set-amazon-athena-partition-projection/)

#### Redshift
* DWH
* PostgreSQL互換
* FederatedQueryによりRDS(PostgreSQL,MySQL)にもクエリ可能
* COPYコマンド
* 自動COPY S3への新規ファイル格納イベントをトリガーに
* Data API
  * 非同期
  * 最大クエリ期間,最大結果保持期間は24時間
  * クエリ最大サイズは100MB
* query editor v2
* WLM(ワークロード管理)
  * 同時実行スケーリング
* [分散スタイル](https://docs.aws.amazon.com/ja_jp/redshift/latest/dg/c_choosing_dist_sort.html)
  * AUTO,ALL,EVEN,KEY
* 自動化された最適化チューニング 自動テーブル最適化
* Data Sharing(RA3,Serverless,クロスアカウント,クロスリージョン)
* Data Exchange for Redshift
* Streaming Ingestion KDS,MSK->マテリアライズドビュー
* Zero-ETL for Aurora
* ML XGBoost,K-MEANS,MLP,LinearLearner,BYOM
* 自動マテリアライズドビュー クエリリライト
* SQA(Short Query Acceleration) 専用高速キュー
* Elastic Resize(RA3,DC2)
* 同時実行スケーリング(RA3,DC2) デフォルトOFF
* クラスター再配置(RA3) 別AZにフェールオーバー
* Multi-AZ配置(RA3) フェイルオーバー時接続断あり
* エンドツーエンド暗号化,IAM連携,シングルサインオン,多要素認証
* テーブルや列単位での権限制御
  * GRANTコマンド
* SOC123,PCI-DSS,FedRAMP,HIPAA
* マネージドVPCエンドポイント(別のVPCから閉域接続)(RA3 and クラスター再配置 or Serverless)
* CLS,RLS,RBAC
* 動的データマスキング マスキングポリシーで定義
* RSQL コマンドラインクライアント
* ストアドプロシージャ PL/pgSQL
* スカラーLambda UDFs 拡張SQL関数
* データ型
  * SUPER型 半構造化データ JSON PartiQL
  * 空間データ型 GEOMETRY型 GEOGRAPHY型 空間関数
* [システムテーブル](https://docs.aws.amazon.com/ja_jp/redshift/latest/dg/c_intro_STL_tables.html)
  * STL_ALERT_EVENT_LOG
  * STL_USAGE_CONTROL
  * STL_QUERY_METRICS
  * STL_PLAN_INFO 

#### Redshift Spectrum
* S3(Parquet,ORC,JSON,CSV,etc)

#### OpenSearch Service
* Provisioned,Serverless

## 機械学習

#### SageMaker
* Neo 特定デバイス向けに最適化
* Search モデル検索
* RL 強化学習
* Ground Truth(Plus) データセット作成
* Studio IDE
* Experiments
* Notebooks ノートブック管理
* Debugger
* Autopilot モデル自動作成
* Training Compiler モデルトレーニングをコンパイルし高速化
* Processing 前後処理や評価処理
* Model Monitor
* Pipelines
* Feature Store 特徴量管理リポジトリ
* Data Wrangler
* Clarify バイアス検出
* Canvas
* Inference Recommender
* Serverless Inference
* Studio Lab
* ML Governance

## 可視化

#### QuickSight
* Enterprise Edition ではIAMとは別の権限管理が可能
  * [RLS](https://docs.aws.amazon.com/ja_jp/quicksight/latest/user/row-level-security.html)
* インメモリDB SPICE
* [ハンズオン](https://aws.amazon.com/jp/blogs/news/amazon-quicksight-handson-202006/)

#### Managed Service for Grafana

#### Managed Service for Prometheus
* PromQL
* EKS,ECSサポート


## データ移行
* Storage Gateway
* Database Migration Service
  * ストリームデータが発生する
* Snow Family
  * Snowball,Snowball Edge,Snowcone,Snowmobile
* DataSync
  * 高速移行
  * エラーハンドリング,差分チェック,整合性チェック,メタデータ考慮
  * オンプレからはAgent(仮想アプライアンス)を設置
  * S3,EFS,FSx <-> Agent,NFS,SMB,Snowcone
  * S3 <-> S3 on Outpost
  * DRのためのレプリケーション

#### Data Pipeline
* DynamoDB,RDS,Redshift,S3間でデータ移行と変換
* EC2,EMRで処理


## バックアップ

#### Backup