AWS Glue・Athena入門|S3のデータをSQL分析するサーバーレスデータ基盤の構築

現場実践|AWSデータ分析サービス
AWS Glue・Athena入門|S3のデータをSQL分析するサーバーレスデータ基盤の構築
「AWSでデータ分析基盤を作りたい」「S3に溜まったログをSQLで分析したい」——AWS Glue(ETL)・Amazon Athena(S3のSQL分析)・QuickSightを組み合わせたサーバーレスデータ分析基盤の構築を解説します。
💡 S3→Glue→Athena→QuickSightのスタックはサーバー管理不要で構築できるAWSのデータ分析基盤の定番構成。従来のデータウェアハウスより大幅にコストが低く、インフラエンジニアでも構築できます。
1. S3→Glue→Athenaの全体アーキテクチャ
1
データをS3に蓄積
CloudFrontのアクセスログ・ALBのアクセスログ・アプリケーションログをS3の特定バケット(データレイク)に蓄積する。パーティション設計(年/月/日)でクエリコストを削減する。
2
Glue Crawlerでスキーマを自動検出
Glue CrawlerをS3バケットに向けて実行するとデータの構造(スキーマ)を自動検出してGlue Data Catalogに登録する。
3
AthenaでS3のデータをSQLクエリ
AthenaはGlue Data Catalogに登録されたテーブルをSQLでクエリできる。データはS3に残したままSQL分析が実現する。料金はスキャンデータ量課金(1TB当たり約650円)。
2. Athenaでよく使うクエリ例
-- ALBアクセスログからエラー率を時間帯別に集計
SELECT
date_trunc('hour', from_iso8601_timestamp(time)) AS hour,
COUNT(*) AS total_requests,
COUNT(CASE WHEN elb_status_code >= 500 THEN 1 END) AS error_5xx,
ROUND(COUNT(CASE WHEN elb_status_code >= 500 THEN 1 END) * 100.0 / COUNT(*), 2) AS error_rate_pct
FROM alb_access_logs
WHERE year = '2026' AND month = '04'
GROUP BY 1
ORDER BY 1;3. Glue ETLジョブで変換処理
生データの形式変換・クレンジング・集計処理はGlue ETLジョブ(PythonまたはSpark)で行います。「JSON形式のログをParquet形式に変換してS3に書き戻す」という処理でAthenaのクエリコストを大幅に削減できます(ParquetはJSONの10〜100倍クエリ効率が高い)。
4. Athenaのコスト最適化
- Parquet形式への変換:JSON/CSVをParquetに変換するだけでスキャン量が削減されてコストが1/10以下になるケースがある
- パーティションの活用:WHERE句でパーティションキー(年/月/日)を指定することでスキャン対象を限定してコストを削減する
- ワークグループでコスト管理:部門別のワークグループを作成してクエリごとのスキャン量上限を設定する
📌 この記事のポイント
- S3→Glue Crawler→Athena→QuickSightがAWSのサーバーレスデータ分析基盤の定番構成
- AthenaはS3のデータをSQLでクエリ。パーティション活用とParquet変換でコストを大幅に削減する
- Glue ETLジョブでJSON→Parquet変換するとAthenaのスキャン量が1/10以下になりコスト最適化できる
キャリアの疑問、一緒に解決しませんか?
Route Bloomでは、インフラ系ITエンジニアを目指す方への個別サポートを行っています。2026年7月からフリーランス講師として本格始動予定です。
ABOUT ME




