AWS Lambda函数用于启动Glue作业

时间:2018-04-09 07:23:39

标签: aws-lambda aws-glue

我对AWS lambda不太了解。我的要求是在文件复制到S3存储桶后运行Glue作业。

所以我计划使用AWS Lamdba启动AWS Glue作业。但Lambda功能限制为300毫秒,我的胶水工作需要数小时。

我的问题是Lambda将如何运作,它会启动Glue工作并退出。或者如果我们杀死lambda工作胶水工作也会被杀死?

如果我们杀死lambda工作并且胶水工作也被杀死了。那么其他解决方案是什么?

4 个答案:

答案 0 :(得分:0)

Lambda将触发胶合扳机并退出。胶水作业将继续运行。

答案 1 :(得分:0)

由于来自AWS Lambda的调用是异步的,因此AWS Glue作业将继续运行。

使用带有Boto AWS Python SDK的Lambda Python处理程序,您将在Lambda函数退出时运行Glue作业(实际上是REST API调用)。

在此处查看更多详细信息: https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-python-calling.html

答案 2 :(得分:0)

`

AWSGlue awsGlueClient = AWSGlueClient.builder().withRegion("us-east-1").build();
StartJobRunRequest jobRunRequest = new StartJobRunRequest();
jobRunRequest.setJobName("my_transformer");
StartJobRunResult jobRunResult = awsGlueClient.startJobRun(jobRunRequest);

`

`

<dependency>     
<groupId>com.amazonaws</groupId>     
<artifactId>aws-java-sdk-glue</artifactId>     
<version>1.11.826</version> 
</dependency>

`

答案 3 :(得分:0)

丹尼尔

以下内容对我有用,并且已投入生产两年。我仅在下面的python代码示例中给出了从AWS Lambda调用胶水作业的信息。

谢谢

from __future__ import print_function
import boto3
import urllib

print('Loading function')

glue = boto3.client('glue')

def lambda_handler(event, context):
    gluejobname="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 e