Bright DataをAWS Glue ETLジョブに統合する:ステップバイステップガイド

Bright DataのウェブスクレイピングAPIを活用したAWS Glue ETLパイプラインの構築方法を学びましょう。株価データの抽出から、S3に保存されたフィルタリング済み結果までをカバーします。
2 分読
AWS Glue ETL jobs with Bright Data integration

このチュートリアルでは、以下の内容を学びます:

  • AWS Glue の概要と提供機能
  • Bright Dataがウェブデータ取得サービスを通じてETLパイプラインをサポートする理由
  • AWS GlueのETLジョブにBright Dataを統合する方法

さあ、始めましょう!

AWS Glueとは?

AWS Glueは、あらゆる規模の複数のソースからのデータの発見、準備、結合のプロセスを簡素化するために構築されたサーバーレスのデータ統合サービスです。

インフラ管理なしで、分析、機械学習、アプリケーション開発向けのETL(抽出、変換、ロード)ワークフローを構築できます。AWS Glueはデータパイプラインの開発を加速し、分析用にデータを容易にアクセス可能にします。これはデータカタログを一元化し、視覚的およびコードベースのジョブ作成ツールを提供することで実現されます。

AWS Glueが提供する主な機能は以下の3つです:

  • データの発見と整理:スキーマの自動推測、メタデータのカタログ化、AWS、オンプレミス、他クラウドにまたがるデータソースへの接続を実現。
  • データの変換とクレンジング:ビジュアルジョブエディター、インタラクティブノートブック、ストリーミングETLサポート、組み込みの機械学習ベース重複排除機能を提供。
  • パイプラインの構築と監視:ジョブのスケジュール設定、自動化、スケーリングを実現し、詳細なインサイトとトリガーによるパイプライン監視機能を提供。

詳細は公式ドキュメントでご確認ください

AWS Glue ETLワークフローにBright Dataを統合する理由

Bright Data をAWS ETL ワークフローに統合することで、データパイプラインの範囲と品質を劇的に拡大できます。

従来のETLは既知のソースからの構造化データ抽出に重点を置いていましたが、Bright Dataはリアルタイムの構造化ウェブデータへのアクセスを可能にします。これにより、手動収集や複雑なスクレイピングインフラが必要なインサイトが解放されます。

豊富なウェブデータ抽出(E)に加え、Bright Dataは変換(T)フェーズも強化します。変換時に、ライブの市場情報、製品情報、ソーシャル情報をレコードに追加することでデータセットを充実させられます。例えば、社内データセットに株価パフォーマンス指標、競合他社の価格、企業メタデータを付加することが可能です。

こうした知見はチームの意思決定を高度化します。スクレイピングデータの権威ある情報源との照合によるデータ検証も重要な利点です。これにより、ターゲットデータストアへのロード前に正確性を確保できます。

Bright Dataを使用したAWS Glue ETLジョブ向けWebデータ取得方法

このガイドセクションでは、AWS Glue ETLジョブにおけるBright Dataの統合例を紹介します。具体的には、以下のサンプルETLパイプラインの構築方法をご覧いただけます:

The ETL pipeline

Bright Dataは、その強力なウェブデータ取得オプションにより、抽出(E)フェーズで活用されます。Yahoo Financeスクレイパーを使用して株価データを取得し、P/E比率でフィルタリングした後、最終的にS3バケットに保存します。これはシンプルな例ですが、完全なETLワークフローを現実的に示すものです。

:本チュートリアル終了後、AWS Glueにおけるその他のBright Data統合手法の検討が可能です。

以下の手順に従って始めましょう!

前提条件

このチュートリアルを実行する前に、以下の環境が整っていることを確認してください:

このチュートリアルでは、S3バケット名がbright-data-etl-bucketであると仮定します:

Bright DataウェブスクレイピングAPIの動作についてある程度理解していることも役立ちます。

ステップ #1: Bright Data スクラッピング API の開始

ETLパイプラインの開発では、当然ながらExtract(E)フェーズから開始します。最初のステップはBright Data Yahoo Financeスクレイパーを使用してデータを取得することなので、その操作に慣れることが重要です。

まず、Bright Dataアカウントをお持ちでない場合は作成してください。既存アカウントをお持ちの場合はログインします。コントロールパネルで「Webスクレイパー」セクションに移動します:
The “Web Scrapers” page

次に「Web Scrapers Library」タブに移動します。「finance」を検索し、「Yahoo Finance スクレイパー」オプションを選択します。利用可能なスクレイパーにアクセスします:
Selecting the “finance.yahoo.com” scraper

