创建 Amazon EventBridge 示例应用程序 - Amazon EventBridge
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

创建 Amazon EventBridge 示例应用程序

您可以使用 EventBridge,通过规则事件路由到特定 Lambda 函数。

在本教程中,您将使用 Amazon CLI、Node.js 和 GitHub 存储库中的代码来创建以下内容:

  • 一个 Amazon Lambda 函数,为银行 ATM 交易生成事件。

  • 三个 Lambda 函数,用作 EventBridge 规则的目标

  • 以及根据事件模式将创建的事件路由到正确的下游函数的规则。

此示例使用 Amazon SAM 模板来定义 EventBridge 规则。要了解有关如何在 EventBridge 中使用 Amazon SAM 模板的更多信息,请参阅 使用 Amazon EventBridge 和 Amazon Serverless Application Model 模板

在存储库中,atmProducer 子目录包含 handler.js,代表生成事件的 ATM 服务。这段代码是用 Node.js 编写的 Lambda 处理程序,它使用这行 JavaScript 代码通过 Amazon 开发工具包将事件发布到 EventBridge。

const result = await eventbridge.putEvents(params).promise()

此目录还包含 events.js,在条目数组中列出了几个测试交易。在 JavaScript 中,单个事件的定义如下:

{ // Event envelope fields Source: 'custom.myATMapp', EventBusName: 'default', DetailType: 'transaction', Time: new Date(), // Main event body Detail: JSON.stringify({ action: 'withdrawal', location: 'MA-BOS-01', amount: 300, result: 'approved', transactionId: '123456', cardPresent: true, partnerBank: 'Example Bank', remainingFunds: 722.34 }) }

事件的 Detail 部分指定了交易属性。其中包括 ATM 的位置、金额、合作银行和交易结果。

atmConsumer 子目录中的 handler.js 文件包含三个函数:

exports.case1Handler = async (event) => { console.log('--- Approved transactions ---') console.log(JSON.stringify(event, null, 2)) } exports.case2Handler = async (event) => { console.log('--- NY location transactions ---') console.log(JSON.stringify(event, null, 2)) } exports.case3Handler = async (event) => { console.log('--- Unapproved transactions ---') console.log(JSON.stringify(event, null, 2)) }

每个函数都会接收交易事件,这些事件通过 console.log 语句记录到 Amazon CloudWatch Logs 中。消费者函数独立于生产者运行,它们不知道事件的源。

路由逻辑包含在 EventBridge 规则中,这些规则由应用程序的 Amazon SAM 模板部署。这些规则会评估传入的事件流,并将匹配的事件路由到目标 Lambda 函数。

这些规则使用的事件模式是 JSON 对象,与它们匹配的事件具有相同的结构。以下是其中一条规则的事件模式。

{ "detail-type": ["transaction"], "source": ["custom.myATMapp"], "detail": { "location": [{ "prefix": "NY-" }] } }

先决条件

完成本教程需要以下资源:

步骤 1:创建应用程序

要设置示例应用程序,您需要使用 Amazon CLI 和 Git 来创建所需的 Amazon 资源。

创建应用程序
  1. 登录 Amazon

  2. 在本地计算机上安装 Git安装 Amazon Serverless Application Model CLI

  3. 创建一个新目录,然后在终端中导航到该目录。

  4. 在命令行输入 git clone https://github.com/aws-samples/amazon-eventbridge-producer-consumer-example

  5. 在命令行中运行以下命令:

    cd ./amazon-eventbridge-producer-consumer-example sam deploy --guided
  6. 在终端上执行以下操作:

    1. 对于 Stack Name,输入堆栈的名称。例如,将堆栈命名为 Test

    2. 对于 AWS Region,输入区域。例如,us-west-2

    3. 对于 Confirm changes before deploy,输入 Y

    4. 对于 Allow SAM CLI IAM role creation,输入 Y

    5. 对于 Save arguments to configuration file,输入 Y

    6. 对于 SAM configuration file,输入 samconfig.toml

    7. 对于 SAM configuration environment,输入 default

步骤 2:运行应用程序

您已设置资源,现在可以利用控制台测试功能。

运行应用程序
  1. 在您部署 Amazon SAM 应用程序的同一区域中打开 Lambda 控制台

  2. 有四个 Lambda 函数的前缀为 atm-demo。选择 atmProducerFn 函数,然后选择操作测试

  3. 对于名称,输入 Test

  4. 选择 Test(测试)。

步骤 3:检查日志并验证应用程序运行是否正常

现在,应用程序已运行,您将使用控制台查看 CloudWatch Logs。

查看日志
  1. 在您运行 Amazon SAM 应用程序的同一区域中打开 CloudWatch 控制台

  2. 选择 Logs(日志),然后选择 Log groups(日志组)。

  3. 选择包含 atmConsumerCase1 的日志组。您会看到两个数据流,分别代表 ATM 批准的两笔交易。选择要查看输出的日志流。

  4. 返回日志组列表,然后选择包含 atmConsumerCase2 的日志组。您将看到两个数据流,分别代表与纽约 位置筛选器匹配的两笔交易。

  5. 返回日志组列表,然后选择包含 atmConsumerCase3 的日志组。打开流,查看被拒绝的交易。

步骤 4:清理资源

除非您想要保留为本教程创建的资源,否则可立即将其删除。请删除您不再使用的 Amazon 资源,这样可防止您的 Amazon 账户产生不必要的费用。

删除 EventBridge 规则
  1. 在 EventBridge 控制台中打开规则页面

  2. 选择您创建的规则。

  3. 选择 Delete

  4. 选择 Delete

删除 Lambda 函数
  1. 打开 Lamba 控制台的函数页面

  2. 选择您创建的函数。

  3. 依次选择 ActionsDelete

  4. 选择 Delete (删除)

删除 CloudWatch Logs 日志组
  1. 打开 CloudWatch 控制台

  2. 依次选择日志日志组

  3. 选择在本教程中创建的日志组。

  4. 依次选择 Actions(操作)和 Delete log group(s)(删除日志组)。

  5. 选择 Delete