Amazon web services Amazon EventBridge:匹配数组中的对象

Amazon web services Amazon EventBridge:匹配数组中的对象,amazon-web-services,rules,event-bus,aws-event-bridge,Amazon Web Services,Rules,Event Bus,Aws Event Bridge,我在定义匹配我的事件的规则时遇到了问题。 谷歌搜索,测试 比方说,我们有以下事件,其中包含数组事件中的对象用户: 是否有任何方法可以匹配EventBus规则中的user.id? 我已尝试使用以下无效规则: { "detail": { "events": [ { "user": { "id": [ "5efdee60b48e7

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

比方说,我们有以下事件,其中包含数组事件中的对象用户:

是否有任何方法可以匹配EventBus规则中的user.id? 我已尝试使用以下无效规则:

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

也没有效果


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

我对你的例子做了一些尝试,但我无法让它起作用。通过阅读本文,我不得不得出结论,在数组内部匹配复杂值是不可能的

如果事件中的值是一个数组,那么如果模式数组和事件数组的交集为非空,则模式匹配


从页面匹配值总是在数组中。因此,如果您的模式是一个数组,并且事件中的值也是一个数组(这是您给出的示例),则将执行基于集合的相交测试。您的模式必须匹配整个数组条目,而不是像示例中那样只匹配一个字段。

我对您的示例做了一些尝试,但无法使其工作。通过阅读本文,我不得不得出结论,在数组内部匹配复杂值是不可能的

如果事件中的值是一个数组,那么如果模式数组和事件数组的交集为非空,则模式匹配


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

如今,EventBridge只支持将简单值字符串、整数、布尔值、null与数组匹配。今天,EventBridge只支持将简单值字符串、整数、布尔值、空值与数组匹配。您可以在中阅读更多信息。

此模式应适用于匹配此事件:

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

此模式应与此事件相匹配:

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

你不需要:在两种情况下都在user{中。那么应该有user:{?@Marcin这只是一个拼写错误。修复了。你不需要:在两种情况下都在user{中。所以应该有user:{?@Marcin这只是一个输入错误。已修复。要进行测试,SDK中的EventBridge对象上有一个测试方法。最后,我用lambda解决了这个问题,lambda将我数组的数据映射到一个没有数组的新对象中,然后我将这个新对象作为事件发送到另一个eventbus。要进行测试,在ESDK中的ventBridge对象。最后,我用lambda解决了这个问题,它将我的数组数据映射到一个没有数组的新对象中,然后我将这个新对象作为事件发送到另一个eventbus。这确实有效!这确实有效!
{
  "detail": {
    "events": {
      "user": {
        "id": [
          "5efdee60b48e7c1836078290"
        ]
      }
    }
  }
}