如何通过Lambda向AWS Glue工作流传递参数至所有任务
向AWS Glue工作流传参并覆盖所有任务的实操方法
1. Lambda触发工作流时直接传参
在Lambda里调用Glue的start_workflow_run API,用RunProperties字段把参数传给工作流——这些参数会自动成为整个工作流的运行参数,所有任务都能读取到。
给个Python示例:
import boto3 glue_client = boto3.client('glue') def lambda_handler(event, context): # 从Lambda触发事件里提取要传递的参数,也可直接定义测试值 workflow_params = event.get('workflow_parameters', { 'custom_param1': 'test_value1', 'job_bookmark_option': 'job-bookmark-disable' }) # 启动目标工作流并传入参数 response = glue_client.start_workflow_run( Name='你的工作流名称', RunProperties=workflow_params ) return { 'statusCode': 200, 'workflow_run_id': response['RunId'] }
2. 让工作流内的任务读取并使用这些参数
要让任务用工作流参数覆盖自身默认配置,需在任务配置里通过变量引用工作流参数:
针对Glue作业任务:
进入作业配置页面,在Job parameters中添加键值对,用${workflow.runProperties.参数名}的格式引用工作流参数。比如:
- 覆盖自定义参数:
--custom_param1=${workflow.runProperties.custom_param1} - 覆盖系统参数(如禁用作业书签):
--job-bookmark-option=${workflow.runProperties.job_bookmark_option}
针对Glue爬虫任务:
直接在爬虫的配置项里用同样的变量格式替换目标值。比如把爬虫的Target paths设为${workflow.runProperties.target_s3_path},启动工作流时传入的参数会自动替换这个路径。
3. 验证参数传递是否生效
- 登录Glue控制台,找到对应工作流的运行记录,查看Run properties,确认传入的参数已存在
- 查看工作流内各任务的运行日志,检查参数是否被正确加载和使用
内容的提问来源于stack exchange,提问作者Rakesh Badal
相关产品推荐
相关产品推荐

