选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

使用 AWS Serverless Application Model 模板部署 Amazon EventBridge 资源

聚焦模式
使用 AWS Serverless Application Model 模板部署 Amazon EventBridge 资源 - Amazon EventBridge

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

您可以在 EventBridge 控制台中手动构建和测试规则,这有助于完善事件模式的开发过程。但是,一旦您准备好部署应用程序,使用 AWS SAM 等框架一致地启动所有无服务器资源则更加方便。

我们将使用此示例应用程序来研究如何使用 AWS SAM 模板来构建 EventBridge 资源。此示例中的 template.yaml 文件是一个 AWS SAM 模板,它定义了四个AWS Lambda函数,并显示了将 Lambda 函数与集成的两种不同方法。 EventBridge

有关此示例应用程序的演练,请参阅教程:创建示例 Amazon EventBridge 应用程序

有两种使用 EventBridge 和 AWS SAM 模板的方法。对于由一条规则调用一个 Lambda 函数的简单集成,建议使用组合模板方法。如果您的路由逻辑很复杂,或者您要连接到 AWS SAM 模板之外的资源,那么分开的模板方法是更好的选择。

组合模板

第一种方法使用Events属性来配置 EventBridge 规则。以下示例代码定义了一个事件,它调用您的 Lambda 函数。

注意

此示例自动在默认事件总线上创建规则,该总线存在于每个 AWS 账户中。要将规则与自定义事件总线关联,可以将 EventBusName 添加到模板中。

atmConsumerCase3Fn: Type: AWS::Serverless::Function Properties: CodeUri: atmConsumer/ Handler: handler.case3Handler Runtime: nodejs12.x Events: Trigger: Type: CloudWatchEvent Properties: Pattern: source: - custom.myATMapp detail-type: - transaction detail: result: - "anything-but": "approved"

此 YAML 代码等同于 EventBridge 控制台中的事件模式。在 YAML 中,您只需要定义事件模式,然后 AWS SAM 自动创建具有所需权限的 IAM 角色。

分开的模板

在中定义 EventBridge 配置的第二种方法中 AWS SAM,在模板中对资源进行了更明确的分隔。

  1. 首先,您要定义 Lambda 函数:

    atmConsumerCase1Fn: Type: AWS::Serverless::Function Properties: CodeUri: atmConsumer/ Handler: handler.case1Handler Runtime: nodejs12.x
  2. 接下来,使用 AWS::Events::Rule 资源定义规则。这些属性定义了事件模式,也可以指定目标。您可以明确定义多个目标。

    EventRuleCase1: Type: AWS::Events::Rule Properties: Description: "Approved transactions" EventPattern: source: - "custom.myATMapp" detail-type: - transaction detail: result: - "approved" State: "ENABLED" Targets: - Arn: Fn::GetAtt: - "atmConsumerCase1Fn" - "Arn" Id: "atmConsumerTarget1"
  3. 最后,定义一个授予调 EventBridge 用目标权限的AWS::Lambda::Permission资源。

    PermissionForEventsToInvokeLambda: Type: AWS::Lambda::Permission Properties: FunctionName: Ref: "atmConsumerCase1Fn" Action: "lambda:InvokeFunction" Principal: "events.amazonaws.com" SourceArn: Fn::GetAtt: - "EventRuleCase1" - "Arn"

本页内容

隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。