AWS EventBridge输入路径无效:是否支持JsonPath过滤表达式?
AWS EventBridge输入转换器报错原因及解决方案
问题根因
AWS EventBridge的InputPath不支持JsonPath的过滤表达式(即[?()]这类条件筛选语法),尽管测试界面可能模拟返回了正确结果,但服务端的配置校验会拦截这类语法,导致点击Update rule时提示“InputPath is invalid”。
正确配置方案
方案1:固定索引取值(适用于元素位置确定的场景)
如果attachments中type="eni"的元素位置固定(比如示例中是第二个元素,索引为1),可以直接用索引定位:
- InputPath配置:
{ "privateIp": "$.detail.attachments[1].details[0].value" }
- Template配置保持不变:
{ "privateIp": "<privateIp>" }
缺点:如果attachments中元素顺序发生变化,会提取错误的值。
方案2:使用VTL模板动态过滤(灵活通用)
利用EventBridge Input Transformer支持的Velocity Template Language(VTL)实现动态过滤,步骤如下:
- InputPath配置(传入整个attachments数组):
{ "attachments": "$.detail.attachments" }
- Template配置(通过VTL遍历筛选):
{ "privateIp": "#foreach($attachment in $attachments)#if($attachment.type == 'eni')#foreach($detail in $attachment.details)#if($detail.name == 'privateIPv4Address')$detail.value#end#end#end" }
该方案会自动遍历attachments数组,找到type="eni"的元素后,再从中提取name="privateIPv4Address"对应的value,无需依赖元素位置。
内容的提问来源于stack exchange,提问作者Chiamin
相关产品推荐
相关产品推荐

