クローラーの実行が完了したときに Lambda 関数を使用して AWS Glue ジョブを自動的に開始するにはどうすればよいですか?

最終更新日: 2022 年 08 月 05 日

クローラーの実行が完了したときに AWS Lambda 関数を使用して、AWS Glue ジョブを自動的に開始したいと考えています。

簡単な説明

クローラーの実行が完了したときにジョブを開始するには、AWS Lambda 関数と Amazon EventBridge ルールを作成します。このメソッドを変更して、他の AWS Glue 関数を自動化できます。

注: AWS Glue ワークフローを使用して、クローラーの実行が完了したときにジョブを自動的に開始することもできます。この方法では、AWS Glue コンソールの [Workflows] (ワークフロー) ページからクローラーを開始する必要があります。詳細については、クローラーの実行が完了したときに AWS Glue ワークフローを使用してジョブを自動的に開始する方法を教えてくださいを参照してください。

解決方法

以下の手順を実行する前に、次のものが用意されていることを確認します。

  • AWS Glue の抽出、変換、およびロード (ETL、Extract, Transform, and Load) ジョブ。
  • AWS Glue クローラー。
  • AWS Glue ジョブを実行するための許可が付与された、Lambda の AWS Identity and Access Management (IAM) ロール。例えば、AWSGlueServiceRole ポリシーがアタッチされている、Lambda のサービスにリンクされたロールをセットアップします。

Lambda 関数を作成する

1.    Lambda コンソールを開きます。

2.    [Create function] を選択します。
注: Lambda 関数がない場合、[今すぐ始める] ページが表示されます。[関数の作成] をクリックして次のステップに進みます。

3.    [一から作成] が選択されていることを確認し、次のオプションを設定します。
[名前] に関数の名前を入力します。
[ランタイム] で Python オプションのいずれかを選択します。
[アーキテクチャ] でデフォルトのオプション x86_64 を使用します。
[ロール] で [デフォルトの実行ロールを変更] ドロップダウンを選択し、[既存のロールを使用] を選択します。
[既存のロール] でAWS Glue ジョブを実行するアクセス許可が付与されている IAM ロールを選択します。

4.    [Create function] をクリックします。

5.    [関数コード] セクションで、次のようなコードを貼り付けます。必ず、[MyTestJob] を、自分の AWS Glue ETL ジョブの名前に置き換えます。

# Set up logging
import json
import os
import logging
logger = logging.getLogger()
logger.setLevel(logging.INFO)

# Import Boto 3 for AWS Glue
import boto3
client = boto3.client('glue')

# Variables for the job: 
glueJobName = "MyTestJob"

# Define Lambda function
def lambda_handler(event, context):
    logger.info('## INITIATED BY EVENT: ')
    logger.info(event['detail'])
    response = client.start_job_run(JobName = glueJobName)
    logger.info('## STARTED GLUE JOB: ' + glueJobName)
    logger.info('## GLUE JOB RUN ID: ' + response['JobRunId'])
    return response

6.    コード編集 UI の上部で [デプロイ] を選択し、[テスト] を選択します。

7.    AWS Glue コンソールを開き、ジョブが開始していることを確認します。

EventBridge ルールを作成する

1.    Amazon EventBridge コンソールを開きます。

2.    ナビゲーションペインで [Rules] を選択し、続いて [Create rule] を選択します。

3.    ルールの名前と説明を入力し、[次へ] を選択します。

4.    イベントソースサンプルイベントにはデフォルト値を使用します。 [イベントパターン] セクションで [カスタムパターン (JSON エディター)] を選択します。

5.    次のコードをコピーして [イベントパターン] ボックスに貼り付けます。必ず、MyTestCrawl を自分の AWS Glue クローラーの名前に置きかえます。

{
    "detail-type": [
        "Glue Crawler State Change"
    ],
    "source": [
        "aws.glue"
    ],
    "detail": {
        "crawlerName": [
            "MyTestCrawl"
        ],
        "state": [
            "Succeeded"
        ]
    }
}

6.    [Select targets] (ターゲットを選択) セクションで、次の操作を実行します。

[Target] (ターゲット) で、[Lambda function] (Lambda 関数) を選択します。

[Function] (関数) で、Lambda 関数の名前を選択します。

7.    [Create] (作成) を選択します。

Lambda 関数と EventBridge ルールをテストするには、AWS Glue クローラーを実行します。その後、AWS Glue ETL ジョブの [History] (履歴) タブを確認します。[Run status] (実行ステータス) に [Starting] (開始中) または [Running] (実行中) と表示されます。


この記事はお役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?