データレイク構築の第一歩!Lake FormationとAthenaでデータ活用基盤を作る
こんにちは!現役クラウドエンジニアの[あなたの名前/ハンドルネーム]です。
「【AWSプロフェッショナルへの道】現役クラウドエンジニアが贈る実践ガイド」の第27回をお届けします。前回は、X-RayとOpenTelemetryを使ってオブザーバビリティを実現し、分散システムのデバッグスキルを磨きました。これまでは、主にアプリケーションの構築と運用を中心に学んできましたが、今回はそのアプリケーションが生み出す大量のデータをいかに活用するか、というテーマに焦点を当てます。
今回解説するのは、データレイクの構築と、そのデータ活用を支えるサービスであるAWS Lake FormationとAmazon Athenaです。
「データレイクって何?」「S3にデータをただ置くだけじゃダメなの?」「SQLで簡単に分析したいけど、どうすればいいの?」といった疑問を持つかもしれません。データレイクは、様々な形式のデータを一元的に保存し、必要に応じて分析するための基盤です。本記事では、データレイクの基本から、Lake Formationを使ったデータの準備とセキュリティ設定、そしてAthenaを使ったサーバーレスなデータ分析方法までを学び、データドリブンな意思決定を支援するスキルを身につけます。
1. データレイクとは?データウェアハウスとの違い
まず、データレイクの基本概念を理解しましょう。
-
データレイク (Data Lake):
- 様々なソースから、構造化・非構造化を問わず、あらゆる形式のデータを元の形式のままで一元的に保存する中央リポジトリです。
- AWSでは、Amazon S3がデータレイクのストレージ層として利用されます。
- スキーマオンリード (Schema on Read): データを読み込む際に、その都度スキーマ(データの構造)を定義します。これにより、多種多様なデータを柔軟に保存できます。
-
データウェアハウス (Data Warehouse):
- データの分析とレポート作成に特化した中央リポジトリです。
- データを保存する前に、ETL(抽出、変換、ロード)プロセスを通じて構造化された形式に変換する必要があります。
- スキーマオンライト (Schema on Write): データを書き込む前に、厳密なスキーマを定義します。
使い分け:
- データレイク: 探索的分析、機械学習、データサイエンスなど、多様な用途でデータを柔軟に活用したい場合に適しています。
-
データウェアハウス: 定型的なレポートやBI(ビジネスインテリジェンス)など、構造化されたデータに基づいた分析が必要な場合に適しています。
AWSでは、データレイクのデータを加工して、Amazon Redshiftのようなデータウェアハウスにロードするという流れが一般的です。
2. AWS Lake Formation: データレイクの準備とセキュリティ
AWS Lake Formationは、データレイクの構築、管理、セキュリティ設定を簡素化するフルマネージドサービスです。S3に保存された膨大なデータに対して、簡単に権限を付与したり、データのカタログを作成したりできます。
2.1. Lake Formationの主要な機能
- データの取り込み: S3バケット内のデータをスキャンして自動的にカタログを作成し、分析可能な状態にします。
- セキュリティとアクセス制御: データベース、テーブル、カラムレベルで、どのIAMユーザー/ロールがどのデータにアクセスできるかを厳密に制御できます。これにより、データの機密性を保ちます。
- データの変換と準備: AWS Glueの機能を使って、生データをより分析しやすい形式(Parquetなど)に変換するETLジョブを簡単に構築できます。
2.2. 実践!Lake Formationでデータレイクを準備しよう
今回は、S3に保存されたCSVファイルを、Lake Formationを使ってAthenaで分析できる状態にしてみましょう。
-
S3バケットの準備:
- S3にデータレイク用のバケット(例:
my-data-lake-bucket-12345)を作成し、その中にsales-data.csvといったCSVファイルをアップロードしておきます。
- S3にデータレイク用のバケット(例:
-
Lake Formationのデータカタログ設定:
- AWSマネジメントコンソールで「Lake Formation」サービスに移動します。
- 左のナビゲーションペインから「データカタログ」→「データベース」を選択し、「データベースを作成」をクリックします。
-
データベース名:
sales_dbと入力します。 - 「作成」をクリック。
-
データソースの登録とクローラーの実行:
- Lake Formationのコンソールで、左のナビゲーションペインから「登録済みロケーション」→「登録」を選択し、先ほど作成したS3バケットを登録します。
- 左のナビゲーションペインから「クローラー」→「クローラーを作成」を選択します。
-
クローラー名:
sales_data_crawler -
データソース: 「データソースの追加」をクリックし、S3バケット内の
sales-data.csvが置かれているパスを指定します。 -
IAMロール:
AWSGlueServiceRoleというIAMロールを新規作成してアタッチします。 -
出力: ターゲットデータベースとして
sales_dbを選択します。
-
クローラー名:
- クローラーを実行すると、S3のデータをスキャンし、テーブル定義を自動で作成してくれます。
-
権限の付与:
- 左のナビゲーションペインから「テーブル」を選択し、作成された
sales-dataテーブルを確認します。 - 「アクション」→「権限を付与」を選択し、
Athenaを使いたいIAMユーザー/ロールにSELECT権限を付与します。
- 左のナビゲーションペインから「テーブル」を選択し、作成された
これで、S3に保存されたデータがLake Formationのデータカタログに登録され、適切な権限が付与された状態になりました。
3. Amazon Athena: サーバーレスなデータ分析
Amazon Athenaは、サーバーレスな対話型クエリサービスです。標準SQLを使って、S3に保存されたデータを直接分析できます。
3.1. Athenaの主要な特徴
- サーバーレス: クラスターの管理やインフラのプロビジョニングは不要です。クエリを実行した分だけ料金が発生します。
- 標準SQL: 使い慣れたSQLを使って簡単にデータを分析できます。
- データカタログとの連携: Lake FormationやAWS Glueのデータカタログと連携し、S3上のデータに対してテーブルのようにクエリを実行できます。
3.2. 実践!Athenaでデータをクエリしてみよう
先ほどLake Formationで準備したデータを、Athenaを使って分析してみましょう。
-
AWSマネジメントコンソールで「Amazon Athena」サービスに移動します。
-
「クエリエディタ」に移動します。
-
左のナビゲーションペインで、データベースとして
sales_dbが選択されていることを確認します。 -
以下のSQLクエリを実行してみましょう。
-- テーブルのスキーマを確認 DESCRIBE sales_data; -- 最初の10件のデータを取得 SELECT * FROM "sales_db"."sales_data" limit 10; -- 合計売上を計算 SELECT sum("sales") FROM "sales_db"."sales_data";-
DESCRIBEでスキーマが正しく認識されているかを確認し、SELECT文でクエリを実行します。 - Athenaは、Lake Formationのデータカタログを参照して、S3上のデータを直接スキャンし、クエリ結果を返してくれます。
-
4. まとめ
今回は、データ活用基盤の構築に不可欠なデータレイクと、それを支えるサービスであるAWS Lake Formation、Amazon Athenaについて学びました。
- データレイクは、様々な形式のデータをS3に保存する中央リポジトリであり、柔軟なデータ活用を可能にします。
- AWS Lake Formationは、S3に保存されたデータを自動でカタログ化し、きめ細かなアクセス制御を設定できるサービスであることを理解しました。
- Amazon Athenaは、Lake Formationで準備されたデータを、サーバーレスな環境で標準SQLを使って直接分析できる強力なツールであることを学びました。
これらのサービスを組み合わせることで、あなたは安価でスケーラブルなデータレイクを構築し、ビジネスの成長を加速させるためのデータ活用基盤を迅速に立ち上げることができます。これは、クラウドインフラエンジニアにとって、大きな強みとなるでしょう。
この記事が皆さんのAWS学習の一助となれば幸いです。
もしこの記事が役に立ったと感じたら、ぜひ「いいね」👍をお願いします!励みになります!