亚马逊AWS官方博客

介绍对 Amazon EventBridge 的日志记录支持

今天,亚马逊云科技宣布支持使用 EventBridge Pipes 进行日志记录Amazon EventBridge Pipes 是一种点对点集成解决方案,通过可选的筛选、转换和扩充步骤将事件产生器和使用器联系起来。EventBridge Pipes 可减少构建者在构建事件驱动型应用程序时需要编写和维护的集成代码量。常见的集成包括 Amazon Kinesis 流与筛选的连接、Amazon DynamoDBAmazon EventBridge 的直接集成,以及 Amazon SQSAmazon Step Functions 的集成。

Amazon EventBridge Pipes 架构

EventBridge Pipes 日志记录引入了不同管道执行阶段的详情。它扩展了 Amazon CloudWatch 指标支持,并为您提供了其他故障排除和调试方法。

现在,您可以深入了解管道执行步骤中的各种成功和失败场景。当事件转换或扩充成功或失败时,您可以使用日志进行更深入的研究,并针对其配置管道中的任何问题启动故障排除。

EventBridge Pipes 执行步骤

了解管道执行步骤可以帮助您选择适当的日志级别,该级别决定记录的信息量。

管道执行是管道接收到的从源传输到目标的一个或一批事件。当事件流经管道时,可以使用 Amazon Step FunctionsAmazon LambdaAmazon API GatewayEventBridge API 目标对其进行筛选、转换或扩充。

管道执行包括两个主要阶段:扩充和目标。这两个阶段都包含转换和调用步骤。

您可以使用输入转换器,在事件经过扩充或被分派到下游目标之前修改事件的有效负载。这使您可以在执行事件的配置管道期间对事件数据的操作进行精细控制。

当管道执行开始时,执行进入扩充阶段。如果您未配置扩充阶段,则执行将进入目标阶段。

EventBridge Pipes 的执行流程示意图

在管道执行、转换、扩充和目标阶段,EventBridge 可以记录信息以帮助进行调试或故障排除。管道日志可以包括有效负载、错误、转换、亚马逊云科技请求和亚马逊云科技响应。

要了解有关管道执行的更多信息,请阅读此文档

使用 EventBridge Pipes 配置日志级别

为管道启用日志记录后,EventBridge 会为每个执行步骤生成一个日志条目,并将这些日志发送到指定的日志目标。

EventBridge Pipes 支持三个日志目标:Amazon CloudWatch Logs、Amazon Kinesis Data Firehose 流和 Amazon S3。通过配置管道的日志级别(关闭、错误、信息、跟踪),可以对发送的记录进行自定义。

  • 关闭 — EventBridge 不发送任何记录。
  • 错误 — EventBridge 发送与管道执行期间生成的错误相关的记录。示例包括执行失败、执行超时和扩充失败。
  • 信息 — EventBridge 发送与管道执行期间执行的错误和选定信息相关的记录。示例包括执行已开始、执行成功和扩充阶段成功。
  • 跟踪 — EventBridge 发送在管道执行的任何步骤中生成的所有记录。

事实证明,错误日志级别有助于深入了解管道执行失败的原因。管道执行可能会由于各种原因而出现失败,例如超时、扩充失败、转换失败或目标调用失败。启用错误日志记录可以让您详细了解管道错误的具体原因,以便解决问题。

“信息”日志级别为错误信息补充其他详细信息。它不仅提供有关错误的信息,还提供关于所处阶段(管道执行开始、进入扩充阶段、进入转换阶段以及启动和成功完成目标阶段)的详情。

要进行更深入的分析,您可以使用跟踪日志级别来全面了解管道执行情况。这包括所有受支持的管道日志,除了“信息”和“错误”日志之外,还提供详细的视图。跟踪日志级别揭示了关键信息,例如跳过的管道执行阶段以及转换和扩充过程的启动。

可以阅读文档了解有关日志级别和所发送日志的更多详细信息。

在 EventBridge Pipes 日志记录中包含执行数据

为了帮助进一步进行调试,您可以选择在管道日志中包含执行数据。这些数据包括事件负载、亚马逊云科技请求以及向配置的扩充和目标组件发送和接收的响应。

您还可以使用执行数据来进一步了解管道执行期间发送到亚马逊云科技服务的有效负载、请求和响应。

整合执行数据可以增强对管道执行的理解,提供更深入的见解,并有助于调试遇到的任何问题。

日志中的执行数据包含三部分:

  • 有效负载:事件本身的内容。事件的有效负载可能包含敏感信息,EventBridge 不会尝试编辑该内容。包括执行数据是可选设置,可以将其关闭。
  • awsRequest以序列化 JSON 格式发送到扩充或目标阶段的请求。对于 API 目标,这包括发送到该端点的 HTTP 请求。
  • awsResponse:扩充或目标阶段以 JSON 格式返回的响应。对于 API 目标,这是从配置的端点返回的响应。

当事件本身可以更新时,就会填充事件的有效负载。这些阶段包括初始管道执行、扩充阶段和目标阶段。awsRequestawsResponse 都是在扩充和目标阶段的最后步骤生成的。

有关日志级别和执行数据的更多信息,请访问此文档

开始使用 EventBridge Pipes 日志

此示例创建了一个启用了日志记录的管道,并包含执行数据。该管道使用目标阶段上的输入转换器连接两个 Amazon SQS 队列,没有任何扩充步骤。输入转换器自定义事件到达目标阶段之前的有效负载。

  1. 创建源队列和目标队列
    # 为源创建队列
    aws sqs create-queue --queue-name pipe-source
    # 为目标创建队列
    aws sqs create-queue --queue-name pipe-target
    
  2. 导航到 EventBridge Pipes,然后选择创建管道
  3. 选择 SQS 作为并选择 pipe-source 作为 SQS 队列
  4. 跳过筛选和扩充阶段,并添加新的目标。选择 SQS 作为目标服务并选择 pipe-target 作为队列。

  5. 打开目标输入转换器部分,然后在转换器字段中输入转换器代码。
    {
    "body": "Favorite food is <$.body>"
    }
    
  6. 选择管道设置,为新管道配置日志组。
  7. 确认已将 CloudWatch Logs 设置为日志目标,然后选择跟踪作为日志级别。勾选包括执行数据复选框。这会将所有跟踪记录到新的 CloudWatch 日志组,并包括在管道上发送的 SQS 消息。
  8. 选择创建管道
  9. 向源队列发送 SQS 消息。
    # 获取队列 URL
    aws sqs get-queue-url --queue-name pipe-source
    # 使用 URL 向队列发送消息
    aws sqs send-message --queue-url {QUEUE_URL} --message-body "pizza"
    
  10. 所有跟踪日志都显示在“监控”选项卡中,请查看 CloudWatch Logs 部分以获取更多信息。

总结

EventBridge Pipes 实现了事件产生器和使用器之间的点对点集成。借助 EventBridge Pipes 的日志记录支持,您现在可以深入了解管道执行的各个阶段。管道日志目标可以配置为 CloudWatch Logs、Kinesis Data Firehose 和 Amazon S3。

EventBridge Pipes 支持三个日志级别。错误日志级别,将 EventBridge 配置为将与错误相关的记录发送到日志目标。信息日志级别,将 EventBridge 配置为发送管道执行期间与错误和选定信息相关的记录。跟踪日志级别,将生成的任何记录发送到日志目标,这对于调试和获得进一步的见解很有用。

您可以在日志中包含执行数据,包括事件本身,以及对管道中配置的亚马逊云科技服务的请求和响应。这可以帮助您进一步了解管道执行情况。阅读文档,了解有关 EventBridge Pipes 日志的更多信息。