Open39

【試験対策】AWS Certified Data Engineer - Associate DEA-C01

issyissy

Contents

作成中

  • 試験概要
  • 参考になりそうな資料など
  • AWSサービス
  • 第 1 分野: データの取り込みと変換
  • 第 2 分野: データストア管理
  • 第 3 分野: データ運用とサポート
  • 第 4 分野: データセキュリティとガバナンス
  • ☆★☆受験体験記(x/x)☆★☆ ※未受験
issyissy
  • 試験概要
    • 試験ガイド
    • 試験コード
      • DEA-C01(2024/3/12~)
    • 求められる知識
      • 受験者がデータパイプラインを実装し、ベストプラクティスに従ってコストとパフォーマンスの問題をモニタリング、トラブルシューティング、最適化する能力を検証します。
    • 試験時間:130分
    • 問題数:65問
      • 試験ガイドでは、スコアに影響する設問が 50 問、採点対象外15問
    • 出題形式
      • 択一選択問題
      • 複数選択問題
    • 合格ライン:720 / 1,000点
    • 料金:20,000円/150 USD「試験の料金
    • 言語:英語、日本語、韓国語、中国語 (簡体字)
  • 試験内容
    • 第 1 分野: データの取り込みと変換 (採点対象コンテンツの 34%)
    • 第 2 分野: データストア管理 (採点対象コンテンツの 26%)
    • 第 3 分野: データ運用とサポート (採点対象コンテンツの 22%)
    • 第 4 分野: データセキュリティとガバナンス (採点対象コンテンツの 18%)
  • 対象サービス
issyissy

AWS 認定ジャーニーのプランニングでは、「データ分析」のパスに含まれます。

前提として「CLF」と「SAA」の取得を推奨されています。
本資格取得前に「SAA」を取得しておくことで、勉強がしやすくなると思われます。

issyissy
Hidden comment
Hidden comment
Hidden comment
Hidden comment
issyissy

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
      • ワークフローステップの再現、モデルおよびデータセットの系統の追跡、モデルのガバナンスと監査基準の確立
  • Amazon MSK (Managed Streaming for Apache Kafka)
    • 階層型ストレージ
      • クローズ済みのログセグメントをプライマリ→階層型へ
      • トピックの全体保持期間 (log.retention.ms) が 7 日間、ローカル保持期間 (local.retention.ms) が 12 時間
  • Amazon OpenSearch Service
    • OpenSearch Ingestion
      • サードパーティのソリューションを使用しなくても、ストリーミングデータを直接ロードできる
      • インデックスロールアップ
        • 要約されたインデックスに古いデータを定期的にロールアップすることで、ストレージコストを削減
  • AWS Database Migration Service(DMS)
  • AWS Step Functions
  • VPC エンドポイント
  • Amazon QuickSight
  • Amazon EventBridge
issyissy

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"
      
issyissy

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分散: テーブル全体のコピーがすべてのノードに分散。小規模なテーブルや更新頻度が低いテーブルに最適。
  • ソートキー:テーブルのデータを特定の列(カラム)でソートする基準になるキー。クエリパフォーマンスに影響する。WHERE/GROUP BY/ORDER BYや結合を含むクエリの実行速度を大幅に短縮可能。
    • 単一/複合ソートキー: 1つまたは複数列のソートキー。複合ソートキーは、1番目単独、1番目+2番目と、指定した順番で使用しないと効果を発揮できない。
    • インターリーブソートキー: 複数列のソートキー。複合ソートキーとの違いは、指定した列を単独で使用してもよいという点。複合ソートキーではできなかった、2番目単独が可能
      • ただし、定期的な VACUUM REINDEXが必要(実行コストが高い処理)なので、データ更新頻度が低く、結合パターンが複数あるテーブルに最適。
  • S3 にアンロード
    • SELECTクエリの結果をS3にエクスポートできる
    • 使用しなくなったテーブルをS3に退避してコスト最適化、必要に応じてロードまたはSpectrumで読み取る
  • マテリアライズドビュー
  • フェデレーテッドクエリ
    • 外部データベースのテーブルに直接クエリできる機能
    • 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にスナップショットのコピー権限を付与
    • ソースリージョンでクロスリージョンスナップショット
  • クエリパフォーマンス
  • ログファイル→S3 or CloudWatch
    • 接続ログ、ユーザーログ、ユーザーアクティビティログ
  • ワークロード管理(WLM)
    • 同時実行クエリとユーザーワークロードを管理および優先順位付けして、パフォーマンスとリソース使用率を最適化
    • 自動と手動
    • 同時実行スケーリング
      • WLM キューで同時実行スケーリングを有効にすると読み書きで自動スケーリング
  • ショートクエリアクセラレーション
    • 選択された短時間実行クエリを長時間実行クエリよりも優先
  • AWS Lake Formationデータ共有の制限事項
    • IAMAllowedPrincipal
    • 行X列フィルタリングを組み合わせ不可
    • テーブル名と列名は小文字でのみサポート
