GlueジョブはLambdaと同様にサーバーレスであり、Lambda以上の実行時間・メモリ・ディスクを使用することができます。一方で、現状はEventBridgeやAPI GatewayからGlueジョブを直接呼び出すことができません。Glueジョブの概要についてはこちらをご覧下さい。
ここではLambdaからGlueジョブを呼び出す方法を解説します。
IAMロールの用意
LambdaからGlueジョブが実行できるように、IAMロールを用意します。
基本的なIAMロールの追加方法は、こちらの「IAMポリシーの追加」「IAMロールの追加」を参考にして下さい。
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マネージメントコンソール > サービス > Glue > ジョブで、当該Glueジョブを選択し、実行されていること、成功していることも確認します。
以上で、LambdaからGlueジョブを実行することができました。