Amazon CloudWatch 事件
用户指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

教程:使用 CloudWatch Events 将事件中继到 Kinesis 流

您可以将 CloudWatch Events 中的 AWS API 调用事件中继到 Kinesis 中的流。

先决条件

安装 AWS CLI。 有关更多信息,请参阅 AWS Command Line Interface 用户指南

步骤 1:创建 Kinesis 流

使用下面的 create-stream 命令创建流。

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

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

Copy
aws kinesis describe-stream --stream-name test

步骤 2:创建规则

例如,创建一条规则,以在您停止 Amazon EC2 实例时将事件发送到流。

创建规则

  1. 通过以下网址打开 CloudWatch 控制台:https://console.amazonaws.cn/cloudwatch/

  2. 在导航窗格中,选择 Events

  3. 选择 Create rule

  4. 对于 Event source,执行以下操作:

    1. 选择 Event Pattern

    2. 选择 Build event pattern to match events by service

    3. 选择 EC2,然后选择 Instance State-change Notification

    4. 选择 Specific state(s),然后选择 Running

  5. 对于 Targets,选择 Add target,然后选择 Kinesis stream

  6. 对于 Stream,选择您创建的流。

  7. 选择 Create a new role for this specific resource

  8. 选择 Configure details

  9. 对于 Rule definition,键入规则的名称和描述。

  10. 选择 Create rule

步骤 3:测试规则

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

通过停止一个实例来测试您的规则

  1. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

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

  3. 通过以下网址打开 CloudWatch 控制台:https://console.amazonaws.cn/cloudwatch/

  4. 若要查看事件的指标,请执行以下操作:

    1. 在导航窗格中,依次选择 EventsRules

    2. 选择您创建的规则的名称。

    3. 选择 Show metrics for the rule

  5. (可选) 完成后,您可以终止实例。想要了解更多信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例) 中的终止您的实例

步骤 4:验证事件是否已中继

您可以从流中获取记录,以验证事件是否已中继。

获取记录

  1. 使用以下 get-shard-iterator 命令开始从 Kinesis 流中读取数据:

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

    下面是示例输出:

    Copy
    { "ShardIterator": "AAAAAAAAAAHSywljv0zEgPX4NyKdZ5wryMzP9yALs8NeKbUjp1IxtZs1Sp+KEd9I6AJ9ZG4lNR1EMi+9Md/nHvtLyxpfhEzYvkTZ4D9DQVz/mBYWRO6OTZRKnW9gd+efGN2aHFdkH1rJl4BL9Wyrk+ghYG22D2T1Da2EyNSH1+LAbK33gQweTJADBdyMwlo5r6PqcP2dzhg=" }
  2. 使用以下 get-records 命令获取记录。分区迭代器是您在上一步获取的:

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

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

    Kinesis 中的记录是经过 Base64 编码的。但是,AWS CLI 中的流支持不提供 Base64 解码。如果您使用 Base64 解码程序手动解码数据,则会发现它是以 JSON 格式中继到流的事件。