如何通过 S3 事件或 AWS Lambda 触发 Glue ETL Pyspark 作业?

How to Trigger Glue ETL Pyspark job through S3 Events or AWS Lambda?

我计划使用 Pyspark 在 AWS Glue ETL 中编写某些作业,我希望在将新文件放入 AWS S3 位置时触发它,就像我们使用 Pyspark 触发 AWS Lambda 函数一样S3 事件。

但是,我看到的选项非常有限,只能触发 Glue ETL 脚本。对此的任何帮助都将不胜感激。

以下应该可以从 AWS Lambda 触发 Glue 作业。将 lambda 配置到适当的 S3 存储桶,并将 IAM 角色/权限分配给 AWS Lambda,以便 lambda 可以代表用户启动 AWS Glue 作业。

import boto3
print('Loading function')

def lambda_handler(_event, _context):
    glue = boto3.client('glue')
    gluejobname = "YOUR GLUE JOB NAME"

    try:
        runId = glue.start_job_run(JobName=gluejobname)
        status = glue.get_job_run(JobName=gluejobname, RunId=runId['JobRunId'])
        print("Job Status : ", status['JobRun']['JobRunState'])
    except Exception as e:
        print(e)
        raise