亚马逊AWS官方博客

新功能 — 使用 Amazon EventBridge Pipes 在事件产生器和事件使用器之间创建点对点集成



使用多个云服务作为构建模块来组装现代事件驱动应用程序的情况日益普遍。使用专门构建的服务完成特定任务可确保开发人员获得适合其使用案例的最佳功能。但是,如果服务使用不同的技术进行通信,则它们之间的通信可能会很困难,这意味着您需要了解每种服务的细微差别以及如何将它们相互集成。我们通常需要创建集成代码(或“粘合”代码)来连接和桥接服务之间的通信。编写粘合代码会减慢我们的开发速度,增加出现错误的风险,这意味着我们将浪费时间编写无差异化的代码,而不是为客户营造更理想的使用体验。

介绍 Amazon EventBridge Pipes
今天,我很高兴地宣布推出 Amazon EventBridge Pipes,这是 Amazon EventBridge 的一项新功能,它提供了一种简单、一致且经济实惠的方式,在事件产生器和事件使用器之间创建点对点集成,从而让您更轻松地构建事件驱动应用程序,而无需编写无差异化的粘合代码。

最简单的管道由源和目标组成。可选的筛选步骤仅允许特定的源事件流入管道,而使用 AWS LambdaAWS Step FunctionsAmazon EventBridge API DestinationsAmazon API Gateway 的可选富集步骤可在事件到达目标之前对其进行富集或转换。借助 Amazon EventBridge Pipes,您可以通过简单、可靠、一致且经济高效的方式将支持的 AWS 和自我管理服务作为事件产生器和事件使用器集成到自己的应用程序中。

Amazon EventBridge Pipes 引入 Amazon EventBridge Event Bus 最受欢迎的功能,例如事件筛选、与超过 14 个 AWS 服务的集成以及自动重试交付。

Amazon EventBridge Pipes 的运作方式
Amazon EventBridge Pipes提供了一种集成所支持 AWS 和自我管理服务的无缝方法,相比于编写代码,该方法更倾向于执行配置。要开始将服务与 EventBridge Pipes 集成,您需要执行以下步骤:

  1. 选择产生事件的源。支持的源包括:Amazon DynamoDBAmazon Kinesis Data StreamsAmazon SQSAmazon Managed Streaming for Apache KafkaAmazon MQ(ActiveMQ 和 RabbitMQ)。
  2. (可选)指定事件筛选条件以仅处理与筛选条件相匹配的事件(您无需为筛选掉的事件付费)。
  3. (可选)使用内置的免费转换转换或富集您的事件,或者使用 AWS LambdaAWS Step FunctionsAmazon API GatewayEventBridge API Destinations 执行更高级的转换和富集。
  4. 从超过 14 个 AWS 服务中选择目标目的地,包括 Amazon Step Functions、Kinesis Data Streams、AWS Lambda 以及使用 EventBridge API 目的地的第三方 API。

Amazon EventBridge Pipes 通过减少学习服务和编写集成代码所需的时间,提供简单性以加快开发速度,从而实现可靠和一致的集成。

EventBridge 管道还具有其他功能,可以帮助构建事件驱动的应用程序。例如,借助事件筛选,管道通过仅处理感兴趣的事件来帮助事件驱动的应用程序变得更具成本效益。

开始使用 Amazon EventBridge Pipes
我们了解如何开始使用 Amazon EventBridge Pipes。在这篇文章中,我将展示如何使用 Amazon EventBridge Pipes 将 Amazon SQS 队列与 AWS Step Functions 集成。

以下屏幕截图是我现有的 Amazon SQS 队列和 AWS Step Functions 状态机。就个人而言,我需要为队列中的每个事件运行状态机。为此,我需要将 SQS 队列和 Step Functions 状态机与 EventBridge Pipes 连接起来。

现有的 Amazon SQS 队列和 AWS Step Functions 状态机

首先,我打开 Amazon EventBridge 控制台。在导航部分中,我选择 Pipes(管道)。然后,我选择 Create pipe(创建管道)。

在此页面上,我可以开始配置管道并设置 AWS Identity and Access Management (IAM) 权限,还可以导航到 Pipe settings(管道设置)选项卡。

导航到管道设置

Permissions(权限)部分中,我可以为此管道定义一个新的 IAM 角色或使用现有角色。为了改善开发人员体验,EventBridge Pipes 控制台会自动找出 IAM 角色,因此我不需要手动配置所需的权限,也无需让 EventBridge Pipes 为 IAM 角色配置最低特权权限。由于这是第一次创建管道,因此我选择 Create a new role for this specific resource(此特定资源创建新角色)。

为管道设置 IAM 权限

然后,我回到 Build pipe(构建管道)部分。在此页面上,我可以看到 EventBridge Pipes 支持的可用事件源。