Yahoo Finance スクレイパーページでは、このスクレイパーの入力要件と出力スキーマを確認できます:
The Yahoo Finance Scraper page
コントロールパネルでは、複数のプログラミング言語でコードスニペットを提供しており、迅速なセットアップが可能です。重要な点は、このスクレイパーが1つ以上のYahoo Finance株価ページを入力として受け取り、構造化されたリアルタイム株価データを返すことです。完璧です!

ステップ #2: S3配信の設定

Bright DataウェブスクレイピングAPIは、ウェブスクレイピングしたデータのAmazon S3への自動配信をサポートしています。この便利な機能を活用してデータ収集ステップを高速化するのが理にかなっています。Amazon S3配信を設定するには、まず非同期モードを有効にする必要があります。

「設定」タブで「非同期」オプションを選択します。次に「配信設定」ボタンをクリックします:
Pressing the “Delivery settings” button

以下のフォームに入力して、Amazon S3バケットへのデータ配信を設定します:

  • 「配信を有効にする」トグルをオンにします。
  • フォーマットをJSONに設定します。
  • ストレージ先として「Amazon S3」を選択します。
  • S3バケット名を入力します(この例ではbright-data-etl-bucket)。(エンドポイントURLフィールドは空欄のままにできます。)
  • 「ターゲットパス」は空欄のままにすると、ファイルがバケットのルートフォルダにアップロードされます。
  • 「認証タイプ」オプションを「アクセスキー」に設定します。
  • AWS アクセスキー ID と AWS シークレットアクセスキーを貼り付けます。
  • ファイル名をstocks に設定します。

Configuring the data delivery to your Amazon S3 bucket
この設定により、ウェブスクレイピングAPIは非同期モードで実行されます。つまり、Bright Dataが自社インフラ上で実行するウェブスクレイピングタスクを作成します。タスク完了後、ウェブスクレイピングされたデータは自動的にAmazon S3バケットにアップロードされ、AWS Glue ETLジョブからアクセス可能になります。素晴らしい!

ステップ #3: Webデータ抽出ロジックの実行

Webデータ抽出ロジックが正常に動作することを確認するため、Yahoo Financeの株価URL(例:NVDA、AAPL、GOOGL、MSFT、AMZN、TSLA、META、AVGO、BRK.B、LLY)をいくつか追加し、「手動で実行」ボタンを押します:
Pressing the “Run manually” button

スクレイピングAPIリクエストが送信され、クラウド上でスクレイピングタスクが開始されます。Bright Dataコントロールパネルからタスクのステータスをリアルタイムで監視できます:
Monitoring the web data extraction task

あるいは、Bright Dataコンソール(右カラムに表示)で提供されているコードスニペットのいずれかをお好みのプログラミング言語で実行することで、同様の結果をプログラム的に達成できます:
The code snippet for programmatic web scraping API execution

タスクステータスが「準備完了」に変わったら、AWS S3バケットを確認してください。stocks.jsonという名前の新しいファイルが作成されているはずです:
Note the “stocks.json” file

ブラウザでstocks.jsonファイルを開くと、以下のような内容が表示されます:
The structured stock data in the “stocks.json” file
これはYahoo Financeで提供されている株価データと同じ内容ですが、JSON形式で構造化されています。このデータはBright DataウェブスクレイピングAPIによってスクレイピングされました。これで完了です!AWS Glue ETLパイプライン構築に必要なデータを取得できました。

ステップ #4: AWS Glueジョブの初期化

AWSコンソールにログインし、「AWS Glue」を検索します。サービスを選択してメインページを開きます。
Selecting the “Go to ETL jobs” option on the AWS Glue homepage

そこから「ETLジョブに移動」ボタンをクリックし、ETLワークフロー作成の公式インターフェースであるAWS Glue Studioを開きます:
Creating a new visual ETL job
ここで新しいAWS Glueジョブを初期化できます。このチュートリアルでは「ビジュアルETL」オプションを選択してください。簡素化されたドラッグ&ドロップインターフェースでパイプラインを構築するのに適しています。

すると空白のキャンバスが表示され、異なるノードを接続することで AWS Glue ETL ワークフローを視覚的に定義できます:
The new AWS Glue ETL job
ETLジョブに「Bright Data Glue ETLジョブ」などの説明的な名前を付けます。これでETLパイプラインの構築を開始する準備が整いました。

ステップ #5: IAMロールの作成

