AWS Certified Data Engineer - Associate

この記事で分かること

  • AWS Certified Data Engineer - Associate(DEA)試験について

試験の難易度

難易度:

この記事では、アソシエイトレベル「AWS Certified Data Engineer - Associate(DEA)」について纏めたいと思います。

2024/03/12にリリースされた2024/6時点では最も新しい試験です。廃止される「AWS Certified Data Analytics - Specialty(DAS)」が専門知識からアソシエイトに格上げされるイメージで合っているかと思います。
これはAWSブログでも語られていることで、専門知識を廃止してファンデーション、アソシエイト、プロフェッショナルに力を入れるとのこと。AWS Certified Data Analytics – Specialty (DAS) と同時期に廃止されるAWS Certified Database – Specialty (DBS) と AWS Certified: SAP on AWS – Specialty (PAS)は、DB本体の知識とDBを移行する知識を統合してこの先新しいアソシエイトorプロフェッショナルの試験に追加されるのかな、と想像しています。

勉強方法

「AWS Certified Data Analytics - Specialty(DAS)」を取得しているからといって簡単とは言えなかったです。実際ギリギリの合格でした。DASの専門性は落としつつも範囲が広くなり総合的に良い難易度になった、というのが正直な感想です。また2024/6現在、参考書は無くWeb問題集も少ないため現時点では難易度が高いとも思われます。

私はUdemyの以下の模擬問題集をベースに勉強しました。

Practice Exams | AWS Certified Data Engineer Associate[2024]

勉強方法やWeb問題集等についての紹介は以下記事を参考にしてください。

試験勉強方法について
試験勉強方法について
私の経験を踏まえた試験勉強方法をご紹介します。

参考書

前述のとおり参考書は2024/8現在存在しないのですが、以下の書籍が非常に勉強になりました。AWS Certified Data Analytics – Specialty (DAS) を取得する際に読んだ書籍ですが、DEAでも十二分に役に立つと思います。

実際に数万行?数十万行?のサンプルデータをS3に取り込んでGlue(ETL)を動かしそしてRedshiftで分析する、といった一通りのデータ分析をハンズオンで経験できます。自身のAWSアカウントを使用するため、当然費用は発生しますが私は千円くらいでした。何日かRedshiftを無駄に動かしてしまって千円なのでもっと注意深くやれば数百円だと思います。ベンダーの研修受けたら数万~十数万円はするでしょうし、千円でこの内容を試せるのであれば安過ぎる。素晴らしい一冊だと思います。

データレイクは個人的には敷居が高く何をどうすればよいのか分からない分野でもありましたが、この書籍のおかげで敷居が下がりました。試験対策の観点で言えば知識を網羅した本ではないので、その点については考慮ください。ただそれを踏まえても以下のメリットがあると思います。

・AWSにおけるデータレイク構築の一通りの流れや各種サービスを操作できる
・資格試験の勉強内容をハンズオンで実感できる

特にGlueはデータ分析を専門にしていないと使用しないと思いますので、試験勉強の際には非常に助かりました。「Glueってなに!?」ということがほとんど無くすんなり頭に入ってくる感じは今でも忘れません。

重要ポイント

ETL
データの抽出(Extract) / 変換(Transform) / 書き出し(Load) の頭文字でデータ分析においてはまずこのETLという用語に慣れる必要があります。

AWS Glue
接着剤という意味のサービスです。DIYなどでよく出てくる「グルーガン」のグルーですね。上述のETLを実現するAWSのマネージドサービスです。なお、細かいですがAWS Glueの機能の一つとして「AWS Glue Crawler」や「AWS Glue Brew」といったものがあります。ただこれらは複雑な機能となっているので、本記事においてはAWS Glueと同列の記載になっています。

・ETL
新規列が追加されたり既存の列名が変更されスキーマが頻繁に変更されるCSVなどを例えばRedshiftスキーマと一致するようにETLする。

・ジョブブックマーク機能
Glueジョブの高速化に関わる機能の筆頭で、新規データや変更データのみを処理しジョブの実行を高速化させる。ブックマークとは本に挟む「しおり」のこと。

・列指向
データセットを行指向(例:CSV形式)から列指向(例:Parquet)に変換するとジョブの処理効率が向上する。特に特定の列に頻繁にアクセスするジョブの場合効率化が顕著になる。ブックマーク機能と並んでジョブの最適化に関わってくる項目。CSVやJSON、XMLといった様々な形式のファイルがソースとなる場合、全てPaquet形式に変換してクエリの効率化を図る。

・パフォーマンス
Glue ETLジョブはCloudWatchにてメトリクス監視が可能。ジョブログと合わせてパフォーマンスのボトルネックやエラーを確認し最適化を図る。

・トラブルシューティング
今まで上手くいっていたジョブが断続的にエラーになったりメモリ不足などになった場合は、ジョブの煩雑さが原因の可能性あり。不要なシャッフルや大規模な結合など非効率的な変換がスクリプトに組み込まれていないかを確認する。

