如何在 AWS eventbridge eventpattern 中的anything-but 子句中使用多个前缀?

问题描述

我有一种情况,我需要在 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。"

我是否遗漏了语法中的某些内容,或者如果这是一个限制,那么是否有其他方法可以解决此问题?

解决方法

TLDR:用户@samtoddler 是正确的。

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

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...