AWS Glueジョブを実行するには、Amazon S3などのリソースへのアクセスやAWS Glueの管理を行うためのIAMロールを提供する必要があります。これらの権限は、ジョブ、クローラー、開発エンドポイントなどのGlueコンポーネントに必須です。

Glue Studioから直接ロールを作成するには、「ジョブの詳細」パネルに移動し、「新しいロールを作成」ボタンをクリックします:
Pressing the “Create new role” button

「ロールの作成」セクションで、IAMロールに「bd-glue-role」などの説明的な名前を付けます:
Creating a "bd-glue-role” IAM
デフォルトでは、AWS が必要な 2 つのポリシーをアタッチします:

  • AWSGlueConsoleFullAccess: AWS Management Console 経由で AWS Glue への完全なアクセス権を提供します。
  • AWSGlueServiceRole: AWS Glueサービスロール用のポリシー。EC2、S3、CloudWatch Logsなど関連サービスへのアクセスを許可します。
Note the two required policies added by AWS by default

次に、S3バケットのARNを取得します。S3コンソールのバケット「プロパティ」ページで確認できます:
Your bucket’s S3

この情報が、AWS Glueが提供するデフォルトポリシーを上書きするために必要です。具体的には、「ロールの作成」ページの「追加ポリシー」テキストエディタの「リソース」フィールドにS3バケットARNを貼り付けます:

"Resource": {
    "<YOUR_S3_BUCKET_ARN>/*"
} 
Adding your S3 bucket's ARN to the policy

最後に「ロールの作成」ボタンをクリックします。ロールが作成されると、自動的にAWS Glueジョブ設定に表示されます:
Note the “bd-glue-role” IAM role
これで完了です!AWS Glueジョブに、S3へのアクセスとETLパイプラインの実行に必要な権限を持つIAMロールが設定されました。

ステップ #6: パイプラインに抽出 (E) ノードを追加する

パイプラインの抽出(E)フェーズは、Bright Dataスクレイパーを実行して株価データを収集し、Amazon S3にアップロードした時点で開始されました。

次に、AWS Glue ETLパイプラインをそのデータに接続し、処理できるようにします。そのためには、「ノードの追加」パネルの「ソース」タブに移動し、「Amazon S3」ノードを選択します。
Adding the “Amazon S3” node

キャンバス上に「データソース – S3バケット – Amazon S3」ノードが表示されます。これをクリックし、S3ソースを設定します:
Configuring the “Amazon S3” node
「S3を閲覧」ボタンを押して、S3バケット(例:bright-data-etl-bucket)を選択します。

バケット選択後、AWS Glueが「S3 URL」フィールドに以下のような値を自動入力します:

s3://bright-data-etl-bucket

デフォルトでは、AWS Glueは指定されたS3パス内の全ファイルを読み込もうとします。入力ファイルの正確な名前がわかっているため、「S3 URL」フィールドを直接そのファイルを指すように更新します:

s3://bright-data-etl-bucket/stocks.json

これにより、Yahoo Financeスクレイパーでスクレイピングしたデータを含む、先にアップロードしたstocks.jsonファイルが使用されます。

次に、データ形式を設定します。入力データセットがJSONファイルであるため、入力形式として「JSON」を選択します。
The configured “Amazon S3” node
その後、「スキーマを推測」ボタンをクリックします。AWS Glueが入力JSONファイルを自動的に解析し、対応するスキーマを生成します。

ノードの「出力スキーマ」セクションには、JSONデータから推測された構造が表示されます:
The "Output schema” section
推論されたスキーマは、Bright Data Yahoo Financeスクレイパーが返す出力データスキーマと一致しています。素晴らしい!

ステップ #7: 変換 (T) ロジックの定義

前述の通り、これは単純な例ですので、変換(T)ステップは最小限に抑えます。目的はSQLクエリを使用してソースデータをフィルタリングし、P/E比率が30未満の企業のみを保持することです。

これを実現するには、「変換」タブに移動し、「SQLクエリ」ノードを選択します:
Adding the “SQL Query” node

ノードがキャンバスに追加されます。クリックして設定し、親ノードを「Amazon S3」にします。これはAmazon S3ノードの出力が「SQLクエリ」ノードの入力となることを意味します。つまり、スクレイピングされたJSONデータに対してSQLクエリを実行します。

次に、入力データセットのエイリアス名をstocksと定義し、以下のSQLクエリを追加します:

select stock_ticker, pe_ratio from stocks
WHERE pe_ratio < 30;

このクエリは、スクレイピングされた各銘柄からstock_tickerと pe_ratioフィールドを選択し、株価収益率(P/E比率)が30未満のもののみを保持します。

