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

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

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

您可以将 EventBridge 中的 Amazon API 调用事件发送到 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. 打开位于 https://console.aws.amazon.com/events/ 的 Amazon EventBridge 控制台。

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

  3. 选择 Create rule (创建规则)

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

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

  6. 对于 Rule type(规则类型),选择 Rule with an event pattern(具有事件模式的规则)。

  7. 选择 Next(下一步)。

  8. 对于 Event source(事件源),选择 Amazon 事件或 EventBridge 合作伙伴事件

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

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

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

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

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

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

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

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

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

        关系留空。对于 Value(值),输入 running。选择设置

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

        关系留空。对于 Value(值),输入 aws.ec2。选择设置

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

        关系留空。对于 Value(值),输入 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. 对于 Target types(目标类型),选择 Amazon service(服务)。

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

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

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

  16. 选择 Next(下一步)。

  17. 选择 Next(下一步)。

  18. 查看规则详细信息并选择 Create rule(创建规则)。

步骤 3:测试规则

为了测试规则,停用一个 Amazon EC2 实例。等待几分钟以便实例停止,然后检查 CloudWatch 指标,验证您的函数是否运行。

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

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

  3. 打开位于 https://console.aws.amazon.com/events/ 的 Amazon EventBridge 控制台。

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

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

  5. (可选)当您完成后,终止该实例。有关更多信息,请参阅适用于 Linux 实例的 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. 在字段中输入删除,并选择删除