1

我有一种情况,我需要使用 eventbridge 中的 eventpatterns 过滤掉某些事件。我想为所有事件运行规则,除了用户名以 abc 或 xyz 开头的事件。我尝试了以下 2 种语法,但都没有奏效:

"userIdentity": {
      "sessionContext": {
        "sessionIssuer": {
          "userName": [
            {
              "anything-but": {
                "prefix": [
                  "abc-",
                  "xyz-"
                ]
              }
            }
          ]
        }
      }
    }

"userIdentity": {
      "sessionContext": {
        "sessionIssuer": {
          "userName": [
            {
              "anything-but": [{
                "prefix": "abc-",
                "prefix": "xyz-"
              }]
            }
          ]
        }
      }
    }

保存规则时出现以下错误:“事件模式无效。原因:在除列表之外的任何内容中,不支持 start|null|boolean。

我是否遗漏了语法中的某些内容,或者如果这是一个限制,那么这个问题有什么替代方法吗?

4

2 回答 2

1

TLDR:用户@samtoddler 是正确的。

前缀匹配仅适用于https://docs.aws.amazon.com/eventbridge/latest/userguide/content-filtering-with-event-patterns.html#filtering-prefix-matching中调用的值。它们不适用于数组。您可以向 AWS 支持提出功能请求,但如果您想自己解锁;您最好控制您为 userName 拥有的前缀(猜测这是与 IAM 相关且在您的控制范围内的东西)。

如果那不可能;在发送到计算(可能是 lambda)以执行额外的过滤之前,请考虑通过其他属性尽可能多地过滤。

于 2021-02-12T03:02:24.573 回答
0

您可以在事件模式的数组中使用前缀。这是一个示例模式:

{
      "detail": {
        "alarmName": [{
            "prefix": "DemoApp1"
          },
          {
            "prefix": "DemoApp2"
          }
        ],
        "state": {
          "value": [
            "ALARM"
          ]
        },
        "previousState": {
          "value": [
            "OK"
          ]
        }
    }
}

此事件将匹配名称以DemoApp1DemoApp2 开头的警报

于 2021-10-07T01:20:11.850 回答