如何在AWS EventBridge事件模式的“anything-but”子句中使用多个前缀?

4

我有一个情况,需要使用事件模式在事件桥中过滤出特定的事件。 我想运行规则以处理除用户名以abc或xyz开头的所有事件之外的所有事件。 我尝试了以下两种语法,但都没有成功:

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

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

在保存规则时出现以下错误: “事件模式无效。原因:在除列表以外的任何地方,start | null | boolean 不受支持。
我是否在语法上遗漏了什么,或者如果这是一个限制,那么是否有解决此问题的替代方法?

2
就文档所述,《基于内容的事件模式过滤》(Content-based Filtering with Event Patterns) (https://docs.aws.amazon.com/eventbridge/latest/userguide/content-filtering-with-event-patterns.html),您无法提供多个“前缀”。 - samtoddler
所以除了设置多个规则之外,是否有其他实现这一目标的替代方法? - Viv
要么拆分规则,要么避免基于前缀匹配。 - samtoddler
2个回答

6

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

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

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

1

TLDR: 用户@samtoddler的说法在一定程度上是正确的。

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

如果不可能,请在将其发送到计算机(可能是Lambda)进行其他属性过滤之前尽可能进行过滤。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接