教程:使用架构向 Amazon Kinesis 发送事件 EventBridge - Amazon EventBridge
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

教程:使用架构向 Amazon Kinesis 发送事件 EventBridge

您可以将 Amazon API呼叫事件发送 EventBridge 到 Amazon Kinesis 数据流、创建 Kinesis Data Streams 应用程序以及处理大量数据。在本教程中,您将创建一个 Kinesis 流,然后在 EventBridge 控制台中创建一条规则,以便在 A ma zon EC2 实例停止时向该流发送事件。

先决条件

在本教程中,您将使用以下工具:

注意

本教程使用 Amazon 事件和内置aws.events架构注册表。您也可以根据自定义事件的架构创建 EventBridge 规则,方法是手动将它们添加到自定义架构注册表中,或者使用架构发现。

有关架构的更多信息,请参阅 亚马逊 EventBridge 架构。有关使用其他事件模式选项创建规则的更多信息,请参阅 创建可对 Amazon 中的事件做出反应的规则 EventBridge

步骤 1:创建 Amazon Kinesis 流

要创建直播,请在命令提示符下使用create-stream Amazon CLI 命令。

aws kinesis create-stream --stream-name test --shard-count 1

当流状态为 ACTIVE 时,表示流已就绪。要检查流状态,请使用 describe-stream 命令。

aws kinesis describe-stream --stream-name test

步骤 2:创建规则

创建规则,以便在您停止 Amazon EC2 实例时向您的直播发送事件。

创建 规则
  1. 打开 Amazon EventBridge 控制台,网址为https://console.aws.amazon.com/events/

  2. 在导航窗格中,选择规则

  3. 选择创建规则

  4. 为规则输入名称和描述。例如,将规则命名为 TestRule

  5. 对于事件总线,选择默认

  6. 对于规则类型,选择具有事件模式的规则

  7. 选择下一步

  8. 对于事件来源,选择Amazon 事件或 EventBridge 合作伙伴事件

  9. 对于创建方法,选择使用架构

  10. 对于 Event pattern(事件模式),执行以下操作:

    1. 对于架构类型,选择从架构注册表中选择架构

    2. 对于架构注册表,请从下拉列表中选择 aws.events

    3. 对于架构,请EC2InstanceStateChangeNotification从下拉列表中选择 aws.ec2@

      EventBridge 在 “模型” 下显示事件架构。

      EventBridge 在事件所需的所有属性旁边显示一个红色星号,而不是事件模式所需的属性。

    4. 模型中,设置以下事件筛选属性:

      1. 选择 state 属性旁的 + 编辑

        关系留空。对于,请输入 running。选择设置

      2. 选择 source 属性旁的 + 编辑

        关系留空。对于,请输入 aws.ec2。选择设置

      3. 选择 detail-type 属性旁的 + 编辑

        关系留空。对于,请输入 EC2 Instance State-change Notification。选择设置

    5. 要查看您构建的事件模式,请在中选择 “生成事件模式” JSON

      EventBridge 在以下位置显示事件模式JSON:

      { "detail": { "state": ["running"] }, "detail-type": ["EC2 Instance State-change Notification"], "source": ["aws.ec2"] }
  11. 选择 Next(下一步)

  12. 对于目标类型,选择Amazon 服务

  13. 对于选择目标,从下拉列表中选择 Kinesis 流

  14. 对于,请选择您在步骤 1:创建 Amazon Kinesis 流部分创建的 Kinesis 流。在此示例中,选择 test

  15. 对于执行角色,选择为此特定资源创建新角色

  16. 选择下一步

  17. 选择下一步

  18. 查看规则详细信息并选择创建规则

步骤 3:测试规则

要测试您的规则,请停止 Amazon EC2 实例。等待几分钟让实例停止,然后检查您的 CloudWatch 指标以验证您的函数是否已运行。

通过停止一个实例来测试您的规则
  1. 打开 Amazon EC2 控制台,网址为https://console.aws.amazon.com/ec2/

  2. 启动一个实例。有关更多信息,请参阅 Amazon EC2 用户指南中的启动您的实例

  3. 打开 Amazon EventBridge 控制台,网址为https://console.aws.amazon.com/events/

  4. 在导航窗格中,选择规则

    选择所创建规则的名称,然后选择 Metrics for the rule (规则的指标)

  5. (可选)当您完成后,终止该实例。有关更多信息,请参阅 Amazon EC2 用户指南中的终止您的实例

步骤 4:验证事件是否已发送

您可以使用从直播中获取记录,以验证事件是否已发送。 Amazon CLI

获取记录
  1. 要开始从 Kinesis 流中读取,请在命令提示符下使用 get-shard-iterator 命令。

    aws kinesis get-shard-iterator --shard-id shardId-000000000000 --shard-iterator-type TRIM_HORIZON --stream-name test

    下面是示例输出。

    { "ShardIterator": "AAAAAAAAAAHSywljv0zEgPX4NyKdZ5wryMzP9yALs8NeKbUjp1IxtZs1Sp+KEd9I6AJ9ZG4lNR1EMi+9Md/nHvtLyxpfhEzYvkTZ4D9DQVz/mBYWRO6OTZRKnW9gd+efGN2aHFdkH1rJl4BL9Wyrk+ghYG22D2T1Da2EyNSH1+LAbK33gQweTJADBdyMwlo5r6PqcP2dzhg=" }
  2. 要获取记录,请使用以下 get-records 命令。使用上一步输出中的分片迭代器。

    aws kinesis get-records --shard-iterator AAAAAAAAAAHSywljv0zEgPX4NyKdZ5wryMzP9yALs8NeKbUjp1IxtZs1Sp+KEd9I6AJ9ZG4lNR1EMi+9Md/nHvtLyxpfhEzYvkTZ4D9DQVz/mBYWRO6OTZRKnW9gd+efGN2aHFdkH1rJl4BL9Wyrk+ghYG22D2T1Da2EyNSH1+LAbK33gQweTJADBdyMwlo5r6PqcP2dzhg=

    如果命令成功,它将从指定分片的流中请求记录。您可能会收到零个或多个记录。返回的任何记录都不能表示流中的所有记录。如果您未收到预期的数据,请继续调用 get-records

  3. Kinesis 中的记录是以 Base64 编码的。使用 Base64 解码器对数据进行解码,这样您就可以验证是否是以表单形式发送到流中的事件。JSON

步骤 5:清理资源

除非您想要保留为本教程创建的资源,否则可立即将其删除。通过删除不再使用的 Amazon 资源,可以防止向您的 Amazon 账户收取不必要的费用。

要删除 EventBridge 规则
  1. 打开 EventBridge 控制台的 “规则” 页面

  2. 选择您创建的规则。

  3. 选择 Delete

  4. 选择 Delete

删除 Kinesis 流
  1. 在 Kinesis 控制台中打开数据流页面

  2. 选择您创建的流。

  3. 依次选择操作删除

  4. 在字段中输入删除,并选择删除