オンプレの現場では「DataStage」「Informatica」「SSIS(SQL Server Integration Services)」といったETLツールを使ってきた方も多いはずです。クラウドへの移行を検討したとき、「このETL基盤はどう置き換えるのか」という問いは、避けて通れない課題です。AWS Glueは、その問いに対するAWSの答えです。
AWS Glueはフルマネージドのサーバーレスデータ統合サービスで、スキーマの自動検出からデータ変換・ロードまでを、サーバー管理なしに実現します。この記事では、AWS Glueの主要コンポーネントと料金体系、S3・RDS・RedshiftとのETL連携パターンを、オンプレETL経験者の視点から実務目線で解説します。

オンプレETLツールとAWS Glueを比べてわかること
オンプレのETLツールを使っていた頃は、「変換サーバーを用意して、エージェントを導入して、スケジューラーを設定して……」という作業が当たり前でした。AWS Glueはこの手順をほぼ丸ごと省略します。
| 比較項目 | オンプレETLツール | AWS Glue |
|---|---|---|
| サーバー管理 | 専用サーバーの構築・運用が必要 | 不要(サーバーレス) |
| スキーマ管理 | 手動でメタデータを定義・維持 | クローラーが自動検出 |
| スケーリング | 処理量増加時に手動でサーバーを増強 | DPU単位で自動スケール |
| コスト構造 | サーバー維持費(固定費) | 実行時間×DPU数(従量課金) |
| 開発言語 | 独自GUI / SQL | Python(PySpark)/ Scala / ビジュアルエディタ |
最大の違いは「実行した分だけ払う」課金モデルです。夜間バッチのように特定時間だけ動かすなら、24時間稼働するETLサーバーを維持するよりコスト効率が高くなります。
AWS Glueの4つの主要コンポーネント
AWS Glueを理解するには、4つの主要コンポーネントを押さえることが重要です。
1. データカタログ(Data Catalog)
データカタログは、AWSアカウント内のデータソースのメタデータを一元管理するリポジトリです。「どこに何のデータがあるか」を記録し、Amazon Athena・Amazon EMR・Amazon Redshift Spectrumなどのサービスから参照できます。
オンプレのMetadata RepositoryやDataStageのリポジトリに相当するものです。後述するクローラーが自動でメタデータを書き込みます。
2. クローラー(Crawler)
クローラーは、指定したデータソース(S3バケット・RDSテーブル・DynamoDBなど)を走査し、スキーマ(テーブル構造・カラム名・データ型)を自動検出してデータカタログに登録するプログラムです。
CSVやJSONのような構造化データはもちろん、ネストしたJSONやParquetにも対応しています。S3の日付フォルダのような新しいパーティションが追加されたときも、クローラーを再実行すれば自動でパーティションを検出できます。
3. ETLジョブ(Jobs)
ETLジョブは、データの読み込み・変換・書き込みを実装するスクリプトです。SparkベースのPySpark(Python)またはScala、あるいはシンプルなPython Shellで記述します。
AWS Glueでは「DynamicFrame」という独自のデータ構造を使います。PandasのDataFrameに似ていますが、スキーマが柔軟に扱えるよう設計されており、列の型が行ごとに異なるデータ(いわゆる「スーパーレコード」)も処理できます。
4. Glue Studio(ビジュアルエディタ)
Glue Studioは、ETLパイプラインをGUIで構築できるビジュアルエディタです。データソース→変換→ターゲットをドラッグ&ドロップで組み合わせ、コードを書かずにジョブを作れます。
ただし複雑な変換ロジックやカスタム処理が必要な場合は、生成されたコードを直接編集します。「GUIで骨格を作り、コードで細部を調整する」という使い方が実務では多いです。
基本的な使い方(クローラー→ETLジョブ実行の流れ)
1. データカタログにデータベースを作成する
AWSマネジメントコンソールで「AWS Glue」→「データカタログ」→「データベース」→「データベースの追加」を選択します。データベース名(例: sales_db)を入力して作成します。これはRDSのデータベースとは別物で、あくまでメタデータの「入れ物」です。
2. クローラーを設定してスキーマを自動検出する
「クローラー」→「クローラーの作成」を選択し、以下を設定します。
・データソースの追加: 「S3」を選び、対象のS3パスを指定(例: s3://my-bucket/raw/orders/)
・IAMロール: S3読み取りとGlueデータカタログへの書き込み権限を持つロールを指定
・出力先データベース: 先ほど作成した sales_db を指定
・スケジュール: 今回は「オンデマンド」を選択(後からスケジュール設定も可能)
クローラーを実行すると、S3上のファイルのスキーマが解析され、データカタログにテーブルが自動登録されます。
3. ETLジョブを作成して変換処理を定義する
「Glue Studio」→「ジョブの作成」→「ビジュアルETLエディタ」を選びます。「ソース」にGlueデータカタログのテーブルを指定し、「変換」ノードで列の型変換・フィルタリング・結合などを設定します。「ターゲット」にS3(Parquet形式)またはRedshiftを指定します。
ジョブを保存すると、対応するPySparkスクリプトが自動生成されます。
4. ジョブを実行して結果を確認する
「ジョブの実行」でジョブを起動します。「実行の詳細」画面でログ(CloudWatch Logs)とメトリクスを確認できます。AWS CLIで操作する場合は以下のようになります。
# AWS CLIでETLジョブを起動する aws glue start-job-run \ --job-name "orders-etl-job" \ --region ap-northeast-1 # 実行ステータスを確認する aws glue get-job-run \ --job-name "orders-etl-job" \ --run-id "jr_abcdef1234567890" \ --region ap-northeast-1
料金の仕組み(DPUとクローラー課金)
AWS Glueの料金で最初に戸惑うのが「DPU(Data Processing Unit)」という単位です。
DPUとは?
1 DPUは4 vCPU・16 GBメモリの処理能力の単位です。SparkベースのETLジョブは最低2 DPU(デフォルト)から実行でき、G.1X・G.2X・G.4X・G.8Xといったワーカータイプが選べます。
| ジョブタイプ | 最小DPU | 料金(東京リージョン・2026年8月時点) |
|---|---|---|
| Spark ETLジョブ(G.1X) | 2 DPU | $0.44/DPU時間(最小課金1分) |
| Python Shellジョブ | 0.0625 DPU | $0.44/DPU時間(最小課金1分) |
| クローラー | 2 DPU | $0.44/DPU時間(最小課金10分) |
| Glue Data Catalog | — | 100万オブジェクトまで無料、以降$1/10万オブジェクト/月 |
コスト試算の例(月次バッチ):
・毎日1回・Spark ETLジョブ・2 DPU・平均30分実行
・月額: $0.44 × 2 DPU × 0.5時間 × 30日 = 約$13.2/月(約1,900円)
オンプレのETLサーバー(仮想マシン1台)を24時間稼働させる場合と比べると、利用率が低いワークロードではGlueの従量課金が有利になります。一方、大量データを常時処理する場合はAmazon EMRの方がコスト効率が高くなることもあるため、ワークロードの特性に応じて比較検討することが重要です。
S3→Athena・Redshiftへの典型的なデータ連携パターン
AWS Glueが最も力を発揮するのは「データレイク/データウェアハウスへのETLパイプライン」です。
パターン1: S3(生データ)→ Glue変換 → S3(Parquet)→ Athena分析
最もシンプルなパターンです。アプリケーションがS3にCSV/JSONをアップロードし、GlueがそれをParquet(列指向フォーマット)に変換して別のS3パスに書き出します。AthenaはParquetを直接クエリできるため、変換後のS3データをSQLで分析できます。
Parquet変換によりAthenaのスキャンデータ量が削減され、クエリ料金の節約につながります。AthenaのParquet活用については、Amazon Athena コスト最適化入門で詳しく解説しています。
パターン2: RDS(トランザクションDB)→ Glue変換 → Redshift(DWH)
オンプレでは「本番DBから夜間バッチでDWHにデータを移す」設計が一般的でした。クラウドでも同じ構成が取れます。AWS GlueのJDBC接続でRDSに接続し、変換後のデータをRedshiftに書き込みます。
大量データを高速にロードするには、Glue → S3(中間Parquet)→ Redshift COPYコマンドという経路が推奨されます。Redshiftの料金最適化についてはAmazon Redshift コスト最適化入門もあわせてご確認ください。
データレイク・データウェアハウス・データマートのそれぞれの役割については、データレイク・データウェアハウス・データマートの違いで整理しています。
よくあるトラブルと対処法
【トラブル1】クローラーがカラムの型を誤検出する
S3上のCSVを走査したとき、数値のカラムが文字列(string)として登録されることがあります。サンプリングした行に文字列が混在していた場合に起こります。
対処法は2つあります。①クローラーの「分類子(Classifier)」をカスタム設定してスキーマを明示的に定義する、②ETLジョブ内でDynamicFrameの resolveChoice メソッドを使い、型を強制変換する、です。
【トラブル2】ジョブが途中でOut of Memoryになる
処理量が多いと「Out of Memory」でジョブが止まることがあります。ワーカータイプをG.1X(4 vCPU/16 GB)からG.2X(8 vCPU/32 GB)に変更するか、DPU数を増やすことで対処します。
また、データを日付パーティションで分割して処理量を絞るのも有効です。設計段階からETLとELTの違いを意識し、ELTパターン(先にロードして後変換)への切り替えも検討の余地があります。
【トラブル3】Parquet変換後に日本語が文字化けする
CSV の文字コードがShift-JISのデータをParquetに変換すると文字化けするケースがあります。ETLジョブの読み込み時に encoding='shift_jis' オプションを指定するか、事前にUTF-8に変換してからGlueで処理する設計にします。

本記事のまとめ
| やりたいこと | AWS Glueの機能 | オンプレ相当 |
|---|---|---|
| データスキーマを自動検出したい | クローラー | 手動メタデータ管理 / データ辞書 |
| メタデータを一元管理したい | データカタログ | ETLツールのリポジトリ |
| ETL処理をコードで実装したい | ETLジョブ(PySpark / Python Shell) | DataStageジョブ / SSISパッケージ |
| GUIでパイプラインを構築したい | Glue Studio ビジュアルエディタ | ETLツールのフロー設計画面 |
| SQLでアドホック分析をしたい | Glue Data Catalog + Amazon Athena | オンプレDWH + 分析SQL |
| データをDWHに高速ロードしたい | Glue + S3 Parquet + Redshift COPY | ETLツール + DBロードユーティリティ |
AWS Glueは「サーバーを立てずにETLを動かしたい」「S3上のデータを整形してAthenaやRedshiftで使いたい」というニーズに最もフィットするサービスです。従量課金のため、常時稼働ではなく定期バッチや散発的なデータ変換処理に特に向いています。
リアルタイムのストリーミングデータを処理したい場合はAmazon Kinesisとの組み合わせも検討してください。データパイプライン全体の設計を俯瞰するうえでは、ETLとELTの違いやデータレイク・データウェアハウス・データマートの違いもあわせて読んでおくことをおすすめします。
PR
AWSを使ったシステム設計のベストプラクティスをアーキテクチャ視点で体系的に解説。データ基盤・ETLパイプラインの設計判断を学ぶうえでも参考になる一冊です。
