AWS Glue
AWS のサーバーレス ETL サービスで、データの抽出 / 変換 / ロードとデータカタログ管理を提供する
AWS Glue とは
AWS Glue は、サーバーレスの ETL (Extract, Transform, Load) サービスで、データの抽出・変換・ロードとデータカタログの管理を提供する。インフラのプロビジョニングが不要で、ジョブの実行時間に対してのみ課金される。2017 年にリリースされ、AWS のデータ分析基盤の中核を担っている。
主要コンポーネント
主要コンポーネントを以下にまとめる。
| コンポーネント | 役割 |
|---|---|
| Data Catalog | メタデータの一元管理。Athena、Redshift Spectrum、EMR が参照 |
| クローラー | S3、RDS、DynamoDB のデータを自動スキャンし、スキーマをカタログに登録 |
| ETL ジョブ | PySpark または Python シェルで ETL 処理を記述・実行 |
| Glue Studio | ビジュアルエディタで ETL ジョブをノーコードで構築 |
| Data Quality | データ品質ルールを定義し、自動検証 |
典型的なデータパイプライン
典型的なデータパイプラインを図で示す。
S3 (生データ: JSON, CSV)
↓ Glue クローラー (スキーマ自動検出)
Glue Data Catalog (メタデータ登録)
↓ Glue ETL ジョブ (Parquet 変換、クレンジング、パーティショニング)
S3 (加工済みデータ: Parquet, パーティション分割)
↓ Athena (SQL クエリ)
QuickSight (ダッシュボード)
Glue ETL ジョブの実装
Glue ETL ジョブの実装のコード例を示す。
import sys
from awsglue.transforms import *
from awsglue.utils import getResolvedOptions
from awsglue.context import GlueContext
from pyspark.context import SparkContext
sc = SparkContext()
glueContext = GlueContext(sc)
# Data Catalog からデータを読み込み
source = glueContext.create_dynamic_frame.from_catalog(
database="raw_data",
table_name="access_logs"
)
# 変換: 不要なカラムを削除、日付でパーティション分割
transformed = DropFields.apply(source, paths=["user_agent", "referer"])
# S3 に Parquet 形式で書き出し
glueContext.write_dynamic_frame.from_options(
frame=transformed,
connection_type="s3",
connection_options={"path": "s3://processed-data/access_logs/"},
format="parquet"
)
Step Functions + Lambda との使い分け
Step Functions + Lambda との使い分けを以下に整理する。
| 観点 | Glue | Step Functions + Lambda |
|---|---|---|
| 処理規模 | 大規模 (GB〜TB) | 小〜中規模 (MB〜GB) |
| 実行時間 | 数分〜数時間 | 最大 15 分 (Lambda) |
| 言語 | PySpark, Python | 任意 (Node.js, Python 等) |
| コスト | DPU 時間課金 ($0.44/DPU-hour・バージニア北部・2026 年 8 月時点) | Lambda 実行時間課金 (安め) |
| 起動時間 | 秒〜1 分台 (Glue 2.0 以降) | ミリ秒〜秒 |
| 適するケース | 大量データの変換、複雑な結合 | 軽量な ETL、API 連携 |
小規模なデータ変換 (数百 MB 以下) には Lambda の方がコスト効率が良い。ただし理由は起動の遅さではない。Glue 2.0 (2020 年) で Spark ジョブの起動は 10 倍速くなり、最小課金時間も 10 分から 1 分へ短縮された。残る不利は課金の下限にある。Spark ジョブは最小 2 DPU・最小 1 分から課金されるため、実処理が数秒で終わっても 1 回あたり約 0.015 USD の床が付く。数秒の処理を数分おきに回す用途では、この床が積み上がって Lambda より高くつく。
Data Catalog の価値
Glue Data Catalog は単なるメタデータストアではなく、AWS のデータ分析サービス群の共通カタログとして機能する。
- Athena: Data Catalog のテーブル定義を使って S3 上のデータに SQL クエリを実行
- Redshift Spectrum: 外部テーブルとして Data Catalog を参照
- EMR: Hive メタストアの代替として Data Catalog を使用
一度カタログに登録すれば、複数のサービスからスキーマ定義を共有できる。
コスト最適化
- クローラーの実行頻度を最小限にする (スケジュールではなくイベント駆動)
- ジョブのワーカー数 (DPU) を適切に設定する (Spark ジョブの既定は 10 DPU、下限は 2 DPU。小さなジョブに既定値のままは過剰なことが多い)
- 小規模データには Glue ではなく Lambda を使う
体系的に学ぶなら関連書籍を参照してほしい。
この記事は役に立ちましたか?
関連用語
ETL
データを抽出 (Extract)、変換 (Transform)、ロード (Load) するデータパイプライン
Athena
S3 上のデータを標準 SQL で直接クエリできる AWS のサーバーレス分析サービス
データウェアハウス
分析用に最適化された大規模データストアで、複数のデータソースを統合して意思決定を支援する
Lambda
AWS のサーバーレスコンピューティングサービスで、コードをイベント駆動で実行する
サーバーレス
サーバーの管理をクラウドプロバイダーに委ね、コードの実行に対してのみ課金されるコンピューティングモデル
Redshift
AWS のペタバイト規模のデータウェアハウスサービスで、大量データの分析クエリを高速に実行する