・ジョブタイプ
Spark、ストリーミングETL、Pythonシェルの3つのジョブタイプが存在する。特にSparkタイプは大規模のETL処理に向いている。

・データベースへの接続
JDBCおよびODBCコネクタ組み込まれておりデータベースにアクセス可。データベース認証情報はAWS Secrets Managerを使用することでセキュリティを担保する。

・スキーマレジストリ
スキーマとは設計図のことで、設計図とおりにデータの送受信をしているかを検出する機能。分かりやすい例としては、とあるフィールドを「price」(価格)として定義して、それをストリーミングデータの送信側(producer)と受信側(customer)のやり取りの中で変わっていないかを検出する。
例:priceをprices等で送受信していないか、の検出
以下5つのサービスと統合されている。
Apache Kafka
Amazon Managed Streaming for Apache Kafka
Amazon Kinesis Data Streams
Amazon Managed Service for Apache Flink
AWS Lambda

・カタログ化
S3やデータベースのデータをカタログ化することを指す。どういったデータがあるのかGlueが検知してカタログ化する、とまずは覚える。CSVやJSON、XMLといった様々な形式のソースファイルを、全てPaquet形式に変換してカタログ化するというのが典型的な流れ。カタログ化させるときのサービスは後述のAWS Glue Crawler参照。

AWS Glue Crawler
Crawlは虫などが這うという意味なので、Crawlerのアイコンも虫になっています。前述のカタログ化に必要不可欠な機能であり、データを探索するイメージを持つと分かりやすいかと思います。ちなみに水泳のクロールもこれです。

AWS Glue DataBrew
AWS Glueのコンポーネントの一つで、データレイクからペタバイト規模のデータを読み込み視覚化、クリーンアップ、正規化するサービス(機能)。データの重複、欠落、不整合などの品質の問題をノンコーディングで自動的に分析および特定をしてくれます。Brewは「ブリュー」は"醸造"という意味で、このサービスにデータを放り込めば不完全なデータが利用可能なデータに醸成されるという意味合いから付けられたのかと想像します。ビールのブランドでもブリューは度々見ますよね。

S3
大量のデータの保存方法(バケットをどのように管理するか等)や変換後の再保管などに使用されます。

・イベント通知⇒Lambdaへ連携
S3を利用したデータ転送やデータ変換の最も代表的な連携方法。S3にファイルがアップロードされることでLambdaが即座に自動でトリガーされる。Lambdaにロール(とポリシー)を付与できるため厳格なアクセス制御も実現可。ただし、大量データをETL(特にデータ変換)するときはAWS Glueを利用するのが好ましいので気を付ける。

・データレイク基盤
AWSにおけるデータレイク基盤はS3でありデータ格納先となる。AWS Glueとも連携しデータレイクと分析サービスとの間でシームレスなデータ移動が可能になる。

Amazon Athena
サーバレスのサービスでS3に対し直接クエリして分析が可能なサービスです。厳密にはS3のみが対象ではないですが基本としてまずはDBが無くS3にデータがある状態でクエリ分析可能なサービスという理解でいいでしょう。サーバレスは余分なセットアップ不要と同義です。

・クエリディメンション
日付、ソース、データ型などの一般的なクエリディメンションに基づいて S3 内のデータをパーティション分割することが推奨

・列形式
AWS Glueと同様にクエリパフォーマンス向上のためにParquetなどの列形式データが推奨。よってデータが非列形式であれば列形式への変換も推奨となる。

・AWS Glueによるデータカタログ化
カタログ化はAWS Glue参照。カタログ化することでAthenaのクエリパフォーマンスの向上が期待できる。

・ノートブック
Re:Invent2022で追加された機能で、Jupyter Notebook を使用してデータ処理を実行できる。ノートブックそのものは、プログラムコード、実行結果、グラフ、作業メモ等をノートブックと呼ばれるファイル形式にしたもの。

AWS Database Migration Service (AWS DMS)
Migration(マイグレーション)とは「移行」という意味で、データベースを移行させるサービスです。DMSがDatabase Migration Sericeであることに慣れる必要があります。

・継続的レプリケート
前述のS3データレイク基盤にRDS等のデータベースからデータを送る(レプリケートする)際にDMSを利用する。例えば、Amazon Aurora データベースから Amazon Redshift クラスターにデータを継続的に複製が可能。

AWS CloudFormation
言わずと知れたAWSの代表的なInfrastructure as Code(IaC)のためのサービスです。インフラをコードで記述し、CloudFormationへ登録することでリソースのプロビジョニングや設定を自動で実行してくれます。YAML か JSON形式で記述する必要があります。後述するAWS CDKと比較すると各種リソースの依存関係を管理しづらいです。

AWS CDK
前述のCloudFormationと同様にIaCを実現するためのツールであり、主要なプログラミング言語を使用してAWS上のリソースを定義できます。プログラミング言語は、JavaScript, TypeScript, Python, Java, C#, Goをサポートしています。前述のCloudFormationとの最も大きな違いは習得しているプログラミング言語を使用してIaCを実現できること。また、CloudFormationと比較して各種リソースの依存関係等を管理しやすいことが挙げられます。なおAWS Cloud Development Kitの略ですが、最初からCDKと記載されることが多いように思います。

