Amazon web services 通过Lambda函数触发AWS胶水工作流

Amazon web services 通过Lambda函数触发AWS胶水工作流,amazon-web-services,aws-lambda,aws-glue,Amazon Web Services,Aws Lambda,Aws Glue,我是AWS GLUE的新手,尝试使用Lambda函数触发GLUE工作流 我正在使用bot3.client('glue')属性 “Glue”对象没有属性start\u workflow\u run 下面是我正在尝试运行的一段代码: import json import boto3 def lambda_handler(event, context): client = boto3.client('glue') client.start_workflow_run(Name = 'Workflow_N

我是AWS GLUE的新手,尝试使用Lambda函数触发GLUE工作流

我正在使用bot3.client('glue')属性

“Glue”对象没有属性
start\u workflow\u run

下面是我正在尝试运行的一段代码:

import json
import boto3
def lambda_handler(event, context):
client = boto3.client('glue')
client.start_workflow_run(Name = 'Workflow_New', Arguments = {})

有没有其他方法可以实现我正在尝试的目标?

下面的链接可以找到aws示例并为glue传递参数


我认为glue没有名为“启动工作流运行”的功能。请尝试“启动作业运行”


response=client.start\u job\u run(JobName='Workflow\u New',Arguments={})

关于如何使用代码片段从lambda调用AWS Glue,请参考此说明

谢谢


Yuva

这可以从Lambda(python)调用glue工作流


请尝试使用以下代码段:

导入boto3
glueClient=boto3.client('glue')
response=glueClient.start\u workflow\u run(Name='wf\u Name')
您也可以使用此文档:

尝试使用:

导入json
进口boto3
def lambda_处理程序(事件、上下文):
glueClient=bot3.客户端(“glue”,地区名称='us-west-2')
response=glueClient.start\u workflow\u run(Name=workflow\u Name)

另外,我认为您可能还需要在响应周围添加错误处理

谢谢你的回复。我检查了那些链接,但这并没有解决我的问题。这不起作用,因为start\u job\u run将搜索粘合作业名称而不是工作流名称。谢谢你的回复。我能够从Lambda触发一个粘合作业,问题只是工作流程。好吧,我不这么认为。通过此链接,有用于glue run_工作流的boto3 api命令。我还没有尝试过,将更新您。是的,boto3文档中提到了一个API:启动\u工作流\u运行,但不确定此API不起作用的原因。其他响应是错误的。他们一直在为运行作业而不是工作流提供建议,只是boto3版本不是python运行时的最新版本。我希望是现在(在boto3-1.12.22上)。如果没有,则使用更新版本的lambda层,
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
import json
import boto3
def lambda_handler(event, context):

    # add your region_name
    glue = boto3.client(service_name='glue', region_name='eu-west-2') 
    
    # only 'Name' parameter
    workflow_run_id = glue.start_workflow_run(Name = 'Your_Workflow')

    print(f'workflow_run_id: {workflow_run_id}')