AWS Glueの特徴

近年、ビッグデータ解析やデータレイクで注目されているETL処理。
AWS Glueは、データ統合、変換、およびロード(ETL)の処理を行うためのマネージドサービスです。以下にAWS Glueの主な特徴を説明します。
ETL処理ができる
AWS Glueは、データの抽出(Extract)、変換(Transform)、およびロード(Load)のETL処理をサポートします。
データを抽出し、必要な変換を行い、さまざまなデータストアにロードすることができます。
フルマネージド・サーバレス
AWS Glueは、フルマネージドでサーバーレスなサービスです。
つまり、RDSなどと同様にインフラストラクチャの管理やスケーリングの手間を省くことができます。
必要なリソースの割り当てやスケーリングはAWSが自動的に行います。
AWS Glueの使い方

AWS Glueの構築はRDSやEC2とは異なり、機能ごとに分けて作成する必要があります。
例えば、RDSの場合はインスタンス作成画面から選択していけば最低限のデータベースを構築できますが、Glueの場合はそうはいきません。
AWS Glueの場合、複数項目を作成して初めてETL処理ができるようになります。
それぞれ見ていきましょう。
AWS Glue概要
まず、Glueのコンソール画面を見てみましょう。たくさんありますね。
下記のように、複数の項目が表示されています。
ちなみに、「Legacy pages」はGlueの古いコンソール画面です。
2023年6月現在は利用できなくなっています(それぞれ対応した最新ページに案内されます)。
ここからそれぞれ項目ごとに作成して、それらを組み合わせることでETL処理ができるようになります。
概要を図にまとめたものが下記です。
この図は、RDSのデータをGlueでETL処理をしてS3に格納する場合の概要図です。
それぞれ見ていきましょう。
Data connections
AWS Glueでは、最初にデータソースとの接続を確立するためのData connections(データ接続)を使用します。
データソースは、Amazon S3、Amazon RDS、Amazon Redshiftなど、さまざまなAWSサービスや外部データベースから利用可能です。
もちろん、AWS外のオンプレミス環境でも接続可能です。
データコネクション確立完了後、以降のクロールやデータカタログの作成が可能となります。
connectionsにはRDSのエンドポイント名・ポート番号・DB名が必要です。
MySQL・Postgres・S3それぞれでエンドポイント名や書式が変わるため注意しましょう。
下記で説明されています。
https://docs.aws.amazon.com/ja_jp/glue/latest/dg/connection-properties.html
また、変換元と変換先のそれぞれのリソースにConnectionは必要となるため注意が必要です。
Crawlers
Crawlers(クローラ)は、データカタログを作成するためのAWS Glueの機能です。
データソースをスキャンし、データのメタデータ(スキーマ、テーブルの定義など)を自動的に抽出します。
これにより、データカタログを作成し、後続のETLジョブでデータを処理する準備が整います。
Databases
Crawl後に自動でDBが作成されます。クロール前は空のDBを作成しておきましょう。
AWS Glueでは、データベースを作成してデータを組織化することができます。
データベースは、テーブルやスキーマの論理的なコンテナとして機能し、データの構造化や管理を支援します。
Tables
上記のDatabaseの中のTableも事前に作成しておきましょう。
ETL処理ごとにテーブルを作成します。
次に出てくるETL Jobsで使用します。
ETL Jobs
ETL Jobsは、AWS Glueでデータの変換や統合を行うためのジョブです。
ETLジョブはスクリプトまたはジョブタイプ(Python Shell、Apache Spark)を使用して作成され、データソースからデータを抽出し、変換し、必要なデータストアにロードします。
ここにETL処理用のスクリプトを記載しましょう。
DatabaseやTableを指定して処理を行い、ETL変換後のデータをS3に格納する命令を記載します。
ここのスクリプトによってはConnectionを使わずに変換後のデータを格納することも可能です。
また、ETL Jobsはsubnet内で実行されます。
その理由として、ETL JobsはIPアドレスを使ってJobを実施するためです。
subnet内のLocal アドレスを使ってJobの処理をします。
処理速度を速くしたい場合は、Jobs内でワーカー数(多いほど早く処理できる)やワーカータイプ(CPU・メモリ)などのチューニングが必要です。
Triggers
トリガーは、特定のイベント(スケジュール、データカタログの変更、ジョブの完了など)が発生した場合にETLジョブを自動的に実行する項目です。
トリガーを使用することで、データの更新や変更があった場合に自動的にジョブをトリガーしてデータ処理を実行することができます。
Workflows
Workflowsは、複数のETLジョブとトリガーを組み合わせて定義し、データ処理のフローを制御するための仕組みです。
複雑なデータパイプラインや依存関係のあるジョブの実行を容易にすることができます。
Glue Studio
上記全てをGlue Studioで管理します。
ワークフローをフローチャート化してGUIで線を引きながら全体を構築することが可能です。
しかし、それぞれの項目は作成する必要があるため、Glue Studioは最後に実施しましょう。
AWS Glueの注意点

