教程:使用 EventBridge 架构将事件发送到 Amazon Kinesis
您可以将 EventBridge 中的 AWS API 调用事件发送到 Amazon Kinesis 流、创建 Kinesis Data Streams 应用程序并处理大量数据。在本教程中,您将创建一个 Kinesis 流,然后在 EventBridge 控制台中创建一条规则,在 Amazon EC2 实例停止时向该流发送事件。
先决条件
在本教程中,您将使用以下工具:
使用 AWS CLI 来处理 Kinesis 流。
要安装 AWS CLI,请参阅安装、更新和卸载 AWS CLI 版本 2。
注意
本教程使用 AWS 事件和内置 aws.events
架构注册表。您也可以根据自定义事件的架构创建 EventBridge 规则,方法是手动将事件添加到自定义架构注册表中,或者使用架构发现。
有关架构的更多信息,请参阅 Amazon EventBridge 架构。有关使用其他事件模式选项创建规则的更多信息,请参阅 在 Amazon EventBridge 中创建对事件作出反应的规则。
步骤 1:创建 Amazon Kinesis 流
要创建流,请在命令提示符下使用 create-stream
AWS CLI 命令。
aws kinesis create-stream --stream-name
test
--shard-count 1
当流状态为 ACTIVE
时,表示流已就绪。要检查流状态,请使用 describe-stream
命令。
aws kinesis describe-stream --stream-name
test
步骤 2:创建规则
创建一条规则,在您停止 Amazon EC2 实例时将事件发送到您的流。
创建 规则
访问 https://console.aws.amazon.com/events/
,打开 Amazon EventBridge 控制台。 -
在导航窗格中,选择规则。
-
选择创建规则。
-
为规则输入名称和描述。例如,将规则命名为
TestRule
-
对于事件总线,选择默认。
-
对于规则类型,选择具有事件模式的规则。
-
选择下一步。
-
对于事件源,选择AWS 事件或 EventBridge 合作伙伴事件。
-
对于创建方法,选择使用架构。
-
对于 Event pattern(事件模式),执行以下操作:
-
对于架构类型,选择从架构注册表中选择架构。
-
对于架构注册表,请从下拉列表中选择 aws.events。
-
对于架构,请从下拉列表中选择 aws.ec2@EC2InstanceStateChangeNotification。
EventBridge 在模型下显示事件架构。
EventBridge 在事件(而不是事件模式)必需的所有属性旁显示一个红色星号。
-
在模型中,设置以下事件筛选属性:
选择 state 属性旁的 + 编辑。
将关系留空。对于值,请输入
running
。选择设置。选择 source 属性旁的 + 编辑。
将关系留空。对于值,请输入
aws.ec2
。选择设置。选择 detail-type 属性旁的 + 编辑。
将关系留空。对于值,请输入
EC2 Instance State-change Notification
。选择设置。
-
要查看您构造的事件模式,请选择以 JSON 格式生成事件模式
EventBridge 以 JSON 格式显示事件模式:
{ "detail": { "state": ["running"] }, "detail-type": ["EC2 Instance State-change Notification"], "source": ["aws.ec2"] }
-
-
选择下一步。
-
对于目标类型,选择AWS 服务。
-
对于选择目标,从下拉列表中选择 Kinesis 流。
-
对于流,请选择您在步骤 1:创建 Amazon Kinesis 流部分创建的 Kinesis 流。在此示例中,选择
test
。 -
对于执行角色,选择为此特定资源创建新角色。
-
选择下一步。
-
选择下一步。
-
查看规则详细信息并选择创建规则。
步骤 3:测试规则
为了测试规则,停用一个 Amazon EC2 实例。等待几分钟以便实例停止,然后检查 CloudWatch 指标,验证您的函数是否运行。
通过停止一个实例来测试您的规则
通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/
。 -
启动一个实例。有关更多信息,请参阅《Amazon EC2 用户指南》中的启动实例。
访问 https://console.aws.amazon.com/events/
,打开 Amazon EventBridge 控制台。 -
在导航窗格中,选择规则。
选择所创建规则的名称,然后选择 Metrics for the rule (规则的指标)。
-
(可选)当您完成后,终止该实例。有关更多信息,请参阅《Amazon EC2 用户指南》中的终止实例。
步骤 4:验证事件是否已发送
您可以使用 AWS CLI 从流中获取记录,验证事件是否已发送。
获取记录
-
要开始从 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=" }
-
要获取记录,请使用以下
get-records
命令。使用上一步输出中的分片迭代器。aws kinesis get-records --shard-iterator
AAAAAAAAAAHSywljv0zEgPX4NyKdZ5wryMzP9yALs8NeKbUjp1IxtZs1Sp+KEd9I6AJ9ZG4lNR1EMi+9Md/nHvtLyxpfhEzYvkTZ4D9DQVz/mBYWRO6OTZRKnW9gd+efGN2aHFdkH1rJl4BL9Wyrk+ghYG22D2T1Da2EyNSH1+LAbK33gQweTJADBdyMwlo5r6PqcP2dzhg=
如果命令成功,它将从指定分片的流中请求记录。您可能会收到零个或多个记录。返回的任何记录都不能表示流中的所有记录。如果您未收到预期的数据,请继续调用
get-records
。 -
Kinesis 中的记录是以 Base64 编码的。使用 Base64 解码器对数据进行解码,这样您就可以验证这是不是以 JSON 格式发送到流的事件。
步骤 5:清理资源
除非您想要保留为本教程创建的资源,否则可立即将其删除。请删除您不再使用的 AWS 资源,这样可防止您的 AWS 账户产生不必要的费用。
删除 EventBridge 规则
-
在 EventBridge 控制台中打开规则页面
。 -
选择您创建的规则。
-
选择 Delete(删除)。
-
选择 Delete(删除)。
删除 Kinesis 流
-
在 Kinesis 控制台中打开数据流页面
。 -
选择您创建的流。
-
依次选择 Actions 和 Delete。
-
在字段中输入删除,并选择删除。