はじめに
本記事では「AWS Glue」について、基本概念から実際のユースケースまでを解説します。
データエンジニアリングやデータ分析基盤の構築を検討している方に向けて、
Glueの機能と活用方法を詳しく説明していきます。
そもそもGlueとは大まかに何をするサービスか
GlueとはAWSが提供しているサーバレスのETLサービスのことです。
ETLとはそれぞれ以下頭文字からとられた用語で、
分析などに使用されるデータを作成する、一連の流れを実施するサービスを指します。
-
E:Extract 抽出
データ分析に使用されるデータの抽出 -
T:Transform 変換
取得されたデータを分析に適した形へ変換、
また個人情報へのマスキングなどの加工 -
L:Load 格納
分析しやすい形などへの変換されたデータを指定の箇所へ保存
以下ETLのフローのイメージ図になります。

(Claude作成)
何ができるのか
ETLジョブ
上記内容の通り、データソースからデータを抽出、変換、格納する機能のことです。
Glue StudioにてPythonで抽出・変換・格納の処理を記載することができます。
または、Pythonが苦手、またコードを書くほどでもない簡単な処理の場合、
Visual ETLを使用することで、GUI上でETLジョブの一連の流れを作成できます。
以下がVisual ETLの画面になります。(処理内容に関してはあくまでイメージとなります。)

Lambdaとの違いは何か
Glue上でPythonを使用することでETLジョブ(データ加工の処理)を行うことができる、
という事を上記で記載しました。
ですが、LambdaでもPythonを使用しETLジョブ(データ加工の処理)を行う事が出来ます。
では、LambdaとGlueにはどのような違いがあるのかという点に注目して見ます。
| リソース名 | 実行時間(最大) | 費用計算の要素 |
|---|---|---|
| Lambda | 15分 | メモリ、処理時間 |
| Glue | 2880分(48時間) | DPU数、処理時間 |
実行時間
Lambda上でPythonを使用することでGlue ETLジョブと同じ処理を行う事が可能です。
ですが、Lambdaの実行時間は最大で15分という制限が存在します。
そのため、Lambdaで大規模なデータ(処理時間が15分を超えることが想定される)に対してLambdaを用いて処理を実施する際、Lambda以外のリソース(Step Functionsなど)を使用し、処理を分割して実行する必要があります。
→ 一つのLambdaで処理が完結できない。。。
一方AWS Glueの実行時間は最大で2880分(48時間)の為、
大規模なデータに対してもシンプルに処理を実行できます。
費用
Lambdaの場合、128 MB~10240 MBの範囲で設定できるメモリと、
実行時間に応じて従量課金が発生します。
一方GlueはDPU(Data Processing Unit)という単位が存在し、
割り当てたDPU数※1と実行時間に応じて従量課金が発生します。
※1. DPU(Data processing Unit)とは
DPUとはジョブ実行時に割り当てる処理能力の事を指しており、
1DPU = 4 vCPU、16 GB メモリ と定義されています。
より詳細な内容に関しては以下資料のスライド33を参照してください。
AWS Glue AWS Black Belt Online Seminar (P.33)
データカタログ
データカタログとは、AWS Glueがデータソースに対してETLジョブ実行時に使用する、
そのデータソースの情報が格納される場所のことです。
(データソースの情報:データソースの場所や、スキーマの情報などのメタデータ)
※実データが格納されているわけではなく、あくまでメタデータが格納されています。
具体的にメタデータはどこに格納されているのか
それぞれのメタデータは以下添付画像のようににテーブルと呼ばれる形で格納され、
テーブルはGlue上で作成してデータベース内に格納されている。
参考URL:
AWS Glue Data Catalog を理解する
クローラ
クローラとはソースデータのメタデータ(データの場所やスキーマ情報)を、
データカタログ(カタログ内のデータベースのテーブル)に登録・更新する機能です。
なぜデータカタログ、クローラが大切なのか
Glueのジョブは、このクローラのテーブルに格納されたメタデータを使用して、
ソースデータを取得する処理を記載できるため、具体的なS3のパス記載が不要、
またソースデータのスキーマが変更された場合でも処理できるなどのメリットがあります。
以下で実際にジョブ内でクローラーにより作成されたテーブル(メタデータ)を使用して、
ソースデータを取得・格納する処理に関する”参考URL”を記載させていただきます。
参考URL:
Glue JobでData CatalogのデータをETL変換してS3に出力する方法
ワークフロー
上記機能(ETLジョブ・クローラ)を、一連の処理として自動化するための機能です。
ユーザは複数のETLジョブを連携させ、データの移動・変換の流れをGUI上で設計できます。
GUI上での記載例
以下ではスケジュールトリガー:Month-close1を用いて定時で、
ジョブ:De-deplicate、Fix phone numbersを実行し、処理完了を判定後、
クローラ:Update schemaを実行させるような流れの、
自動実行を行うようなワークフローを記載しております。

画像引用元:AWS Glue のワークフローの概要
実際のユースケース
AWS Glueは様々な用途で活用されています。
以下に代表的なユースケースを紹介します。
データレイクの構築
課題:
複数のデータソース(RDS、ログファイル、外部API)からのデータを統合し、
分析可能な形でS3に格納したい
Glueの活用方法:
各データソースに対してクローラを設定し、スキーマ情報を自動取得
ETLジョブでデータの形式統一、重複除去、フォーマット変換を実施
Parquet形式でS3のデータレイクに効率的に格納
ワークフローで日次バッチ処理を自動化
リアルタイムデータ処理との連携
課題:
Kinesis Data Streamsから流れてくるリアルタイムデータを、バッチ処理で集計・分析したい
Glueの活用方法:
Kinesis Data Firehose経由でS3にデータを蓄積
定期的にGlueジョブを実行し、時間単位・日単位での集計処理
集計結果をRedshift Spectrumで分析可能な形で格納
コンプライアンス対応
課題:
個人情報を含むデータを安全に処理し、分析用データを作成したい
Glueの活用方法:
ETLジョブ内で個人情報のマスキング・ハッシュ化を実施
AWS Lake Formationと連携してアクセス制御を強化
さいごに
Glueを活用することで、Lambdaを使用したETL処理に比べ、処理の幅が広がり、
かつGUI上でETLジョブを記載できることから、プログラミングに詳しくない人にとっても、
使い勝手の良いリソースであることが分かりました。
この記事をきっかけに、少しでもGlueに対しての理解が深まれば幸いです。