AWS Glueを使用する際の注意点を説明します。
AWS側リソース不足になる可能性
大量のデータ処理を行う場合、AWS Glueが使用するリソースをAWS側で準備できなくなる可能性があります。
サーバレスサービスであるため、リソースの確保はされていません。Glueの発火と同時に必要なリソースを取りに行きます。
例えば、EC2でインスタンス起動がAWS側のリソース不足で失敗することがありますよね。それと同様のことがGlueでも発生します。
また、VPC subnetのIPアドレス不足が原因でGlue処理が失敗する可能性もあります。
subnetはできるだけ大きい範囲で切りましょう。
Glueに掛かる料金の見積もりが難しい
AWS Glueの料金は、使用するリソースや処理時間に基づいて計算されます。
しかし、データ量やデータの特性を鑑みた上で、データ変換処理にかかる時間を見積もることができません。
たとえば、1Tbyteのデータ量の処理にどのくらい時間がかかるのか、列指向データの処理にどれくらい時間がかかるのか、見積もり段階では判別が難しいのです。
正確な料金の見積もりは、実際に検証して確かめるしかありません。
Glueで利用する他のAWSサービス

Glueで利用するその他のAWSサービスについて説明します。
Subnet
Glue Jobsにはsubnetが必要です。
Glue Jobsがsubnet内のIPアドレスを確保して、そのIPにてデータ処理を行います。
今後の拡張性も考慮すると、複数のIPアドレスを有したglue専用subnetを作成しましょう。
IPアドレスが無い場合は、エラーが返ってきます。
VPC Endpoints
閉域内でGlueを動かす必要がある場合は、VPC Endpointが利用できます。
これにもsubnetやSGが必要になります。
RDS
データソースや処理後の格納用のRDSが必要です。
S3
データソースや処理後の格納用のS3が必要です。
これらのAWSサービスは、AWS Glueとの連携によりデータの統合、処理、および分析を効率的に実行するための強力なツールとなります。
本記事がAWS構築のお力になれば幸いです。
SG(セキュリティグループ)
GlueにはSGの設定が必須です。
中でも自己参照ルールという普段あまり使わない設定を使用します。
これは、Glue自体がsubnet内のIPを利用する為に、自分自身をインバウンドで許可する必要があるためです。
AWSの効果的な学習方法は?

最後に、AWSの効果的な学習方法をご紹介します。
自学自習はUdemy講座
オンラインプラットフォームであるUdemyは安価で手軽にAWSの学習が可能です。
しかし、上記で紹介したような実際のAWSエンジニアが実施している構築スキルまでは教えてくれません。初心者~中級者向けの講座が多くなっています。
残念ながら、Glueなどのサービスはメジャーなサービスではないため、動画学習教材はほぼありません。
私も受講した、初心者向けAWS講座を下記記事でまとめています。ご参考ください。
1人で学習が難しい場合はオンラインレッスン
1人で学習が難しい場合はオンラインレッスンがおすすめです。
最近では、AWS講座を提供するオンラインレッスンも増えてきました。
料金は高くなりますが、現役エンジニアからAWSについて学ぶことができます。
本ブログ執筆者のメンタリングも受付中
本ブログを執筆している[KAITech]もメンタリングを受け付けています。
オンラインレッスンは高くて手が出せないという方は私までお気軽にご相談ください。
下記から承っております。