issyissy

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
    • フェデレーテッドクエリ
    • 外部の Hive メタストア
  • クエリ結果からテーブルを作成する (CTAS)
    • クエリ結果をS3に保存
    • クエリ結果を Parquet や ORC などのストレージ形式に変換可能
  • Athena のパフォーマンスを最適化
  • MSCK REPAIR TABLE
    • Hive 互換パーティションを追加した後でカタログ内のメタデータを更新
  • ALTER TABLE ADD PARTITION
    • テーブルのパーティション列を 1 つ以上作成
  • ワークグループ
  • StartQueryExecution
    • クエリがバックグラウンドで実行される。実行のレスポンスとして「QueryExecutionId」が返ってくる
    • QueryExecutionIdを条件にGetQueryExecutionで定期的にチェックする。statusでクエリの状態を判断する。結果はS3バケットの保存される。
  • EXPLAIN および EXPLAIN ANALYZE
    • EXPLAIN:論理実行または分散実行プランを表示
    • EXPLAIN ANALYZE: 分散実行プランと、SQL クエリ内の各オペレーションに関する計算コスト
issyissy

Amazon S3

  • 保管時暗号化
    • SSE-S3
      • キーの管理はAWS
      • キーはKMSに保管される(AWS管理)
      • コストかからない
      • 暗号化・復号は透過的
      • CloudTrailで追跡不可
    • SSE-KMS
      • キーの管理はユーザー
      • キーはKMSに保管される
      • キーの自動ローテーションを制御できる
      • コストがかかる
      • 暗号化・復号は透過的
      • CloudTrailで追跡可能
    • SSE-C
      • キーの管理はユーザー
      • キーはユーザーが保管する
      • 暗号化・復号はユーザーがPUT/GET時に実施する
    • メタデータは暗号化されない。メタデータに機密情報をいれないように
  • 転送時暗号化
    • 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
issyissy

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: ユーザーが選択した列を配列値に変換
issyissy

Amazon Kinesis Data Stream

  • データ保存24時間(デフォルト)~最大365日
  • initialPositionInStream = TRIM_HORIZON: 常にストリームの先頭から(最も古い)データを読み込む
  • プロビジョンドモード
    • 明示的なシャード数管理
    • キャパシティ計画が必要
    • コスト最適化可能
  • オンデマンドモード
    • 自動スケーリング
    • 過去30日間のピーク使用量に基づく
    • 最小4MB/秒からスタート
  • メトリクス
    • GetRecords.IteratorAgeMilliseconds:最後のレコードの経過時間
      • 高→データを読み取るコンシューマ数が少ない
    • ReadProvisionedThroughputExceeded:GetRecords 呼び出し回数
      • ホットシャード?シャード数を増やす
    • WriteProvisionedThroughputExceeded:スロットリングにより拒否されたレコードの数
      • ホットシャード?シャード数を増やす
  • Kinesis Data Streams → Firehose
    • Firehoseに対する直接の PutRecord および PutRecordBatch オペレーションは無効
issyissy

AWS Snow ファミリー

  • AWS Snowcone
  • AWS Snowball Edge
    • 最大80 TB
    • クラスター化
    • Compute Optimized:高度な機械学習やフルモーションビデオ分析などのユースケースに使用できる
    • Storage Optimized: ローカルストレージや大規模なデータ転送に最適
  • AWS Snowmobile
  • S3に保存して、標準→Glacierのライフサイクルポリシー
issyissy

Amazon QuickSight

  • エディション
    • Enterpriseエディション
      • 保管時のデータの暗号化
      • Microsoft Active Directory との統合
    • Standardエディション
issyissy

Amazon SQS

  • 標準キュー
    • 1 秒あたり非常に多い、ほぼ無制限の API コール数
  • FIFOキュー
    • FIFO キューの名前は .fifo サフィックス
    • 通常:1 秒あたり最大 300 メッセージ
    • バッチ:1 秒あたり最大 3,000 メッセージ
  • Amazon SQS標準キューからFIFOキューへの移行