これらのフィールドの由来が気になる場合、stock_tickerと pe_ratioは BrightData Yahoo Financeスクレイパーが返す属性のうちの2つです(AWS Glueが前のステップで自動的に推測しました)。
Note the “stock_picker” and “pe_ratio” fields in the Bright Data Yahoo Finance Scraper output schema

現時点でのETLパイプラインは次のようになります:
See the configured “SQL Query” node
:実際のパイプラインでは、変換(T)フェーズは通常複数のステップを含みます。複数の変換ノードを追加して順次接続するか、ワークフロー内で複数の分岐を作成することで実装できます。

ステップ #8: Load (L) フェーズで S3 バケットに接続

「SQLクエリ」ノードの出力は、フィルタリングおよび変換されたデータです。最終ステップとして、このデータをS3バケットに保存し、ETLパイプラインのロード(L)フェーズを完了させます。

「ターゲット」タブで、別のAmazon S3ノードを追加します:
Adding an “Amazon S3” node
新規ノードをクリックして設定します。親ノードを「SQLクエリ」ノードに設定します。「SQLクエリ」ノードの出力が、新規Amazon S3ノードへの入力として送信されます。

出力形式を「JSON」に設定し、圧縮は適用しません。次に、出力先のS3フォルダを指定します。例:

s3://bright-data-etl-bucket/output/

:bright-data-etl-bucket は実際の S3 バケット名に置き換えてください。

これにより、変換されたデータは/outputフォルダ内に保存されます。

その他のオプションはすべてデフォルトのままにし、「保存」を押して AWS Glue ETL ジョブを更新します:
The final AWS Glue ETL job pipeline
完了!ETLパイプラインの設定が完了し、実行準備が整いました。

ステップ #9: パイプラインを実行し結果を確認する

「実行」ボタンを押してAWS Glueジョブを起動します。以下のような通知が表示されます:
The successful job started notification

「実行」タブに移動し、パイプラインの実行状況を監視します:
Note the job run

「実行ステータス」が「成功」になるまでお待ちください。1 分以上かかる場合がありますので、しばらくお待ちください。
Note the “Succeeded” status

完了すると、出力ファイルがS3バケットの/outputフォルダに表示されます:
The output folder containing the produced filtered data

生成されたファイルを開きます。フィルタ閾値(例:30未満)以下のP/E比率を持つ銘柄リストが表示されます:
The produced filtered stocks
ご覧の通り、結果としてAMZN、BRK.B、META、MSFT、GOOGLなどの銘柄が含まれています。

これで完成です! Bright Dataと連携したAWS Glue ETLパイプラインを構築しました。ExtractフェーズではBrightDataのウェブスクレイピングAPIを活用し、TransformフェーズではSQLでデータをフィルタリングし、Loadフェーズで結果をS3に保存します。

AWS Glue ETLジョブにおけるその他のBright Data連携アイデア

Bright Dataのウェブデータ取得機能により、ETLパイプラインの抽出フェーズで重要な役割を果たせることは間違いありません。

しかし、Bright Dataは抽出以外にも活用可能です。例えば変換フェーズでのデータエンリッチメント、検証、確認などに活用できます。具体的には以下のような活用方法が考えられます:

  • 企業プロフィールの強化ZoomInfoスクレイパーを使用して、Webソースから抽出されたレコードに企業属性データを追加します。
  • 従業員情報の検証LinkedInプロフィールを統合し、役職、メールアドレス、ソーシャルプロフィールを検証。
  • 競合他社の価格や製品詳細の取得AmazonスクレイパーAmazon Reviewsスクレイパーを使用して、市場インサイトを含むデータセットを強化します。
  • SEOまたは検索データの追加: SERP APIを使用して、検索エンジンのランキングデータやキーワードインサイトを、変換済みデータセットの一部として含めるほか、データ検証にも活用できます。

この統合方法について疑問がある場合は、カスタムビジュアル変換の定義に関する公式ガイドを参照してください。必要なのは、説明を含むJSONファイルと、Bright Data API統合のロジックを含むPythonファイルを含めることだけです。

まとめ

このチュートリアルでは、AWS Glue の概要と、Bright Data の多様なウェブスクレイピングソリューションが AWS Glue の機能を強化する方法について学びました。

特に、Bright DataのウェブスクレイピングAPIがETLパイプラインの抽出(E)変換(T)の両フェーズ(生データの取得、データセットの強化、情報の検証など)をどのようにサポートできるかを確認しました。

今すぐBright Dataの無料アカウントを作成し、当社のウェブデータソリューションを探索しましょう!