示例:解析网络日志(W3C_LOG_PARSE函数) - Amazon Kinesis Data Analytics for SQL 应用程序开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

示例:解析网络日志(W3C_LOG_PARSE函数)

此示例使用 W3C_LOG_PARSE 函数在 Amazon Kinesis Data Analytics 中转换字符串。您可以使用 W3C_LOG_PARSE 快速格式化 Apache 日志。有关更多信息,请参阅 https://docs.amazonaws.cn/kinesisanalytics/latest/sqlref/sql-reference-w3c-log-parse.html 中的 Amazon Kinesis Data Analytics SQL 参考W3C_LOG_PARSE

在本示例中,您将日志记录写入到 Amazon Kinesis 数据流中。示例日志如下所示:

{"Log":"192.168.254.30 - John [24/May/2004:22:01:02 -0700] "GET /icons/apache_pba.gif HTTP/1.1" 304 0"} {"Log":"192.168.254.30 - John [24/May/2004:22:01:03 -0700] "GET /icons/apache_pbb.gif HTTP/1.1" 304 0"} {"Log":"192.168.254.30 - John [24/May/2004:22:01:04 -0700] "GET /icons/apache_pbc.gif HTTP/1.1" 304 0"} ...

然后,您在控制台上创建一个 Amazon Kinesis 数据分析应用程序,并将 Kinesis 数据流作为流式传输源。发现过程读取流式传输源上的示例记录,并推断出具有一个列(日志)的应用程序内部架构,如下所示:


                控制台屏幕截图,显示 Formatted stream sample (格式化的流示例) 选项卡以及包含日志列的应用程序内部架构。

然后,您将使用应用程序代码和 W3C_LOG_PARSE 函数解析日志,创建另一应用程序内部流(将不同日志字段放置在单独的列中),如下所示:


                控制台屏幕截图,显示 Real-time analytics (实时分析) 选项卡和应用程序内部流。

步骤 1. 创建 Kinesis 数据流

创建一个 Amazon Kinesis 数据流并填充日志记录,如下所示:

  1. 登录 AWS 管理控制台并通过以下网址打开 Kinesis 控制台:https://console.amazonaws.cn/kinesis

  2. 在导航窗格中,选择 Data Streams (数据流)

  3. 选择 Create Kinesis stream (创建 Kinesis 流),然后创建带有一个分片的流。有关更多信息,请参阅 https://docs.amazonaws.cn/streams/latest/dev/learning-kinesis-module-one-create-stream.html 开发人员指南中的Amazon Kinesis Data Streams创建流

  4. 运行以下 Python 代码以便填充示例日志记录。这段简单代码不断地将同一日志记录写入到流中。

    import json import boto3 import random kinesis = boto3.client('kinesis') def getLog(): data = {} data['log'] = '192.168.254.30 - John [24/May/2004:22:01:02 -0700] "GET /icons/apache_pb.gif HTTP/1.1" 304 0' return data while True: data = json.dumps(getLog()) print(data) kinesis.put_record( StreamName="ExampleInputStream", Data=data, PartitionKey="partitionkey")

步骤 2. 创建 Kinesis Data Analytics 应用程序

创建一个 Amazon Kinesis 数据分析应用程序,如下所示:

  1. 打开 Kinesis Data Analytics 控制台 ( https://console.amazonaws.cn/kinesisanalytics)。

  2. 选择 Create application (创建应用程序),键入应用程序名称,然后选择 Create application (创建应用程序)

  3. 在应用程序详细信息页面上,选择 Connect streaming data (连接流数据)

  4. Connect to source (连接到源) 页面上,执行以下操作:

    1. 选择在上一部分中创建的流。

    2. 选择创建 IAM 角色的选项。

    3. 选择 Discover schema (发现架构)。等待控制台显示推断的架构和为创建的应用程序内部流推断架构所使用的示例记录。推断的架构仅包含一列。

    4. 选择 Save and continue

  5. 在应用程序详细信息页面上,选择 Go to SQL editor (转到 SQL编辑器)。要启动应用程序,请在显示的对话框中选择 Yes, start application (是,启动应用程序)

  6. 在 SQL 编辑器中编写应用程序代码并确认结果如下所示:

    1. 复制下面的应用程序代码并将其粘贴到编辑器中:

      CREATE OR REPLACE STREAM "DESTINATION_SQL_STREAM" ( column1 VARCHAR(16), column2 VARCHAR(16), column3 VARCHAR(16), column4 VARCHAR(16), column5 VARCHAR(16), column6 VARCHAR(16), column7 VARCHAR(16)); CREATE OR REPLACE PUMP "myPUMP" AS INSERT INTO "DESTINATION_SQL_STREAM" SELECT STREAM l.r.COLUMN1, l.r.COLUMN2, l.r.COLUMN3, l.r.COLUMN4, l.r.COLUMN5, l.r.COLUMN6, l.r.COLUMN7 FROM (SELECT STREAM W3C_LOG_PARSE("log", 'COMMON') FROM "SOURCE_SQL_STREAM_001") AS l(r);
    2. 选择 Save and run SQL。在 Real-time analytics (实时分析) 选项卡上,可以查看应用程序已创建的所有应用程序内部流并验证数据。