我正在尝试将以下事件模式添加到事件桥上的特定规则
{
"account": ["0000000000000"],
"source": [{
"anything-but": ["some.source"]
}]
}
我尝试使用这个Python代码
event_bridge.Rule(self, "send_to_firehose",
event_bus=remote_eventbridge,
event_pattern=event_bridge.EventPattern(
account=[self.account],
source=[{"anything-but":["some.source"]}],
.....
但是“源”不接受 json,只接受字符串数组:
source: typing.Optional[typing.Sequence[builtins.str]] = None,
所以我决定尝试使用转储:
event_bridge.Rule(self, "send_to_firehose",
event_bus=remote_eventbridge,
event_pattern=event_bridge.EventPattern(
account=[self.account],
source=[json.dumps({"anything-but":["some.source"]})],
.....
但没有按预期工作,结果:
{
"account": ["0000000"],
"source": ["{\"anything-but\": [\"some.source\"]}"]
}
有没有办法在源代码中添加“anything-but”规则,或者这是 cdk 的限制?
请弄清楚,这是当前版本的 CDK 的限制。
它应该通过 CDK 团队的此 PR 进行修复:https://github.com/aws/aws-cdk/pull/21310
AWS CDKv2 提供了可用于实现此目的的匹配器。在这种情况下,您可以查看:
new events.Rule(self, "send_to_firehose", {
...
source: events.Match.anythingBut("some.source"),
region: events.Match.anythingButPrefix("some-region-prefix")
.....
});
您可以在这里阅读更多相关信息:https://constructs.dev/packages/aws-cdk-lib/v/2.147.3?submodule=aws_events&lang=typescript