You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Lambda函数中通过Python和Boto3调用Glue工作流时传递RunProperties

解决AWS Glue Workflow运行时传递参数的问题

你遇到的这个参数验证错误是因为**start_workflow_run方法并不支持RunProperties这个参数名**——这个参数是给Glue Job的start_job_run用的,而启动Workflow时传递自定义参数需要用WorkflowRunProperties。

错误原因分析

你原来的代码里用了RunProperties,但根据boto3的Glue客户端定义,start_workflow_run的合法参数只有Name、WorkflowRunProperties和ClientRequestToken,所以才会抛出Unknown parameter in input: "RunProperties"的错误。

正确的代码实现

下面是修正后的代码,同时包含从Lambda事件中动态获取参数的逻辑:

import json
import boto3
from botocore.exceptions import ClientError

def lambda_handler(event, context):
    # 从Lambda事件中获取动态参数(这里假设event里有s3_path字段,可根据实际调整)
    dynamic_s3_path = event.get('s3_path', 's3://bucketname/default.zip')
    
    glue_client = boto3.client('glue')
    workflow_run_properties = {'s3_path': dynamic_s3_path}
    
    try:
        response = glue_client.start_workflow_run(
            Name="Testing",
            WorkflowRunProperties=workflow_run_properties
        )
        print("Workflow启动成功:", response)
        return {
            'statusCode': 200,
            'body': json.dumps(response)
        }
    except ClientError as e:
        print("启动Workflow失败:", e.response['Error']['Message'])
        return {
            'statusCode': 500,
            'body': json.dumps({'error': e.response['Error']['Message']})
        }

关键说明

  • 参数名修正:把RunProperties改成WorkflowRunProperties,这是start_workflow_run方法专门用来传递自定义运行参数的字段。
  • 动态参数获取:通过event.get()从Lambda触发事件中提取你需要的动态值,设置默认值是为了防止事件中没有对应字段时程序报错。
  • 异常处理:保留了ClientError的捕获,方便排查权限不足、Workflow名称错误等其他潜在问题。

验证参数是否传递成功

在Workflow关联的Glue Job中,你可以通过$WorkflowRunProperties.s3_path这样的变量来引用这些传递的参数,比如在Job脚本或Job参数配置中直接使用该变量。

内容的提问来源于stack exchange,提问作者Swarnitha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 11:58:11