この記事の概要

この記事はアイレット25卒社員によるAWSブログリレー AWS Glue編です。

AWS Glueの理解に欠かせない、ETLとはそもそも何か、AWS Glueの主要コンポーネントである
データカタログ、クローラー、ジョブについて解説していきます。

クラウドインテグレーション事業部 プロジェクトマネジメントS プロジェクトマネジメントG
鈴木健斗さんに監修いただいております。

鈴木健斗さんの受賞歴

  • Japan AWS All Certifications Engineer (2022~2025)
  • Japan AWS Top Engineer (2022, 2023, 2025)
  • AWS Community Builder

目次

  • AWS Glueとは
  • ETLとは
  • 3つの主要コンポーネント
  • メリット
  • 料金

AWS Glueとは

AWS Glueを一言で言うと、
「バラバラなデータを集めて、整形し、分析しやすい場所に運んでくれるサービス」です。
よく「フルマネージド型のサーバーレスETLサービス」と表現されています。

通常データを分析するときは下記の流れが必要になります。
1. データを集める(Extract:抽出)
2. データを使いやすい形に整形(Transform:加工・変換)
3. 整形されたデータを分析用の場所(RedshiftやBigQueryなど)に運ぶ(Load:ロード)

これら一連の流れをETLと言います。

なぜETLが必要?

データをきれいにするため

データはそのままでは分析に使えないケースがほとんどです。

  • 表記ゆれ:「株式会社A」「(株)A」「A社」
  • 欠損値:重要なデータが空欄
  • 異常値:ありえない数値(年齢が300歳)

このままデータを取り込み分析をしてしまうと分析結果は信頼できないものになってしまうため
データの表記を統一したり、エラー値を修正(Transform:加工・変換)することが重要

バラバラのデータを一つにまとめるため

分析に必要なデータが必ずしも一箇所にまとめられているとは限りません

  • S3:webアクセスログ
  • RDS:売り上げデータ
  • 外部SaaS:顧客情報

これらを別々に見ていてもアクセスログしか取得できない、、売り上げデータしか取得できない、、
というように深い分析はできません。
これらのデータを一箇所に集め(Extract:抽出)、顧客IDなどをキーに結合(Transform:加工・変換)することで初めて価値のあるデータセットが完成します。

分析するデータを用途に合った適切な場所に書き込むため

抽出し、変換したデータを分析に適した場所へ書き込まないと意味がなくなってしまいます。
データの使用用途も

  • 「高速なSQLクエリやBIツールで集計・可視化がしたい!」
  • 「機械学習用に、大量にデータを溜めておきたい」

など様々な目的があるかと思います。
そうした用途に合わせて適切な場所へ届ける(Load:ロード)ことがETLの最終ステップとして行われます。

AWS Glueの主要コンポーネント

AWS Glueデータカタログ

ETL処理をしたいデータのメタデータを管理するメタデータストア
どのS3バケットの、どのパス、どんなファイル形式でどんなスキーマのデータが格納されているか
といった情報を一元管理する

AWS Glueクローラー

データカタログにメタデータを自動登録してくれる機能
S3やRDSなどのデータソースを指定して実行すると、対象をスキャンし、ファイル形式やスキーマを自動で推測し、データカタログに登録してくれる

AWS GlueETLジョブ

実際にETL処理をサーバーレスで実行する
ジョブには、Spark, SparkStreaming, Ray, Python Shell といった様々な種類がある
Glue StudioといったGUIも提供されており、処理コンポーネントをドラック&ドロップ操作で視覚的に繋ぎ合わせるだけで簡単にETL処理フローを構成できます。

メリット

サーバーレス!

これが最大のメリットかと思います。
通常データ処理を行う際には、処理専用のコンピュータを用意し、必要なソフトウェアをインストールし、セキュリティ対策、アップデートなど様々な準備と保守が必要になります。
しかし、AWS Glueを使用すれば、このような作業は全てAWSが代わりに行ってくれます。
また、処理したいデータ量に応じて、ジョブに割り当てるDPU数を指定するだけで、処理性能を簡単に上げることができます。

データ構造を自動で推測

コンポーネントの解説でも説明した通り、クローラーという機能により、分析を始める前にどんなデータがあるのか?という確認作業を自動で行ってくれます。
その結果はデータカタログに自動で登録・更新されるため、データがどこにどのような構造で存在するのかを一元管理できます。

  • ファイルの中身を自動スキャン
  • クローラー機能により、S3やRDBMSなどのデータソースを自動でスキャン
  • ファイル形式を識別し、そのスキーマまでも自動で推測可能
  • データカタログにより一元管理!

料金(東京リージョンの場合)

ETLジョブ実行料金

ジョブの実行時間と使用されたDPU数、1DPU-時間あたりの料金によって決まります。
利用時間(h) * 使用されたDPU数 * 1DPUあたりの利用料金 = 請求金額

  • 例)AWS Glue Apache Spark ジョブが 15 分実行され、6 DPU を使用した場合
    • 0.25(h) * 6(DPU) * 0.44(USD) = 0.66USD

※ジョブタイプによって1DPU-時間あたりの利用量や最低限必要なDPU数は異ります。
詳しくは公式サイトをご覧ください

データカタログ料金

  • カタログに保存しているオブジェクトの数
    • 10万オブジェクトごとに1.00USD/月
    • 最初の100万オブジェクトは無料
  • リクエスト料金
    • カタログに対して「参照」したり「書き込み」したりしたAPIリクエストの回数
    • 100万リクエストごとに1.00USD
    • 最初の100万リクエストは無料

クローラー実行料金

クローラの実行に使用されたDPUの数に基づいて時間あたりの料金が発生

  • DPU時間あたりUSD0.44が1秒単位で課金される
  • クローラの実行ごとに最低 10 分の料金は課金される

まとめ

今回は、AWSのサーバーレスETLサービス AWS Glueについて、その概要を解説しました。
データ解析に必要な下準備(ETL処理)をインフラ管理をすることなく実行できる非常に魅力的なサービスだと改めて感じました。

この記事をとして少しでもAWS Glueについての概要が理解できれば幸いです。
最後まで読んでいただきありがとうございました!!

ぜひ他の25卒ブログリレーの記事もチェックしてみて下さい!!

参考
https://aws.amazon.com/jp/glue/
https://aws.amazon.com/jp/glue/pricing/