本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
创建 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 开发工具包
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-" }] } }
先决条件
完成本教程需要以下资源:
一个 Amazon 账户。创建一个 Amazon 账户
(如果还没有账户)。 已安装 Amazon CLI。要安装 Amazon CLI,请参阅安装、更新和卸载 Amazon CLI 版本 2。
已安装 Node.js 12.x。要安装 Node.js,请参阅下载
。
步骤 1:创建应用程序
要设置示例应用程序,您需要使用 Amazon CLI 和 Git 来创建所需的 Amazon 资源。
创建应用程序
-
创建一个新目录,然后在终端中导航到该目录。
-
在命令行输入
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:运行应用程序
您已设置资源,现在可以利用控制台测试功能。
运行应用程序
在您部署 Amazon SAM 应用程序的同一区域中打开 Lambda 控制台
。 有四个 Lambda 函数的前缀为 atm-demo。选择 atmProducerFn 函数,然后选择操作、测试。
对于名称,输入
Test
。选择 Test(测试)。
步骤 3:检查日志并验证应用程序运行是否正常
现在,应用程序已运行,您将使用控制台查看 CloudWatch Logs。
查看日志
在您运行 Amazon SAM 应用程序的同一区域中打开 CloudWatch 控制台
。 选择 Logs(日志),然后选择 Log groups(日志组)。
选择包含 atmConsumerCase1 的日志组。您会看到两个数据流,分别代表 ATM 批准的两笔交易。选择要查看输出的日志流。
返回日志组列表,然后选择包含 atmConsumerCase2 的日志组。您将看到两个数据流,分别代表与纽约 位置筛选器匹配的两笔交易。
返回日志组列表,然后选择包含 atmConsumerCase3 的日志组。打开流,查看被拒绝的交易。
步骤 4:清理资源
除非您想要保留为本教程创建的资源,否则可立即将其删除。请删除您不再使用的 Amazon 资源,这样可防止您的 Amazon 账户产生不必要的费用。
删除 EventBridge 规则
-
在 EventBridge 控制台中打开规则页面
。 -
选择您创建的规则。
-
选择 Delete。
-
选择 Delete。
删除 Lambda 函数
-
打开 Lamba 控制台的函数页面
。 -
选择您创建的函数。
-
依次选择 Actions 和 Delete。
-
选择 Delete (删除)。
删除 CloudWatch Logs 日志组
-
打开 CloudWatch 控制台
。 -
依次选择日志、日志组。
-
选择在本教程中创建的日志组。
-
依次选择 Actions(操作)和 Delete log group(s)(删除日志组)。
-
选择 Delete。