要在一批S3事件上触发AWS Glue ETL作业,您可以使用AWS Lambda函数来处理S3事件,并在Lambda函数中调用AWS Glue API来启动ETL作业。以下是一个示例代码,展示了如何在Lambda函数中触发AWS Glue ETL作业:
import boto3
def lambda_handler(event, context):
# 获取S3事件信息
s3_event = event['Records'][0]['s3']
bucket_name = s3_event['bucket']['name']
object_key = s3_event['object']['key']
# 创建Glue客户端
glue_client = boto3.client('glue')
# 创建ETL作业请求
response = glue_client.start_job_run(
JobName='your-job-name',
Arguments={
'--s3-bucket': bucket_name,
'--s3-object-key': object_key
}
)
# 打印作业运行ID
job_run_id = response['JobRunId']
print(f"Started Glue job run: {job_run_id}")
# 返回作业运行ID
return job_run_id
请确保已将上述代码中的your-job-name替换为您要触发的AWS Glue ETL作业的名称。此代码将在Lambda函数中处理S3事件,并使用AWS Glue客户端来启动ETL作业。您可以根据需要在Arguments参数中传递其他作业参数。
要使用此代码,您需要创建一个Lambda函数,并将其配置为在S3存储桶上接收事件通知。请参考AWS文档了解更多关于设置Lambda函数和S3事件通知的信息。
注意:为了使Lambda函数能够调用AWS Glue API,您需要为Lambda函数提供具有适当权限的IAM角色。请确保为Lambda函数分配了具有AWSGlueServiceRole策略的角色,以便它可以调用AWS Glue API。