Open39
【試験対策】AWS Certified Data Engineer - Associate DEA-C01
Contents
作成中
- 試験概要
- 参考になりそうな資料など
- AWSサービス
- 第 1 分野: データの取り込みと変換
- 第 2 分野: データストア管理
- 第 3 分野: データ運用とサポート
- 第 4 分野: データセキュリティとガバナンス
- ☆★☆受験体験記(x/x)☆★☆ ※未受験
作成中
- 試験概要
- 試験内容
- 第 1 分野: データの取り込みと変換 (採点対象コンテンツの 34%)
- 第 2 分野: データストア管理 (採点対象コンテンツの 26%)
- 第 3 分野: データ運用とサポート (採点対象コンテンツの 22%)
- 第 4 分野: データセキュリティとガバナンス (採点対象コンテンツの 18%)
- 対象サービス
AWS 認定ジャーニーのプランニングでは、「データ分析」のパスに含まれます。
前提として「CLF」と「SAA」の取得を推奨されています。
本資格取得前に「SAA」を取得しておくことで、勉強がしやすくなると思われます。
参考になりそうな資料など
AWS 公式
Skill Builder
- Exam Prep Standard Course: AWS Certified Data Engineer - Associate (DEA-C01) (Japanese)
- Exam Prep Official Practice Question Set: AWS Certified Data Engineer - Associate (DEA-C01 - Japanese)
Udemy
- AWS認定Data Engineer Associate(DEA-C01)試験 対策トレーニング
- 【日本語版】AWS Certified Data Engineer - Associate(DEA-C01) 模擬試験
- AWS Certified Data Engineer Associate 2024 - Hands On!
- Practice Exams | AWS Certified Data Engineer - Associate
- Practice Exams | AWS Certified Data Engineer Associate[2024]
その他
AWS サービス
※リンク先は、各AWSサービスについて記載したコメントへ
- Amazon Redshift
- Amazon Athena
- AWS Glue
- Amazon EMR
- Amazon Managed Workflows for Apache Airflow(MWAA)
- Apache Airflowを実行できるフルマネージドサービス
- OSSで既存の移植性などが理由の場合はMWAA、コスト/パフォーマンスはStep Functionsのほうが適する場合も
- Amazon S3
- Amazon Kinesis
- AWS Lake Formation
- Amazon SageMaker
-
SageMaker ML Lineage Tracking
- ワークフローステップの再現、モデルおよびデータセットの系統の追跡、モデルのガバナンスと監査基準の確立
-
SageMaker ML Lineage Tracking
- Amazon MSK (Managed Streaming for Apache Kafka)
-
階層型ストレージ
- クローズ済みのログセグメントをプライマリ→階層型へ
- トピックの全体保持期間 (log.retention.ms) が 7 日間、ローカル保持期間 (local.retention.ms) が 12 時間
-
階層型ストレージ
- Amazon OpenSearch Service
-
OpenSearch Ingestion
- サードパーティのソリューションを使用しなくても、ストリーミングデータを直接ロードできる
-
インデックスロールアップ
- 要約されたインデックスに古いデータを定期的にロールアップすることで、ストレージコストを削減
-
OpenSearch Ingestion
- AWS Database Migration Service(DMS)
- AWS Step Functions
- VPC エンドポイント
- Amazon QuickSight
- Amazon EventBridge
AWS Lambda
-
レイヤー
- 最大 5 つのレイヤー
- .zip でアーカイブされたもののみ。
- コンテナイメージとして定義された関数はサポート対象外
- 作成
aws lambda publish-layer-version --layer-name my-layer \ --description "My layer" \ --license-info "MIT" \ --zip-file fileb://layer.zip \ --compatible-runtimes python3.10 python3.11 \ --compatible-architectures "arm64" "x86_64"
Amazon Redshift
-
システムテーブル
- SVV: 一時的な STV テーブルへの参照を含むデータベースオブジェクトに関する情報
- SYS: プロビジョニングされたクラスターとサーバーレスワークグループのクエリとワークロードの使用状況
- STL: システムの履歴
- STL_QUERY: データベースクエリに関する実行情報
- STL_QUERY_METRICS: 完了したクエリについて、処理される列数、CPU 使用率、入出力、ディスク使用率などのメトリクス情報
- STV: 現在のシステムデータのスナップショットを含む仮想システムテーブル
- SVCS: インクラスターおよび同時実行スケーリングクラスターの両方のクエリに関する詳細
- SVL: メインクラスターのクエリに関する詳細
-
分散スタイル
- AUTO分散: テーブルデータのサイズに基づいて最適な分散スタイルを割り当てる。小規模(ALL)→データ増加(KEY)→適したキーがない(EVEN)
- 現在の分散スタイルを見るには
PG_CLASS_INFO
- CREATE TABLEで分散スタイルを指定しなかった場合のデフォルト
- 現在の分散スタイルを見るには
- EVEN分散: ラウンドロビン方式によって均等に分散。結合に使用しないテーブルやKEYとAUTOどっちがよいかわからないテーブルに最適。
- KEY分散: 特定の列に含まれている値に従って分散。
- 偏りがなく、カーディナリティが高い(=種類が多い)
- プライマリキー (または複合プライマリキーの列)
- ALL分散: テーブル全体のコピーがすべてのノードに分散。小規模なテーブルや更新頻度が低いテーブルに最適。
- AUTO分散: テーブルデータのサイズに基づいて最適な分散スタイルを割り当てる。小規模(ALL)→データ増加(KEY)→適したキーがない(EVEN)
-
ソートキー:テーブルのデータを特定の列(カラム)でソートする基準になるキー。クエリパフォーマンスに影響する。WHERE/GROUP BY/ORDER BYや結合を含むクエリの実行速度を大幅に短縮可能。
- 単一/複合ソートキー: 1つまたは複数列のソートキー。複合ソートキーは、1番目単独、1番目+2番目と、指定した順番で使用しないと効果を発揮できない。
- インターリーブソートキー: 複数列のソートキー。複合ソートキーとの違いは、指定した列を単独で使用してもよいという点。複合ソートキーではできなかった、2番目単独が可能
- ただし、定期的な
VACUUM REINDEX
が必要(実行コストが高い処理)なので、データ更新頻度が低く、結合パターンが複数あるテーブルに最適。
- ただし、定期的な
-
S3 にアンロード
- SELECTクエリの結果をS3にエクスポートできる
- 使用しなくなったテーブルをS3に退避してコスト最適化、必要に応じてロードまたはSpectrumで読み取る
-
マテリアライズドビュー
- 実行された SQL クエリに基づいて事前計算された結果
- その時点でのスナップショット
-
マテリアライズドビューの更新
-
REFRESH MATERIALIZED VIEW
で手動更新 - OR クエリエディタ v2 でスケジュールされたクエリでスケジュール化
-
- ベースとなるテーブルにはアクセスしない
-
マテリアライズドビューへのストリーミング取り込み
- Amazon Kinesis Data Streams
- Amazon Managed Streaming for Apache Kafka
- 実行された SQL クエリに基づいて事前計算された結果
-
フェデレーテッドクエリ
- 外部データベースのテーブルに直接クエリできる機能
- RDS for PostgreSQL / MySQL
- Aurora PostgreSQL / MySQL
-
Redshift SpectrumでS3から読み取り
- パフォーマンス向上
- 大きなファクトテーブルは Amazon S3 に置き、使用頻度の高い小さなディメンションテーブルはローカルの Amazon Redshift データベースに置く
- Apache Parquet 形式のデータファイル
- パーティション
- AWS Glue の統計ジェネレータを使用して、AWS Glue Data Catalog テーブルの列レベルの統計を計算
-
Redshift SpectrumとAWS Lake Formation
- データベース、テーブル、および列レベルのアクセスポリシー
- パフォーマンス向上
-
データの共有
- Redshift クラスター間で、または他の AWS サービスとの間で安全にデータを共有
-
別の AWS リージョンに AWS KMS暗号化スナップショットをコピーする
- ターゲットリージョンでKMSにスナップショットのコピー権限を付与
- ソースリージョンでクロスリージョンスナップショット
- クエリパフォーマンス
-
Amazon Redshift テーブル設計のベストプラクティス
- ソートキー
- 分散スタイル
- 自動圧縮
-
自動テーブル最適化
- ソートキーとディストリビューションキーを自動で適用
- クエリ内のデーブルで VACUUM コマンド
- クエリ内のテーブルで ANALYZE コマンド
-
STL_ALERT_EVENT_LOG テーブルを確認し、クエリの潜在的な問題を特定
- 原因(event列)と推奨される 解決策(solution列)
- クエリアラートの確認
-
Amazon Redshift テーブル設計のベストプラクティス
- ログファイル→S3 or CloudWatch
- 接続ログ、ユーザーログ、ユーザーアクティビティログ
-
ワークロード管理(WLM)
- 同時実行クエリとユーザーワークロードを管理および優先順位付けして、パフォーマンスとリソース使用率を最適化
- 自動と手動
-
同時実行スケーリング
- WLM キューで同時実行スケーリングを有効にすると読み書きで自動スケーリング
-
ショートクエリアクセラレーション
- 選択された短時間実行クエリを長時間実行クエリよりも優先
-
AWS Lake Formationデータ共有の制限事項
- IAMAllowedPrincipal
- 行X列フィルタリングを組み合わせ不可
- テーブル名と列名は小文字でのみサポート
Amazon Athena
- サポートされるデータフォーマット
- CSV、JSON、Avro(行指向)、Parquet・ORC (列指向)
- Snappy、Zlib、LZO、Gzipなど
- パーティション
CREATE EXTERNAL TABLE my_ingested_data2 ( ... ) ... PARTITIONED BY ( day STRING, hour INT ) LOCATION "s3://amzn-s3-demo-bucket/prefix/" TBLPROPERTIES ( "projection.enabled" = "true", "projection.day.type" = "date", "projection.day.format" = "yyyy/MM/dd", "projection.day.range" = "2021/01/01,NOW", "projection.day.interval" = "1", "projection.day.interval.unit" = "DAYS", "projection.hour.type" = "integer", "projection.hour.range" = "0,23", "projection.hour.digits" = "2", "storage.location.template" = "s3://amzn-s3-demo-bucket/prefix/${day}/${hour}/" )
- データソース
- S3
- Athenaリージョンと異なっても利用可能
- データをリージョン間で移動できない場合に利用するメリットあり。
- ただし、クエリ実行時にデータ転送がクエリパフォーマンスに影響を与えたり、データ転送料金などがかかるなどのデメリットもある
- 同一リージョンのほうがクエリを最適化できる
- AWS Glue Data Catalog
- フェデレーテッドクエリ
- 複数のデータソースをAthenaで結合できる
-
使用可能なデータコネクタ
- 例)DynamoDB、RDS、Redshift、CloudWatch Logsなど
- 外部の Hive メタストア
- S3
-
クエリ結果からテーブルを作成する (CTAS)
- クエリ結果をS3に保存
- クエリ結果を Parquet や ORC などのストレージ形式に変換可能
-
Athena のパフォーマンスを最適化
- クエリ
- 「大きいテーブル 左 ⇔ 右 小さいテーブル」の順に
- 大きい結果は、UNLOAD を使ってS3に書き出す
- 「UNLOAD (SELECT col_name[, ...] FROM old_table) TO 'S3://...'」
- データ
- パーティション化
- 列指向
- Parquet および ORC
- 参考:Top 10 Performance Tuning Tips for Amazon Athena
- Amazon Athena クエリ結果の再利用によりコストを削減し、クエリパフォーマンスを向上
- クエリ
-
MSCK REPAIR TABLE
- Hive 互換パーティションを追加した後でカタログ内のメタデータを更新
-
ALTER TABLE ADD PARTITION
- テーブルのパーティション列を 1 つ以上作成
-
ワークグループ
- ユーザ・チーム等でクエリ実行やクエリ履歴を分離することが出来る
-
ワークグループを使用してクエリのアクセスとコストを制御する
- ユーザーのアクセス制御
- クエリのデータスキャン量制御
- ワークグループ全体のデータスキャン量制御
-
StartQueryExecution
- クエリがバックグラウンドで実行される。実行のレスポンスとして「QueryExecutionId」が返ってくる
- QueryExecutionIdを条件にGetQueryExecutionで定期的にチェックする。statusでクエリの状態を判断する。結果はS3バケットの保存される。
-
EXPLAIN および EXPLAIN ANALYZE
- EXPLAIN:論理実行または分散実行プランを表示
- EXPLAIN ANALYZE: 分散実行プランと、SQL クエリ内の各オペレーションに関する計算コスト
Amazon S3
-
保管時暗号化
- SSE-S3
- キーの管理はAWS
- キーはKMSに保管される(AWS管理)
- コストかからない
- 暗号化・復号は透過的
- CloudTrailで追跡不可
- SSE-KMS
- キーの管理はユーザー
- キーはKMSに保管される
- キーの自動ローテーションを制御できる
- コストがかかる
- 暗号化・復号は透過的
- CloudTrailで追跡可能
- SSE-C
- キーの管理はユーザー
- キーはユーザーが保管する
- 暗号化・復号はユーザーがPUT/GET時に実施する
- メタデータは暗号化されない。メタデータに機密情報をいれないように
- SSE-S3
- 転送時暗号化
- HTTPS(TLS)
-
S3 データ整合性モデル
- GET、PUT、LIST 操作のすべて、およびオブジェクトタグ、ACL、またはメタデータを変更する操作に強力な整合性
-
ライフサイクルポリシー
- S3 標準 – IA や 1 ゾーン – IA は30 日後にしか移動できない
- リアルタイムで参照できなくなる
- S3 Glacier Flexible Retrieval または S3 Glacier Deep Archive
-
設定の競合
- 完全な削除は、移行より優先されます。
- 移行は、削除マーカーの作成より優先されます。
- オブジェクトが S3 Glacier Flexible Retrieval と S3 Standard-IA (または S3 One Zone-IA) 移行の両方の対象になる場合、Amazon S3 は S3 Glacier Flexible Retrieval 移行を選択します。
- S3 インベントリ:メタデータのリストをCSV、ORC、Parguetで取得、S3バッチ操作への入力に使用可能
- CRR(クロスリージョンレプリケーション):新規オブジェクトを異なる AWS リージョン 内の Amazon S3 バケット間でオブジェクトをコピーする。
- ストレージレンズ:ストレージの使用状況とアクティビティの傾向
-
ストレージクラス分析
- ストレージアクセスパターンを分析し、適切なデータをいつ適切なストレージクラスに移行すべきかを判断できる
- STANDARD ストレージ→ STANDARD_IA (IA: 低頻度アクセス)
-
イベント通知
- 少なくとも 1 回配信、 分以上かかる場合もあり
- 通知先
- SNS
- SQS
- ※FIFOは対象外
- EventBridge→SQS FIFOとする
- Lambda
- EventBridge
-
バイト範囲のフェッチを使用する
- GET Object リクエストで HTTP ヘッダー Range を使用すると、オブジェクトのバイト範囲を取得して、指定した部分のみを転送できる
- バイト範囲リクエストの標準的なサイズは 8 MB または 16 MB
aws s3api get-object --bucket amzn-s3-demo-bucket1 --key folder/my_data --range bytes=0-500 my_data_range
- データのきめ細かいアクセス制御
- Lake Formation
- コンプライアンス管理
- S3→AWS DMS→Amazon Kinesis DataStreams
- 転送速度
- マルチパートアップロードとTransfer Acceleration
AWS Glue
抽出、変換、ロード (ETL) プロセスの検出、準備、統合、近代化を容易にするサーバーレスデータ統合サービス
- ワーカータイプ
- 標準
- G.1X
- G.2X
- 自動スケーリング or DPUを手動設定
- S3のゲートウェイVPCエンドポイント
- 接続エラー
- ルートテーブルに設定されているかチェック
- ジョブ
- ソースデータに接続して処理し、データターゲットに書き出すスクリプトを定義
- 汎用 Python スクリプト (Python シェルジョブ)
- AWS Glue Spark
ワークフロー
- 複数のGlue JobとCrawlerを並列/直列に依存関係を持たせてワークフローとして定義して、実行する
- 実行状態をモニタリング
- Step Functions との違い
- AWS Lambda 関数やその他の AWS サービスと統合
- Amazon MWAA
- Apache Airflow 向け
AWS Glue DataBrew
データのクリーニング、正規化、変換のためのフルマネージド型のビジュアルデータ準備サービス
- S3に保存された以下のデータフォーマットをサポート
- カンマ区切り値 (CSV)、Microsoft Excel、JSON、ORC、Parquet
- null の削除、欠損値の置き換え、スキーマの不整合の修正、関数に基づく列の作成など
-
レシピジョブ:データセット内のデータをクリーンアップおよび正規化
- 出力先:S3、Redshift、ODBCドライバ、RDS
-
プロファイルジョブ:データセットを分析、データプロファイルを作成
- ProfileColumns:評価するデータセットの列を設定
- DatasetStatisticsConfiguration:列間評価の設定
- ColumnStatisticsConfigurations:特定の列の設定
- COUNT_DISTINCT 集計関数
- FLAG_DUPLICATE_ROWS 関数
- NEST_TO_MAP: ユーザーが選択した列をキーと値のペアに変換
- NEST_TO_ARRAY: ユーザーが選択した列を配列値に変換
Amazon Kinesis Data Stream
- データ保存24時間(デフォルト)~最大365日
- initialPositionInStream = TRIM_HORIZON: 常にストリームの先頭から(最も古い)データを読み込む
- プロビジョンドモード
- 明示的なシャード数管理
- キャパシティ計画が必要
- コスト最適化可能
- オンデマンドモード
- 自動スケーリング
- 過去30日間のピーク使用量に基づく
- 最小4MB/秒からスタート
- メトリクス
- GetRecords.IteratorAgeMilliseconds:最後のレコードの経過時間
- 高→データを読み取るコンシューマ数が少ない
- ReadProvisionedThroughputExceeded:GetRecords 呼び出し回数
- ホットシャード?シャード数を増やす
- WriteProvisionedThroughputExceeded:スロットリングにより拒否されたレコードの数
- ホットシャード?シャード数を増やす
- GetRecords.IteratorAgeMilliseconds:最後のレコードの経過時間
-
Kinesis Data Streams → Firehose
- Firehoseに対する直接の PutRecord および PutRecordBatch オペレーションは無効
Amazon QuickSight
-
エディション
- Enterpriseエディション
- 保管時のデータの暗号化
- Microsoft Active Directory との統合
- Standardエディション
- Enterpriseエディション
Amazon EMR
- 3rdパーティライブラリ
Amazon SQS
- 標準キュー
- 1 秒あたり非常に多い、ほぼ無制限の API コール数
- FIFOキュー
- FIFO キューの名前は .fifo サフィックス
- 通常:1 秒あたり最大 300 メッセージ
- バッチ:1 秒あたり最大 3,000 メッセージ
- Amazon SQS標準キューからFIFOキューへの移行
AWS Database Migration Service
Amazon EventBridge
-
Amazon EventBridge とのサードパーティー統合
- イベント受信
- AWS のサービスからのイベント
- SaaS パートナーからのイベントの受信
- 送信
- イベント受信