AWS Glue

AWS のサーバーレス ETL サービスで、データの抽出 / 変換 / ロードとデータカタログ管理を提供する

AWSデータ分析

AWS Glue とは

AWS Glue は、サーバーレスETL (Extract, Transform, Load) サービスで、データの抽出・変換・ロードとデータカタログの管理を提供する。インフラのプロビジョニングが不要で、ジョブの実行時間に対してのみ課金される。2017 年にリリースされ、AWS のデータ分析基盤の中核を担っている。

主要コンポーネント

主要コンポーネントを以下にまとめる。

コンポーネント役割
Data Catalogメタデータの一元管理。AthenaRedshift 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 との使い分けを以下に整理する。

観点GlueStep 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 を使う

体系的に学ぶなら関連書籍を参照してほしい。

この記事は役に立ちましたか?

関連用語

関連する記事