如何通过 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
我计划使用 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