使用 CDK 的事件模式规则“anything-but”

问题描述 投票:0回答:2

我正在尝试将以下事件模式添加到事件桥上的特定规则

{
  "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 的限制?

python amazon-web-services aws-cdk
2个回答
0
投票

请弄清楚,这是当前版本的 CDK 的限制。

它应该通过 CDK 团队的此 PR 进行修复:https://github.com/aws/aws-cdk/pull/21310


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.