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

如何将AWS EventBridge事件参数成功传递给Glue作业

问题描述

已搭建数据管道:当S3存储桶新增文件时,通过AWS EventBridge触发Glue Workflow,触发流程可正常启动Glue作业。现在需要将EventBridge事件中的S3桶名和对象路径参数传递给Glue作业,但配置输入转换器后,Glue作业无法获取到这些参数。

当前配置

  • Input Path:
    { "bucket_name": "$.detail.bucket.name", "object_key": "$.detail.object.key" }
    
  • Input Template:
    {"--bucket_name": <bucket_name>,"--object_key": <object_key>}
    

注:已尝试过输入模板键名添加/不添加“--”两种方式。

现状

新增文件仍能触发EventBridge并启动Glue作业,但通过打印sys.argv验证,Glue作业无法获取bucket_name和object_key参数。


解决方法

1. 调整参数传递逻辑

如果是触发Glue Workflow,参数不会自动流转到Workflow内的Glue Job。可以二选一:

  • 改为EventBridge直接触发Glue Job(而非Workflow);
  • 在Glue Workflow的Job节点中配置参数映射,把EventBridge传入的参数传递给Job。

2. 修正Input Template格式

EventBridge给Glue Job传参数时,必须将参数嵌套在Arguments字段下,且模板中的变量要加引号。正确配置如下:

  • Input Path(保持不变):
    { "bucket_name": "$.detail.bucket.name", "object_key": "$.detail.object.key" }
    
  • Input Template:
    {
      "Arguments": {
        "--bucket_name": "<bucket_name>",
        "--object_key": "<object_key>"
      }
    }
    

之前的模板未嵌套在Arguments中,导致Glue Job无法识别参数。

3. 正确读取Glue Job参数

不要仅依赖sys.argv打印,使用Glue官方提供的getResolvedOptions方法更稳定:

import sys
from awsglue.utils import getResolvedOptions

# 指定需要获取的参数名称
args = getResolvedOptions(sys.argv, ['bucket_name', 'object_key'])
bucket_name = args['bucket_name']
object_key = args['object_key']
print(f"待处理文件路径:s3://{bucket_name}/{object_key}")

4. 验证EventBridge事件结构

前往EventBridge的事件历史页面,查看触发的具体事件内容,确认$.detail.bucket.name和$.detail.object.key路径确实存在,避免因事件格式不符导致参数提取失败。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 03:03:12