AWS Lambda
おなじみのサーバレスでコードを実行できるコンピューティングサービスで、FaaS(Function as a Service)に分類されます。

・15分
Lambdaを実行できる最大時間。よってLambdaは複雑/大規模処理には不向き。どうしてもLambdaでの実装が必要な場合はLambdaを処理単位等で分割し、中間データをAmazon EFS (Elastic File System)に保存するなどの処置が必要。

・Provisioned Concurrency
ピーク時に大量の受信メッセージを効率的処理するためのサイズを動的に調整する機能。今までも同時実行による負荷分散機能はあったが、コールドスタンバイのため立上りが遅く急な負荷には対応できない問題があった。本機能はウォーム プールとして立ち上げ維持しておくことでこの問題を解決。またプロビジョンのため、オフピーク時には不要コストが発生しないことも意味する。追加利用料金有り。Concurrencyは同時実行性という意味。

Amazon RDS
こちらもおなじみのAWSのフルマネージド型のRDBMSの総称。データ分析の観点で入れておくべき知識をピックアップします。

・PostGIS
地理情報システム(Geographic Information Systems 、GIS)を実現するための PostgrSQL の拡張モジュール。よって、エンジンはRDS for PostgreSQLかAurora PostgreSQLに限定される。つまり地理情報システムを使用する場合は、PostGIS + PostgreSQLとなる。

Amazon Redshift
SQL を使用して、データウェアハウス、運用データベース、データレイクにわたって構造化および半構造化データを分析するフルマネージド型のサービスです。カテゴリとしてはデータベースに入りますが、RDBMSのようなデータ蓄積ではなくデータ分析に重きを置いていると考える方がよいと思います。
Redshiftとは日本語で「赤方偏移」のこと。光も音と同様にドップラー効果によって波長が延ばされて赤い波長の方へ偏移する現象を言います。おそらくですが「データ」を分析して「知見」へと変化する様子を比喩していると思われます。

・マテリアライズドビュー
事前に計算された結果を保存し、月次レポートなどの繰り返しの予測可能なクエリのパフォーマンスを改善する機能。例えばRDSなどからデータを抽出し分析する際に事前に計算しておくことでパフォーマンスを改善。マテリアライズドとは「具体化された」という意味。

・フェデレーテッドクエリー
データ本体を外部DBに保管したまま、そのDBのテーブルにクエリを発行して分析する機能。Amazon AuroraやAmazon PostgresSQL、Amazon MySQLなどに対してフェデレーテッドクエリーを発行可能。フェデレーションはAWSよく出てくる単語だが日本語にすると若干難しく連邦とか連合といった意味合いになる。自身の範疇を越えて他のDBに対しクエリーを実行する機能というイメージでよい。

・ワークロード管理(WLM)
キューを定義し優先順位を割り当てることで、データウェアハウスのワークロードを管理可能。重要なクエリに高い優先度を設定することで、ピーク時に必要なリソースを確保でき、最も重要なタスクの最適なパフォーマンスを維持ができる。

・スタースキーマ
データウェアハウスのクエリパフォーマンス改善の際に候補となるスキーマ。ファクトテーブルとディメンションテーブルから成るスキーマで、調べてみればなんてことはない構造。

・特定のノードへのデータ偏りによるパフォーマンス劣化
分散スタイルを「even」にして全てのノードへ均等にデータを分散させてパフォーマンスを改善する。

・Amazon Redshift Serverless
文字通りサーバレスのRedshift。アイドル状態のときは課金が発生しないため、週に一回数時間しか使わない場合などで高効率化。

AWS Step Functions
複数のAWSサービスを統合してワークフローで連携、アプリケーションを視覚的に構築できるサーバーレスのオーケストレートシステムです。一例として、RDSやDynamoDB、S3などのデータストアを行き来するデータのPutやDeleteといったタスク管理や調整を実現できます。

・AWS Batchとの統合
バッチジョブを管理するサービスでStep Functionsと統合されている。複雑なシミュレーションや計算を管理するワークフローの王道構成となる。

・CloudTrailによる監査への対応
StepFunctionsで呼び出されたAPIはCloudTrailにて追跡可能。

Amazon SageMaker
ML モデルを大規模に構築、トレーニング、デプロイを一気通貫で行えるフルマネージド型サービス。正直に言うと、機械学習は本当にちんぷんかんぷんで要素となるキーワードだけ覚えました。

・AWS Batchとの統合
バッチジョブを管理するサービスでStep Functionsと統合されている。複雑なシミュレーションや計算を管理するワークフローの王道構成となる。


さいごに

2024/7時点で最も新しい試験:AWS Certified Data Engineer - Associateを紹介しました。単なる知識問題ではなくしっかりとしたDataEnginner向けの試験だと感じました。

-AWS資格取得