如何在 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"
]
此事件将匹配名称以 DemoApp1 或 DemoApp2
开头的警报【讨论】:
以上是关于如何在 AWS eventbridge eventpattern 的任何其他子句中使用多个前缀?的主要内容,如果未能解决你的问题,请参考以下文章
AWS EventBridge:删除多个对象时如何仅发送 1 个通知
terraform 中是不是有任何特定的资源标签可以在 eventbridge 中创建规则
How-to centralized integration of eventbridge event notifications sent to feishu