Amazon EventBridge:匹配数组内的对象

dob*_*man 14 rules amazon-web-services event-bus aws-event-bridge

我在定义匹配我的事件的规则时遇到了这个问题。谷歌搜索,测试过。

假设我们有以下事件,其中包含user数组中的对象events

{
    "version": "0",
    "...": "...",
    "detail": {
        "events": [
            {
                "user": {
                    "id": "5efdee60b48e7c1836078290"
                }
            }
        ]
    }
}
Run Code Online (Sandbox Code Playgroud)

有什么方法可以匹配user.idEventBus 规则中的 吗?我已经尝试使用以下无效规则:

{
  "detail": {
    "events": [
      {
        "user": {
          "id": [
            "5efdee60b48e7c1836078290"
          ]
        }
      }
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)

然后,

{
  "detail": {
    "events[0]": {
      "user": {
        "id": [
          "5efdee60b48e7c1836078290"
        ]
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

也没有效果。

我不想放弃,但我已经厌倦了;)

小智 17

此模式应该可以匹配此事件:

{
  "detail": {
    "events": {
      "user": {
        "id": [
          "5efdee60b48e7c1836078290"
        ]
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)


tsd*_*sey 1

我用你的例子做了一些尝试,但我无法让它工作。基于阅读EventBridge 事件模式中的数组,我不得不得出结论,将内部数组与复杂值进行匹配是不可能的。

似乎证实这一点的引用是“如果事件中的值是一个数组,那么如果模式数组和事件数组的交集非空,则模式匹配。”

并从“事件模式”页面“匹配值始终位于数组中”。因此,如果您的模式是一个数组,并且事件中的值也是一个数组(这是您给出的示例),则会执行基于“集合”的交叉测试。您的模式必须匹配整个数组条目,而不仅仅是像示例中的单个字段。