本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
教程:创建示例 Amazon EventBridge 应用程序
您可以使用规则将事件路由 EventBridge 到特定的 Lambda 函数。
在本教程中,您将使用 AWS CLI、Node.js 和 GitHub存储库
一个 AWS Lambda 函数,为银行 ATM 交易生成事件。
三个 Lambda 函数可用作规则的 EventBridge 目标。
以及根据事件模式将创建的事件路由到正确的下游函数的规则。
此示例使用 AWS SAM 模板来定义 EventBridge 规则。要了解有关使用 AWS SAM 模板的更多信息, EventBridge 请参阅使用 AWS Serverless Application Model 模板部署 Amazon EventBridge 资源。
在存储库中,atmProducer 子目录包含 handler.js
,代表生成事件的 ATM 服务。此代码是用 Node.js 编写的 Lambda 处理程序,并使用此行代码 EventBridge 通过AWS 软件开发工具包
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 L CloudWatch o gs 中。消费者函数独立于生产者运行,它们不知道事件的源。
路由逻辑包含在应用程序 AWS SAM 模板部署的 EventBridge 规则中。这些规则会评估传入的事件流,并将匹配的事件路由到目标 Lambda 函数。
这些规则使用的事件模式是 JSON 对象,与它们匹配的事件具有相同的结构。以下是其中一条规则的事件模式。
{ "detail-type": ["transaction"], "source": ["custom.myATMapp"], "detail": { "location": [{ "prefix": "NY-" }] } }
先决条件
完成本教程需要以下资源:
一个 AWS 账户。如果您还没有@@ AWS 账户,请创建一个
账户。 AWS CLI 已安装。要安装 AWS CLI,请参阅安装、更新和卸载 AWS CLI 版本 2。
已安装 Node.js 12.x。要安装 Node.js,请参阅下载
。
步骤 1:创建应用程序
要设置示例应用程序,您需要使用 AWS CLI 和 Git 来创建所需的 AWS 资源。
创建应用程序
-
在本地计算机上@@ 安装 Git
并安装 AWS Serverless Application Model CLI。 -
创建一个新目录,然后在终端中导航到该目录。
-
在命令行输入
git clone https://github.com/aws-samples/amazon-eventbridge-producer-consumer-example
。 -
在命令行中运行以下命令:
cd ./amazon-eventbridge-producer-consumer-example sam deploy --guided
-
在终端上执行以下操作:
-
对于
Stack Name
,输入堆栈的名称。例如,将堆栈命名为Test
。 -
对于
AWS Region
,输入区域。例如,us-west-2
。 -
对于
Confirm changes before deploy
,输入Y
。 -
对于
Allow SAM CLI IAM role creation
,输入Y
。 -
对于
Save arguments to configuration file
,输入Y
。 -
对于
SAM configuration file
,输入samconfig.toml
。 -
对于
SAM configuration environment
,输入default
。
-
步骤 2:运行应用程序
您已设置资源,现在可以利用控制台测试功能。
运行应用程序
在您部署应用程序的同一区域中打开 Lambda 控制台
。 AWS SAM 有四个 Lambda 函数的前缀为 atm-demo。选择atmProducerFn函数,然后选择操作、测试。
对于名称,输入
Test
。选择测试。
步骤 3:检查日志并验证应用程序运行是否正常
现在你已经运行了应用程序,你将使用控制台来检查日 CloudWatch 志。
查看日志
在您运行 AWS SAM 应用程序的同一区域中打开CloudWatch 控制台
。 选择 Logs(日志),然后选择 Log groups(日志组)。
选择包含 atmConsumerCase1 的日志组。您会看到两个数据流,分别代表 ATM 批准的两笔交易。选择要查看输出的日志流。
返回日志组列表,然后选择包含 atmConsumerCase2 的日志组。您将看到两个数据流,分别代表与纽约 位置筛选器匹配的两笔交易。
返回日志组列表,然后选择包含 atmConsumerCase3 的日志组。打开流,查看被拒绝的交易。
步骤 4:清理资源
除非您想要保留为本教程创建的资源,否则可立即将其删除。通过删除不再使用的 AWS 资源,可以防止向您的 AWS 账户收取不必要的费用。
删除 EventBridge 规则
-
打开 EventBridge 控制台的 “规则” 页面
。 -
选择您创建的规则。
-
选择删除。
-
选择删除。
删除 Lambda 函数
-
打开 Lamba 控制台的函数页面
。 -
选择您创建的函数。
-
依次选择 Actions 和 Delete。
-
选择 Delete(删除)。
删除 CloudWatch 日志日志组
-
打开 CloudWatch 控制台
。 -
依次选择日志、日志组。
-
选择在本教程中创建的日志组。
-
依次选择 Actions(操作)和 Delete log group(s)(删除日志组)。
-
选择 Delete(删除)。