はじめに
データ分析に興味を持って転職しておよそ10か月ほど。
何をするにしてもデータの整備が必要じゃないか!という至極当たり前なことに気づき、データ基盤構築の基礎を学ぶべくAWS上で行ったことをまとめます。
個人の勉強記録です。
想定読者
- AWSでの基盤構築に興味を持っている人
- AWS初心者でデータ基盤構築をしたい人
アーキテクチャ図と概要
まずは作成した基盤のアーキテクチャ図を示します。
(アーキテクチャ図の作成すら初めてなので荒い部分はご愛嬌)
やりたいことは手持ちのCSVファイルをS3に読み込ませ、GlueでETL処理をし、QuicksightやAthenaを使ってデータ分析をする流れを作成すること。
CSVはまったく前処理をしない生データで、AWS上で前処理や加工を行う想定でした。
が、Glueを用いたETL処理(GUI)が思うようにうまくいかず、結局CSVはPythonも使って加工することに...
この辺りは課題として持ち越そうと思います。
以降に具体的に各サービスでどんなことを行ったかを示します。
実際にどんな構築をしたか
データ
Kaggleのデータセットを使用。実際にETL処理をして扱いやすくするために、生っぽいデータを探しました。
前処理(Python)
前述したとおり、Glueの処理が全然思うようにいかなかなかったためPythonを用いて前処理。(Crawlerなどをガンガン使っていたら余裕で予想していたコストを超えていた、ドル高恐るべし。)
詳しいデータセットの説明はKaggleのページに譲りますが、カラムの日本語化、データの層化をPythonで実施。
AWSユーザー
ルートユーザーとは別にアドミン権限を持つIAMユーザーを作成し、そちらのユーザーで実装。
本番環境の際はしっかり分離するべきということは承知の上で実際の作業は強い権限のユーザーで実装していました。
S3
デフォルト設定でバケットを作成。
Glue
大まかな流れとしては
- Crawlerでデータカタログへ登録
- GlueでETL処理(型変換、不要なカラムの削除)
- S3へアップロード
- Crawlerで処理したものをデータカタログへ登録
当初はカラム同士の計算などをGUIで行おうと思ったが、処理した後にCrawlerを走らせると最終のQuickSightでカラムの中身がnullになりそれが解消できず。
費用面との兼ね合いからPythonでCSVをある程度整形して流すことになりました。
以下最終系のフロー。
QuickSight
これらのデータをQuickSightで可視化。
BIツールの入りがTableauのためかちょっとQuickSightが使いにくく、簡単なグラフ等を作成するにとどまる。
Athena
本当はここで有効な集約とかができればいいのだろうがあまり実力を発揮できず。
Data Catalog経由で直接クエリが打てるのは便利だなと感じた。
反省点や課題
- GUIでのjobはおそらくできることも限られていそうなので、Pythonでの記述やPySparkを勉強してできる前処理を増やす。
- バッチ処理を行ってデータフローを作成することができなかったので、他のサービスも組み合わせてバッチ処理ができるようにする。
おわりに
「AWS=コストがかかる」というイメージで使用するのに恐怖感みたいなものがあったが、まずはやってみるのは大切。
使い始めるとこれらのサービスを入り口としては無償で提供しているAmazonすごいなという気持ちになった。
AWSまったくわからない...からいくつかのサービスを触ったことはあるといえるところまでは行けたかな。使いこなせているかどうかは別問題として...。
コストについて、この一通りを行って$7.59、日本円に換算すると2025年7月24日現在で1111.31円でした。実際の請求はまだなので支払額は多少前後するはず。
気持ちとしてはスタバ1杯分くらいで行きたかったのですが、まあこれも勉強代です。
GlueのETLjob、Crawlerはそれぞれ5,6回くらいは回しているはずなので、それぞれきちんと設計してミスが少なければもっとコストは下げられるかと思います。
おわり!