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

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

教程:使用 EventBridge 和架构向 Amazon Kinesis 流发送事件 aws.events

您可以将 Amazon API 调用事件发送 EventBridge 到 Amazon Kinesis 流、创建 Kinesis Data Streams 应用程序以及处理大量数据。在本教程中,您将创建一个 Kinesis 流,然后在 EventBridge 控制台中创建一个规则,以便在 Amazon 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. 打开亚马逊 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. 对于架构,请InstanceStateChangeNotification从下拉列表中选择 aws.ec2 @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. 打开亚马逊 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. 在字段中输入删除,并选择删除