AWS LambdaからGlueジョブの実行

aws-lambda-glue-execのアイキャッチ画像 AWS

GlueジョブはLambdaと同様にサーバーレスであり、Lambda以上の実行時間・メモリ・ディスクを使用することができます。一方で、現状はEventBridgeやAPI GatewayからGlueジョブを直接呼び出すことができません。Glueジョブの概要についてはこちらをご覧下さい。

ここではLambdaからGlueジョブを呼び出す方法を解説します。

IAMロールの用意

LambdaからGlueジョブが実行できるように、IAMロールを用意します。
基本的なIAMロールの追加方法は、こちらの「IAMポリシーの追加」「IAMロールの追加」を参考にして下さい。

IAMポリシーは以下のように設定します。

AWSのIAMポリシーの設定

Glueジョブの追加

Glueジョブの追加はこちらを参考にして下さい。

Lambdaの追加

Glueジョブを呼び出すLambdaを追加します。
基本的なLambdaの追加方法はこちらを参考にして下さい。ローカル環境で用意します。

LambdaのPythonファイル(lambda_function.py)には、以下のように実装します。

lambda_function.py

import boto3

glue_job_name = '作成したGlueジョブ名'  # e.g. 'iso-glue-job'

def lambda_handler(event, context):
    glue = boto3.client('glue')
    glue.start_job_run(JobName=glue_job_name)
    print('launched glue job: ' + glue_job_name)

ZIP化し、S3にアップロードしてLambdaに適用できたら、動作確認します。
テスト実行で成功することを確認します。

AWSのLambdaのテスト実行結果

AWSマネージメントコンソール > サービス > Glue > ジョブで、当該Glueジョブを選択し、実行されていること、成功していることも確認します。

AWSのGlueジョブの実行結果

以上で、LambdaからGlueジョブを実行することができました。

タイトルとURLをコピーしました