この記事の概要
2024/12/22 に「AWS Certified Data Engineer - Associate(DEA-C01)」を受験しました。
その時の記録です。
試験の概要
世の中のデータ活用やAIの専門知識に対する需要に合わせ、今年度は3つのAWS認定資格が追加されました。
そのうち一番最初に正式版になった資格です。
AWSの公式ガイドには
- 「受験者がデータパイプラインを実装し、ベストプラクティスに従ってコストとパフォーマンスの問題をモニタリング、トラブルシューティング、最適化する能力を検証します。」
とあります。※AWS公式より引用:引用元
以前あった「AWS Certified Data Analytics – Specialty (DAS)」と「AWS Certified Database – Specialty (DBS)」をあわせて難易度をアソシエイトに合わせた感じでしょうか?
◼︎ 試験要項
項目 | 値 |
---|---|
問題数 | 65問 (うち15問は採点対象外) |
試験時間 | 130分 |
受験料 | ¥20,000 (税別) |
合格ライン | 100~1000点中720点 |
受験資格 | なし |
有効期限 | 3年 |
※料金は為替レートに合わせて毎年4月に見直されます。アソシエイト試験は2024年度¥5,000値上がりしました。
https://aws.amazon.com/jp/certification/policies/before-testing/#Exam_pricing
その他アソシエイト資格と違いDEAは現時点では上位資格、下位資格なしです。(今後プロフェッショナルやファンデーショナルが追加されるのかも知れません。)
◼︎ 出題範囲
分野 | 出題割合 |
---|---|
第 1 分野: データの取り込みと変換 | 34% |
第 2 分野: データストア管理 | 26% |
第 3 分野: データ運用とサポート | 22% |
第 4 分野: データセキュリティとガバナンス | 18% |
※2024/12時点の最新バージョン(Ver.1.1)のものです。
バージョンアップで範囲等は変更されるので、こちらも受験時は公式サイトをご確認ください。
AWS Certified Data Engineer - Associate 認定
勉強開始前の状態
AWSで動いているアプリの開発/運用の業務を7年程度、現在も継続中。
AWS認定は昨年までに12個取得済み。
- AWS認定ソリューションアーキテクトを受験した時の話
- AWS認定デベロッパーアソシエイトを受験した時の話
- AWS認定SysOpsアドミニストレーターアソシエイトを受験した時の話
- AWS認定ソリューションアーキテクトプロフェッショナルを受験した時の話
- AWS認定DevOpsエンジニアプロフェッショナルを受験した時の話
- AWS認定セキュリティ - 専門知識を受験した時の話
- AWS認定データベース - 専門知識を受験した時の話
- AWS認定アドバンストネットワーキング - 専門知識を受験した時の話
- AWS認定データ分析 - 専門知識を受験した時の話
- AWS認定機械学習 - 専門知識を受験した時の話
- AWS認定SAP on AWS - 専門知識を受験した時の話
※CLFはあとから取得したので特に書くこともなく記事にしていません。
勉強に使ったもの
1. WEB問題集(非公式)
個人的に
- 1問ごとに答え合わせできる ※65問解いてから答え合わせだと解いたときの記憶が薄まる上に問題文を読み直さないといけない、途中で終了できないと隙間時間で使いづらい。
- 十分な問題数がある(本番試験3回分程度はほしい)
という条件に一致するもので探してみましたが、現時点(2024/11)ではWhizlabsぐらいしかありませんでした。
2. AWS公式模擬試験
AWS Skill Builderで無料で提供されている20問の模擬試験。実試験に近い内容が出題されるので今回も実施しておきます。
今回はすでにある程度試験範囲について理解しているので利用しませんでしたが、これから学習される方は公式E-Learningもおすすめです。
3. AWSアカウント
学習の中で気になったところは実際にマネコンやCLIで触って確認します。
勉強(試験準備)の流れ
だいたいいつもの流れですが今回はAssociateレベルということで、ある程度の知識はすでにあるはずなので問題集を中心に進めていきます。
1. 試験ガイドを読む
今回もはじめに、公式サイトの「試験ガイド」を読みます。
データ分析やBIなどに使われるサービスを中心に出題されるようです。
2. サンプル問題と模試を実施する
次に模擬試験をやってみます。
無料なので気軽に実施できます。
※公式のサンプル問題はなくなったようです。
3. 問題集を解く
あとは問題をどんどん解いて
- 解答/解説でわからなかった部分を調べる。
- 覚えたほうが良さそうな部分はノート(デジタルのほうが速いのでデジタルで)に書き出す。
を繰り返します。
今回は問題集395問を1周実施しました。
出題範囲のサービスの中で利用経験の少ないRedshiftとGlueが正答率が低かったので、間違えたところを調べながら書き出して理解を深めました。
4. 復習
最後に間違えた問題や気になったところについて公式ドキュメント等の再確認をしました。
勉強時間
およそ20時間程度
受験後
結果はスコア765で合格。
第3分野の「データ運用とサポート」があまり特典できなかったようです。
データ分析の経験があまりなく「データの検証」や「パフォーマンスチューニング」などの理解が浅かったので、そのあたりかもしれません。
やはりRedshiftやGlue、Athena、Lake Formation、S3などを中心とした出題で、廃止された「AWS Certified Data Analytics - Specialty(DAS)」とから最近のトレンドに合わせてGlueなどのサーバレスを増やし、EMRやKinesisなどを減らした出題範囲でAssociateレベルに合わせて難易度が下げられた(深い知識を求める問いが減った)ような印象でした。
今年度は残るAIFとMLAも取得してALL Certificate継続を目指します。
勉強になったことメモ
試験のために勉強しながらまとめたノート
※ここに書いてあることは、あくまで私が理解が足りないと感じ、覚えたかったことだけです。試験範囲を網羅はしていません。
アクセスコントロール
RBACとABAC
アクセス制御のタイプは大きく2つに分けられる
タイプ | 特徴 |
---|---|
ロールベースアクセスコントロール(RBAC) | 「マーケティング」や「運用」などのロールに基づいたアクセス許可を定義する、比較的シンプルなアクセス制御にできる |
属性ベースアクセスコントロール(ABAC) | 「ユーザー」「リソース」「環境」「アプリケーションの状態」などの属性に基づいたアクセス許可を定義する、柔軟で動的なアクセス制御ができる |
これら2つを組み合わせたハイブリッドアプローチも可能
※例:運用者は深夜の時間帯かつ調査用のログにのみアクセスできる、など
BIとDWH
ルックアップテーブル(LUT)
入力値に対する出力値の割当を単純なテーブル構造にしたもの
キーが入力値、バリューが出力値となる連想配列をイメージすればいい
ファクトテーブルとディメンションテーブル
DWHのテーブル構成はスタースキーマで定義される
スタースキーマのテーブル構成の中で集計対象となる値を保持するテーブルが「ファクトテーブル」
ファクトテーブルで保持される外部キーの参照先となるマスタテーブルが「ディメンションテーブル」
データ分析の観点にあわせて結合先のディメンションテーブルを選択する
Amazon Redshift
分散スタイル
スタイル | 特徴 |
---|---|
AUTO分散 | テーブルのデータサイズに基づいて最適な分散スタイルを割り当てる |
EVEN分散 | ラウンドロビン方式で均等分散する、結合しない場合に最適 |
キー分散 | 特定の列の値が一致するデータを同じノードスライスに保存する、頻繁に使われる結合のキーとなる列がある場合に適している |
ALL分散 | テーブル全体のコピーがすべてのノードに分散される、更新頻度が低く小さいテーブルに適している |
マテリアライズド・ビュー
マテリアライズド・ビューを利用するとクエリ結果を事前に保存することで繰り返されるクエリを高速化できる。
フェデレーテッドクエリ
Redshiftではフェデレーテッドクエリを利用することでRDSまたはS3へクエリできる
ゼロETL統合
ゼロETL統合を利用するとAmazon RedshiftからAmazon Auroraのデータを追加のインフラ構築なしでリアルタイム分析できる。
データ共有
Redshiftのデータ共有を使用すると追加コストなしで、複数のRedshiftクラスター間でデータを共有できる。
自動テーブル最適化
テーブルを継続的に監視し、ソートキーとディストリビューションキーを適用することでパフォーマンスを自動的に最適化してくれる。
ワークロード管理(WLM)
ワークロード内のクエリの優先順位を管理することで、クエリを効率化する。
自動WLMと手動WLMがある。
列圧縮
列圧縮を有効にすると、各列のデータが圧縮されストレージコストの削減とクエリパフォーマンス向上につながる。
RedshiftではデフォルトでENCODE AUTO
が設定されており、すべての列の圧縮エンコードが自動的に管理される。
テーブル作成時に圧縮タイプまたは圧縮エンコードを指定することもできる。
自動バキューム削除
Redshiftでは削除時に対象行が削除対象としてマークされるだけで、物理削除はされない。
VACUUM
クエリを実行するとこういった削除対象行が開放され再ソートされる。
Redshiftは一定期間で自動的に削除対象行の開放を行ってくれる。
Redshift Spectrum
Redshift Spectrumを利用するとテーブルにデータをロードすることなく、S3のファイルから構造化および半構造化されたデータを取得できる。
ユーザ定義関数(UDF)
SELECT
文またはPythonのスクリプトを事前に関数として保存しておき、繰り返し実行することができる。
また、「AWS Lambda UDF」ではLambda関数を利用することでPython以外の言語のスクリプトも実行できる。
デフォルトポート
Redshiftのデフォルトポートは5439
AWS Glue
AWS Glueワークフロー
AWS Glueワークフローを使うことで複数のクローラー、ジョブ、トリガーなどを含むETLアクティビティの作成、視覚化などのオーケストレーションができる。
圧縮形式
Glueでは適切なデータ圧縮形式を選択することがパフォーマンス向上につながる
アルゴリズム | 分割可能 | 圧縮比 | 圧縮/解凍速度 |
---|---|---|---|
Gzip (DEFLATE) | No | 高 | 中 |
Bzip2 | Yes | 非常に高い | 遅 |
LZO | No | 低 | 速 |
Snappy | No | 低 | 非常に速い |
Bzip2圧縮はGzipより高い圧縮率で、分割可能な形式である、計算不可が高いため、頻繁にクエリされるデータには適さない。
Glueジョブタイプ
タイプ | 特徴 |
---|---|
Pythonシェル | 計算能力をあまり必要としないワークフローに適している |
Spark(PySpark) | 高い計算能力を必要とするワークフローに適している |
Spark(Scala) | 高い計算能力を必要とするワークフローに適している |
PIIの取り扱い
ジョブでの検出と処理
DataBrewでのマスキングと難読化
Glue Data Catalog
データセットに関するメタデータを保存する一元化されたリポジトリ。
データソースを自動的にスキャンしてメタデータを抽出するクローラーを使用してデータカタログに入力できる。
Glue DataBrew
コードを記述せずにデータをクリーンアップおよび正規化できる視覚的なデータ準備ツール。
AWS Glue DataBrew はビジュアルデータ準備ツールであり、コードを記述しなくてもデータのクリーンアップと正規化を実行できる。
DataBrewでデータ準備プロセス中にPIIデータを難読化するためのデータマスキングもできる。
Glue Data Quality
ETLジョブ内でのデータ検証ルールを適用できる。
ジョブのブックマーク
Glueにはジョブの実行を保持する「ブックマーク」機能がある。
これにより、過去の実行で既に処理されたデータの再処理をスキップさせることができる。
ブックマークは対象データへのポインタではなく、最後に読み込んだキー列の値などで進行状況を記録する。
AWS Lake Formation
AWS上にデータレイクを構築し、アクセス制御等の管理を行えるサービス。
Lake Formation を使用すると、データベース、テーブル、列、行、セルのレベルできめ細かなアクセス許可を管理できる。
Amazon Athena
パフォーマンスチューニング
クエリ最適化
Athena特有のクエリ最適化方法がいくつかある
- テーブル結合は
JOIN
句の左に大きなテーブル、右に小さなテーブルを指定する - LIKEの代わりに
regexp_like()
による正規表現を利用する
など
UNLOAD
UNLOAD
を利用することで大きな結果を生成するクエリを高速化できる
パーティションインデックス
大量のパーティションが存在する場合、パーティションインデックスとパーティションフィルタリングによりAthenaからのクエリパフォーマンスが改善できる可能性がある
パーティションの定期更新
パーティション更新はMSCK REPAIR
クエリでも行えるが、Glueのクローラを設定することでより簡単に定期更新できる。
サマリテーブル
CREATE TABLE AS SELECT
(CTAS)クエリを利用することで、SELECT
結果から新しいAthenaテーブル(サマリテーブル)を作成できる、Athenaはこの結果作成されたデータをS3に保存する。
このサマリテーブルに更にクエリすることで、事前にParquetなどへのフォーマット変換や必要データのみを抽出しておけるようになり、パフォーマンス向上に繋がる。
AWS StepFunctions
ワークフローの種類
ステートマシン作成時のみワークフローのタイプを選択できる。
種類 | 実行回数 | 特徴 |
---|---|---|
標準ワークフロー | 1回限りのワークフロー実行(非冪等) | 長期間(最大1年)の実行が可能 |
同期エクスプレスワークフロー | 最大1回のワークフロー実行 | 最大5分間の実行、ワークフローが完了するまで待機してから結果を返す |
非同期エクスプレスワークフロー | 少なくとも1回のワークフロー実行 | 最大5分間の実行、ワークフローの完了まで待機しない |
AWS CloudTrail
CloudTrail Lake
イベントをデータストアに蓄積し、SQLベースのクエリを実行できる
CloudTrail Insights
APIコールのコール量やエラー率などのパターンを分析し、異常なアクティビティはInsghtsイベントとして記録される。
データイベントと管理イベント
以下のようなデータを操作するアクティビティは「データイベント」に分類され、デフォルトでは記録されない。
- S3のオブジェクトレベルAPIアクティビティ(GetObject、DeleteObject、PutObject API オペレーションなど)
- Lambda関数呼び出しアクティビティ (InvokeFunction API オペレーションなど)
- DynamoDBオブジェクトレベルのAPIアクティビティ(PutItem、DeleteItem、UpdateItem API オペレーションなど)
S3
S3バッチオペレーション
S3の大量のオブジェクトに一括処理を行うことができる。
S3 Object Lambda
S3オブジェクトへのアクセス時にLambdaによる独自コードの処理をしてから返す事ができる。
S3 Access Grants
Access Grantsを利用するとIAMユーザや社内ADで管理されるユーザに対するS3へのきめ細かいアクセス制御を実現できる。
Snowファミリー
サービス | スペック | 特徴 |
---|---|---|
Snowcone | 2 つの vCPU、4 GB のメモリ、8 TB のハードディスクドライブ (HDD) | 軽量で低コスト |
Snowcone SSD | 2 つの vCPU、4 GB のメモリ、14 TB のソリッドステートドライブ (SSD) | 軽量で低コスト |
Snowball Edge | 複数のタイプが存在する、ストレージは80TB~210TB | データ保管だけでなくコンピューティングを行える |
Snowmobile | 100PBのストレージ | 大型トラックを利用し大量データを移行 |
※2024/11/12をもってSnowconeはサービス終了
※Snoball Edgeも旧デバイス(Snowball Edge Storage Optimized 80TB デバイス、Snowball Edge Compute Optimized with 52 vCPUs デバイス、および Snowball Edge Compute Optimized with GPU デバイス)は2025/11/12でサポート終了予定
※Snowmobileも2024/04にサービス終了を発表済み
AWS Data Exchange
サブスクライブ方式のデータ交換サービス
Amazon MWAA
Amazon Managed Workflows for Apache Airflow(MWAA)はApache Airflow のマネージドオーケストレーションサービスである。
MWAAを利用することで複雑なETLワークフローをオーケストレーションし、AWSサービスとシームレスに統合する事ができる。
Amazon MSK
Amazon Managed Streaming for Apache Kafka (Amazon MSK) は、Apache Kafka を使ってストリーミングデータを処理するアプリケーションの構築および実行を可能にするフルマネージドサービスである。
Amazon Managed Service for Apache Flink
Amazon Managed Service for Apache Flink(旧Amazon Kinesis Data Analytics for Apache Flink)はJava、Scala、Pythonを使用してストリーミングデータをSQL処理および分析できる。
Kinesis
Kinesis Data StreamsにはLambda統合機能がある。
ストリームデータで特定の条件を検出したときのみLambda関数を実行するようにフィルタリングを設定することもできる。
ストリーミングサービスの選択
Kinesis、Kafka、Flinkなどからユースケースに合わせてストリーミングサービスを選択する。
Apache FlinkとApache Kafka
Apache FlinkとApache Kafkaはいずれもストリーミング処理に利用する。
一般的にKafkaはイベントストリーミングの提供、Flinkはそのストリームからデータを処理するために使用される。
SageMaker
Amazon SageMaker ML 系統の追跡(ML Lineage Tracking)はデータ準備からモデルデプロイまでの機械学習 (ML) ワークフローのステップに関する情報を作成して保存する。
追跡情報を使用してワークフローステップの再現、モデルおよびデータセットの系統の追跡、モデルのガバナンスと監査基準の確立を行うことができる。
Amazon OpenSearch Service
OpenSearch Ingestion
Amazon OpenSearch Serviceドメインにストリーミングデータを直接ロードできる機能。
インデックスロールアップ
インデックスロールアップ:OpenSearchで古いデータをより粗い時間単位のデータに要約(ロールアップ)することで少ないコストで長期間データを保持できる。
Amazon AppFlow
AppFlowを使用するとサードパーティのSaaSとAWSサービスを統合できる、例えばSaaSのデータをS3に保存するなどができる
データ移行の手段
オンプレからAWSへのデータ移行にりようできるサービスは複数ある、要件により使い分ける
サービス | 特徴 |
---|---|
DMS | DBの移行 |
DataSync | ファイルストレージの移行 |
Transferファミリー | FTPなどでのオンプレとS3の接続 |
Snowファミリー | 物理アプライアンスによる回線を利用しないデータ移行 |
Delta Lake
Linux Foundation Delta Lake はビッグデータ分析用のデータフォーマット、Apache Parquetにトランザクションログの機能が追加されたもの。
AWS Configの一元管理
コンフォーマンスパックを利用すると組織全体に対するAWS Configによるポリシーの定義や監査レポートの取得などが行える。
Transferファミリーのマネージドワークフロー
Transferファミリーでファイルのアップロード後の処理を自動的かつ簡単に実行できるようにする機能として「マネージドワークフロー」がある。
S3Access Grants
RDSのIAM認証
RDSでIAM認証に対応しているのはMySQL, PostgreSQL, MariaDB
QuickSightのマニフェストファイル
QuickSightではソースとなるS3に様々な列数のファイルがある場合、Athenaで結合してから利用する。
列数が同一の場合はJSON形式のマニフェストファイルにより結合の仕方を指定すればAthenaは不要になる。
Secrets Manager SQL接続ドライバー
SecretsManager SQL接続ドライバーを利用するとシークレットは1時間キャッシュされる。
DMSの変換ルール式
DMSではJSON形式のルールやSQLite式によりデータマスキングなどの処理ができる。
EMRのファイルストレージ
FS | 特徴 |
---|---|
HDFS | 高速なエフェメラル(一時)ストレージ |
EMRFS | S3を利用したストレージ |
ローカルファイルシステム | インスタンスストアを利用 |
Amazon S3ブロックファイルシステム | レガシーなFS、現在は非推奨 |
一時データの保存はHDFSを使うことで低レイテンシーにできる場合がある。