选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

教程:创建用于过滤源事件的 EventBridge 管道

聚焦模式
教程:创建用于过滤源事件的 EventBridge 管道 - Amazon EventBridge

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

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

在本教程中,您将创建一个管道,将 DynamoDB 流源连接到 Amazon SQS 队列目标。其中包括为管道指定事件模式,用于筛选要传送到队列的事件。然后,您将测试管道以确保只传送所需的事件。

先决条件:创建源和目标

在创建管道之前,您需要创建管道要连接的源和目标。在本例中,Amazon DynamoDB 数据流作为管道源,Amazon SQS 队列作为管道目标。

要简化此步骤,您可以使用预 AWS CloudFormation 置源资源和目标资源。为此,您需要创建一个定义以下资源的 CloudFormation 模板:

  • 管道源

    名为 pipe-tutorial-source 的 Amazon DynamoDB 表,启用了一个流,提供有关 DynamoDB 表中项目更改情况的的排序信息流。

  • 管道目标

    名为 pipe-tutorial-target 的 Amazon SQS 队列,用于从您的管道接收 DynamoDB 事件流。

创建用于配置管道资源的 CloudFormation 模板
  1. 复制下方 AWS CloudFormation 用于生成先决条件的模板 部分中的 JSON 模板文本。

  2. 将模板另存为 JSON 文件(例如,~/pipe-tutorial-resources.json)。

接下来,使用您刚刚创建的模板文件来配置堆 CloudFormation 栈。

注意

创建 CloudFormation 堆栈后,您需要为其预置的 AWS 资源付费。

使用 AWS CLI 配置教程先决条件
  • 运行以下 CLI 命令,其中 --template-body 指定模板文件的位置:

    aws cloudformation create-stack --stack-name pipe-tuturial-resources --template-body file://~/pipe-tutorial-resources.json
使用 CloudFormation 控制台配置教程先决条件
  1. https://console.aws.amazon.com/cloudformat ion 上打开 AWS CloudFormation 控制台。

  2. 依次选择堆栈、选择创建堆栈使用新资源(标准)

    CloudFormation 显示创建堆栈向导。

  3. 对于先决条件 - 准备模板,保留默认值,模板已准备就绪已选中。

  4. 指定模板下选择上传模板文件,然后选择文件并选择下一步

  5. 配置堆栈及其要预置的资源:

    • 对于堆栈名称,输入 pipe-tuturial-resources

    • 参数中,请保留 DynamoDB 表和 Amazon SQS 队列的默认名称。

    • 选择下一步

  6. 选择下一步,然后选择提交

    CloudFormation 创建堆栈并置备模板中定义的资源。

有关的更多信息 CloudFormation,请参阅什么是 AWS CloudFormation? 在《AWS CloudFormation 用户指南》中。

步骤 1:创建管道

预置管道源和目标后,您现在可以创建管道来连接这两个服务。

使用 EventBridge 控制台创建管道
  1. 打开亚马逊 EventBridge 控制台,网址为https://console.aws.amazon.com/events/

  2. 在导航窗格中,选择管道

  3. 选择创建管道

  4. 对于名称,将管道命名为 pipe-tutorial

  5. 指定 DynamoDB 数据流源:

    1. 详细信息下,对于,选择 DynamoDB 数据流

      EventBridge 显示特定于 DynamoDB 的源配置设置。

    2. 对于 DynamoDB 流,选择 pipe-tutorial-source

      起始位置保留为默认值 Latest

    3. 选择下一步

  6. 指定并测试用于筛选事件的事件模式:

    通过筛选,您可以控制管道将哪些事件发送到富集或目标。管道仅将与事件模式匹配的事件发送到富集或目标。

    有关更多信息,请参阅 Amazon P EventBridge ipes 中的事件筛选

    注意

    您只需为发送到富集或目标的事件付费。

    1. 示例事件 - 可选 下,保持 AWS 事件的选中状态,并确保选中 DynamoDB 流示例事件 1

      这是您将用来测试我们的事件模式的示例事件。

    2. 事件模式下,输入以下事件模式:

      { "eventName": ["INSERT", "MODIFY"] }
    3. 选择测试模式

      EventBridge 显示一条消息,说明示例事件与事件模式匹配。这是因为示例事件的 eventName 值为 INSERT

    4. 选择下一步

  7. 选择下一步,跳过指定富集的操作。

    在此示例中,您无需选择富集。富集支持您选择一项服务,增强来自源的数据,然后再将其发送到目标。有关更多详细信息,请参阅 Amazon Pipes 中的活动丰富 EventBridge 内容

  8. 将您的 Amazon SQS 队列指定为管道目标:

    1. 详细信息下,目标服务选择 Amazon SQS 队列

    2. 对于队列,选择 pipe-tutorial-target

    3. 目标输入转换器部分留空。

      有关更多信息,请参阅 Amazon Pip EventBridge es 输入转换

  9. 选择创建管道

    EventBridge 创建管道并显示管道详细信息页面。一旦管道的状态更新为 Running,即说明管道已准备就绪。

