我计划使用Pyspark在AWS Glue ETL中编写某些作业,就像在使用S3 Events触发AWS Lambda函数时一样,希望在将新文件放入AWS S3位置时被触发。
但是,我仅看到非常狭窄的选项来触发Glue ETL脚本。对此的任何帮助将受到高度赞赏。
以下应该可以触发AWS Lambda的Glue作业。将lambda配置为适当的S3存储桶,并将IAM角色/权限分配给AWS Lambda,以便lambda可以代表用户启动AWS Glue作业。
import boto3
print('Loading function')
def lambda_handler(event, context):
source_bucket = event['Records'][0]['s3']['bucket']['name']
s3 = boto3.client('s3')
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)
print('Error getting object {} from bucket {}. Make sure they exist '
'and your bucket is in the same region as this '
'function.'.format(source_bucket, source_bucket))
raise e
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句