在EventBridge创建RDS实例启动触发Lambda规则遇格式错误求助
解决EventBridge RDS启动事件规则的格式错误问题
你的核心问题是混淆了AWS事件的JSON结构和EventBridge事件模式的语法规则。你写的是实际触发的事件内容,但EventBridge规则需要的是用来匹配事件的模式,语法要求每个字段的值必须是数组或匹配对象,不能直接用字符串。
错误原因解析
错误提示里的"version" must be an object or an array就是因为你给version字段赋值了字符串"0",而事件模式要求这个字段的值必须是数组(表示匹配该数组内的任意值),或者用匹配运算符的对象。
正确的事件模式示例
针对RDS实例启动的场景,你可以用以下简化且有效的事件模式:
{ "version": ["0"], "detail-type": ["RDS DB Instance Event"], "source": ["aws.rds"], "region": ["eu-south-2"], "resources": ["XXX"], "detail": { "EventCategories": ["notification"], "SourceType": ["DB_INSTANCE"], "SourceArn": ["XXX"], "EventID": ["RDS-EVENT-0088"] } }
关键调整说明
- 所有字段的值都用数组包裹:比如
"version": ["0"]表示匹配version为"0"的事件 - 建议保留
EventID: ["RDS-EVENT-0088"]:这是AWS官方定义的RDS实例启动事件ID,比匹配Message字段更可靠(Message可能因区域或语言变化) - 可以按需移除不必要的字段:比如如果不需要限制特定region或resource,可以删除对应行,扩大匹配范围
验证方法
你可以用EventBridge控制台的「测试事件模式」功能,导入一条RDS实例启动的实际事件(可以从CloudTrail或RDS事件历史里获取),来验证你的模式是否能正确匹配。
内容的提问来源于stack exchange,提问作者Ivan
相关产品推荐
相关产品推荐