步骤 2:确认管道筛选器事件

管道已设置完毕,但尚未从表中接收事件。

要测试管道,您需要更新 DynamoDB 表中的条目。每次更新都会生成事件,DynamoDB 流会将这些事件发送到我们的管道。有些事件会匹配您指定的事件模式,有些则不会。然后,您可以检查 Amazon SQS 队列,确保管道仅传送了与我们的事件模式匹配的事件。

更新表项目,生成事件
  1. 打开 DynamoDB 控制台,网址为。https://console.aws.amazon.com/dynamodb/

  2. 在左侧导航栏上,选择。选择 pipe-tutorial-source 表。

    DynamoDB 显示 pipe-tutorial-source 的表详细信息页面。

  3. 选择浏览表项目,然后选择创建项目

    DynamoDB 会显示创建项目页面。

  4. 属性下,创建一个新的表项目:

    1. 专辑中输入 Album A

    2. 艺术家中输入 Artist A

    3. 选择创建项目

  5. 更新表项目:

    1. 返回的项目下,选择 Album A

    2. 选择添加新属性,然后选择字符串

    3. 输入 Song 的新值,值为 Song A

    4. 选择 Save changes(保存更改)

  6. 删除表项目:

    1. 返回的项目下,选中 Album A

    2. 操作菜单中选择删除项目

您已对表项目进行了三次更新;这会为 DynamoDB 数据流生成三个事件:

  • 创建项目时会生成 INSERT 事件。

  • 为项目添加属性时会生成 MODIFY 事件。

  • 删除项目时会生成 REMOVE 事件。

但是,您为管道指定的事件模式应筛选掉所有不是 INSERTMODIFY 的事件。接下来,确认管道已将预期的事件传送到队列。

确认预期的事件已传送到队列。
  1. 打开 Amazon SQS 控制台,网址为。https://console.aws.amazon.com/sqs/

  2. 选择 pipe-tutorial-target 队列。

    Amazon SQS 会显示队列详情页面。

  3. 选择发送和接收消息,然后在接收消息下选择轮询消息

    队列会轮询管道,然后列出它收到的事件。

  4. 选择事件名称,查看已传送的事件 JSON。

队列中应该有两个事件:一个 eventNameINSERT,另一个 eventNameMODIFY。但是,管道没有传送删除表项目的事件,因为该事件的 eventNameREMOVE,与您在管道中指定的事件模式不匹配。

步骤 3:清理资源

首先,删除管道本身。

使用 EventBridge 控制台删除管道
  1. 打开亚马逊 EventBridge 控制台,网址为https://console.aws.amazon.com/events/

  2. 在导航窗格中,选择管道

  3. 选择 pipe-tutorial 管道并选择删除

然后,删除 CloudFormation 堆栈,以免因继续使用其中预置的资源而被收费。

使用 AWS CLI 删除教程先决条件
  • 运行以下 CLI 命令,其中 --stack-name 指定堆栈的名称:

    aws cloudformation delete-stack --stack-name pipe-tuturial-resources
使用 AWS CloudFormation 控制台删除教程先决条件
  1. https://console.aws.amazon.com/cloudformat ion 上打开 AWS CloudFormation 控制台。

  2. 堆栈页面上,选择堆栈,然后选择删除

  3. 选择删除确认您的操作。

AWS CloudFormation 用于生成先决条件的模板

使用下面的 JSON 创建 CloudFormation 模板,用于配置本教程所需的源资源和目标资源。

{ "AWSTemplateFormatVersion": "2010-09-09", "Description" : "Provisions resources to use with the EventBridge Pipes tutorial. You will be billed for the AWS resources used if you create a stack from this template.", "Parameters" : { "SourceTableName" : { "Type" : "String", "Default" : "pipe-tutorial-source", "Description" : "Specify the name of the table to provision as the pipe source, or accept the default." }, "TargetQueueName" : { "Type" : "String", "Default" : "pipe-tutorial-target", "Description" : "Specify the name of the queue to provision as the pipe target, or accept the default." } }, "Resources": { "PipeTutorialSourceDynamoDBTable": { "Type": "AWS::DynamoDB::Table", "Properties": { "AttributeDefinitions": [{ "AttributeName": "Album", "AttributeType": "S" }, { "AttributeName": "Artist", "AttributeType": "S" } ], "KeySchema": [{ "AttributeName": "Album", "KeyType": "HASH" }, { "AttributeName": "Artist", "KeyType": "RANGE" } ], "ProvisionedThroughput": { "ReadCapacityUnits": 10, "WriteCapacityUnits": 10 }, "StreamSpecification": { "StreamViewType": "NEW_AND_OLD_IMAGES" }, "TableName": { "Ref" : "SourceTableName" } } }, "PipeTutorialTargetQueue": { "Type": "AWS::SQS::Queue", "Properties": { "QueueName": { "Ref" : "TargetQueueName" } } } } }
隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。