如何在 AWS eventbridge eventpattern 的任何其他子句中使用多个前缀?

Posted

技术标签:

【中文标题】如何在 AWS eventbridge eventpattern 的任何其他子句中使用多个前缀?【英文标题】:How to use multiple prefixes in anything-but clause in AWS eventbridge eventpattern? 【发布时间】:2021-05-05 16:34:57 【问题描述】:

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

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

【问题讨论】:

就文档而言Content-based Filtering with Event Patterns你不能提供多个prefixes 那么有没有其他方法可以实现这一点(除了有多个规则)? 要么拆分规则,要么根据前缀尽量不匹配 【参考方案1】:

TLDR:用户@samtoddler 有点正确。

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

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

【讨论】:

【参考方案2】:

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


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

此事件将匹配名称以 DemoApp1DemoApp2

开头的警报

【讨论】:

以上是关于如何在 AWS eventbridge eventpattern 的任何其他子句中使用多个前缀?的主要内容,如果未能解决你的问题,请参考以下文章

AWS EventBridge:删除多个对象时如何仅发送 1 个通知

terraform 中是不是有任何特定的资源标签可以在 eventbridge 中创建规则

AWS EventBridge 单个事件中的多个目标

AWS Eventbridge 通知无法使用 SNS 主题

How-to centralized integration of eventbridge event notifications sent to feishu

lambda 创建事件事件的权限:PutEvents