如何获取触发AWS Glue工作流的EventBridge事件数据?
解决EventBridge触发Glue作业时无法获取事件数据的问题
一、修正参数传递配置
Glue作业的自定义参数必须以--开头,这是核心注意点,以下是两种方法的正确配置:
方法1:传递完整EventBridge事件
在EventBridge目标的作业参数中添加:
- 键:
--event_data - 值:
$($代表完整的事件对象)
方法2:用Input Transformer映射指定字段
如果只需事件中的部分数据,按以下配置Input Transformer:
- 输入路径:定义要提取的事件字段,例如提取
detail字段:{"event_detail": "$.detail"} - 输入模板:将提取的字段映射为Glue可识别的参数格式:
{"--event_data": "<event_detail>"}
这样EventBridge会直接生成带--前缀的参数传递给Glue作业。
二、调整Glue作业代码
在代码中增加参数排查逻辑,便于定位问题:
import json import sys from awsglue.utils import getResolvedOptions # 先打印所有传入参数,确认event_data是否被传递 print("All input arguments:", sys.argv) try: # 获取指定参数(注意这里用不带--的参数名) args = getResolvedOptions(sys.argv, ['event_data']) print("Raw event data received:", args['event_data']) # 解析JSON数据 event_data = json.loads(args['event_data']) print("Parsed event data:", event_data) except Exception as e: print(f"Error handling event data: {str(e)}")
三、排查验证步骤
- 检查EventBridge执行历史:进入EventBridge规则的「执行历史」,查看触发记录的输入输出,确认参数是否按预期生成
- 查看Glue作业日志:在CloudWatch中找到对应Glue作业的日志流,检查打印的
sys.argv,确认--event_data参数是否存在 - 验证Input Transformer语法:输入路径必须符合JSONPath规范,输入模板中的变量需用
<>包裹,且输出必须是合法JSON
内容的提问来源于stack exchange,提问作者NaineeL SoyantaR
相关产品推荐
相关产品推荐