作为事件源的可用服务列表

我选择 SQS 并选择现有的 SQS 队列。如果我需要进行批处理,可以选择 Additional settings(其他设置)来开始定义批量大小批处理窗口。然后,我选择 Next(下一步)。

选择 SQS 队列作为事件源

在下一页上,事情变得更加有趣,因为我可以从刚才选择的事件源定义事件筛选。此步骤是可选的,但是事件筛选功能可让我轻松处理只需要由自己的事件驱动应用程序处理的事件。此外,此事件筛选功能还可以帮助我提高成本效益,因为管道不会处理不必要的事件。例如,如果我使用 Step Functions 作为目标,则事件筛选将仅执行与筛选条件匹配的事件。

Amazon EventBridge Pipes 中的事件筛选

我可以使用来自 AWS 事件示例事件或定义自定义事件。例如,我想处理价值等于 100 或以上的已购买退货商品的事件。以下是 JSON 格式的示例事件:

{
   "event-type":"RETURN_PURCHASE",
   "value":100
}

然后,在 event pattern(事件模式)部分,我可以通过参考 Amazon EventBridge 事件模式文档中的内容筛选来定义模式。我定义事件模式如下:

{
   "event-type": ["RETURN_PURCHASE"],
   "value": [{
      "numeric": [">=", 100]
   }]
}

我也可以通过选择 test pattern(测试模式)来进行测试,以确保此事件模式与我将要使用的自定义事件相匹配。一旦确信这是我想要的事件模式,我就选择 Next(下一步)。

定义和测试用于筛选的事件模式

在下一个可选步骤中,我可以在将事件发送到目标目的地之前,使用增强功能来增强、转换或扩展事件。在需要使用现有的 AWS Lambda 函数或使用目标 API 来富集外部 SaaS API 时,此富集功能就非常有用。此外,我还可以使用富集输入转换器来塑造事件。

最后一步是定义一个目标,用于处理该管道传输的事件。

定义目标目的地服务

在此处,我可以选择 EventBridge Pipes 支持的各种 AWS 服务。

我选择现有的 AWS Step Functions 状态机,其名为 pipes-statemachine

此外,我还可以通过参考转换 Amazon EventBridge 目标输入文档来使用目标输入转换器。就个人而言,我需要为进入此目标的事件定义高优先级。为此,我在示例事件/事件有效载荷中定义了一个示例自定义事件,并在 Transformer(转换器)部分添加 priority(优先级):HIGH(高)。然后在 Output(输出)部分,我可以看到传递给目标目的地服务的最后一个事件。然后,我选择 Create pipe(创建管道)。

不到一分钟,我的管道就已成功创建。

管道已成功创建

要测试此管道,我需要在 Amaon SQS 队列中放入一个事件。

向 Amazon SQS 队列发送消息

要检查 Step Functions 是否成功处理我的事件,我可以在 Step Functions 中查看自己的状态机。在此页面上,我看到自己的事件已成功得到处理。

我也可以前往 Amazon CloudWatch Logs 获取更详细的日志。

注意事项
事件源
– 在发布时,Amazon EventBridge Pipes 支持以下服务作为事件源:Amazon DynamoDB、Amazon Kinesis、Amazon Managed Streaming for Apache Kafka (Amazon MSK) 和自我管理的 Apache Kafka、Amazon SQS(标准和 FIFO)以及 Amazon MQ(同时适用于 ActiveMQ 和 RabbitMQ)。

事件目标 – Amazon EventBridge Pipes 支持 15 个亚马逊 EventBridge 目标,包括 AWS Lambda、Amazon API Gateway、Amazon SNS、Amazon SQS 和 AWS Step Functions。要将事件传输到任何 HTTPS 端点,开发人员可以使用 API 目的地作为目标。

事件排序 – EventBridge Pipes 维护从事件源接收到的事件的顺序,这些事件源支持在将这些事件发送到目标服务时进行排序。

编程访问 – 您还可以与 Amazon EventBridge Pipes 交互并使用 AWS 命令行界面 (CLI)AWS CloudFormationAWS Cloud Development Kit (AWS CDK) 创建管道。

独立使用 – EventBridge Pipes 可以与 Amazon EventBridge 总线和 Amazon EventBridge 计划程序分开使用。这种灵活性可帮助开发人员将来自所支持 AWS 和自我管理服务的源事件定义为没有 Amazon EventBridge Event Bus 的事件源。

可用性 – Amazon EventBridge Pipes 现已在所有 AWS 商业区域正式推出,亚太地区(海得拉巴)和欧洲(苏黎世)区域除外。

访问 Amazon EventBridge Pipes 页面,了解有关此功能的更多信息并了解价格。您也可以访问文档页面以了解有关如何入门的更多信息。

祝大家构建顺利!

Donnie