4

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

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

{
    "version": "0",
    "...": "...",
    "detail": {
        "events": [
            {
                "user": {
                    "id": "5efdee60b48e7c1836078290"
                }
            }
        ]
    }
}

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

{
  "detail": {
    "events": [
      {
        "user": {
          "id": [
            "5efdee60b48e7c1836078290"
          ]
        }
      }
    ]
  }
}

然后,

{
  "detail": {
    "events[0]": {
      "user": {
        "id": [
          "5efdee60b48e7c1836078290"
        ]
      }
    }
  }
}

也没有效果。

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

4

3 回答 3

9

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

{
  "detail": {
    "events": {
      "user": {
        "id": [
          "5efdee60b48e7c1836078290"
        ]
      }
    }
  }
}
于 2020-10-27T08:40:15.863 回答
1

今天,EventBridge 仅支持将简单值(字符串、整数、布尔值、空值)与数组匹配。您可以在服务文档中阅读更多内容。

于 2020-07-06T16:39:55.977 回答
0

我做了一些你的例子,但我不能让它工作。根据阅读EventBridge 事件模式中的数组,我必须得出结论,不可能将数组内部与复杂值匹配。

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

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

于 2020-07-03T18:19:26.137 回答