AWS Eventbridge:捕获所有事件的模式

Har*_*els 5 amazon-web-services serverless-architecture serverless amazon-cloudwatch-events

我想在 Eventbridge 中部署一个由所有事件触发的 AWS 事件规则,没有任何过滤。

我尝试了以下模式但没有运气。

{
source: ["*"]
}
Run Code Online (Sandbox Code Playgroud)

根据文档,您不能将模式留空。此外,模式中未包含的任何字段都是通配符,这意味着它们可以是任何值。

我读过一些文章说 Eventbridge 可以取代 SNS 和 SQS 等服务,但没有这些更精细的控制,我看不到这种情况发生。

谢谢

Mar*_*cin 11

根据评论。

解决方案是使用空前缀匹配的所有事件:

{
"source": [{"prefix": "" }]
}
Run Code Online (Sandbox Code Playgroud)


小智 6

对于 TypeScript 中的 CDK,您可以使用以下命令提供匹配模式as any[]

import * as cdk from 'aws-cdk-lib';

const catchAllRule = new cdk.aws_events.Rule(stack, 'CatchAllRule', {
    targets: [...],
    eventBus: ...,
    eventPattern: {
        source: [ { prefix: ''} ] as any[]
    }
});
Run Code Online (Sandbox Code Playgroud)

生成此 CloudFormation:

  EventId:
    Type: AWS::Events::Rule
    Properties:
      EventBusName:
        Ref: ...
      EventPattern:
        source:
          - prefix: ""
      State: ENABLED
Run Code Online (Sandbox Code Playgroud)

这适用于 TypeScript。在其他语言中,您可能必须使用逃生舱口并覆盖该属性。

参考:

相关问题: