暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

一招教你轻松分析S3访问日志

AWS Azure技术分享 2020-07-26
885

Amazon Athena 是一种交互式查询服务,让您能够使用标准 SQL 轻松分析数据。只需在 AWS 管理控制台中执行几项操作,即可将 Athena 指向 Amazon S3 中存储的数据,并开始使用标准 SQL 运行临时查询,然后在几秒钟内获得结果,本文主要介绍如何使用Athena分析S3 access log。

Athena优势


01

基于Serverless无服务器,无需管理基础设施


02

支持使用标准SQL进行数据分析


03

支持自动扩展和并行查询,速度快

准备工作

创建S3存储

  • demobucket-test -- 用来存放测试文件

  • demobucket-s3accessslog  -- 用来存放demobucket-test桶的访问日志

打开demobucket-test存储桶访问日志

因为存储桶日志生成需要时间(一般在半个小时以上),在日志生成之前,我们先上传一部分文件用来测试。

在Athena中创建数据库和表

打开Athena控制台,在 Query Editor (查询编辑器)中,运行类似于以下内容的命令来创建数据库。
注意:最佳实践是在与 S3 存储桶相同的 AWS 区域中创建数据库。

创建数据库

创建数据表

s3_access_logs_demo_db:数据库名称

mybucket_logs :需要创建的表的名称

LOCATION 's3://awsexamplebucket-logs/prefix':S3访问日志的路径

在左侧窗格中的下,从表名旁边的菜单按钮中选择 Preview table (预览表)

执行SQL语句进行查询测试

情景一:查询某个用户操作记录

SELECT count(*) FROM s3_access_logs_db.mybucket_logs WHERE requester='arn:aws-cn:iam::xxx:user/demotest';

情景二:查询某个时间段对某个文件的所有操作记录

SELECT *  FROM s3_access_logs_demo_db.mybucket_logs WHERE Key='status_check.sh' AND parse_datetime(requestdatetime,'dd/MMM/yyyy:HH:mm:ss Z') BETWEEN parse_datetime('2020-07-25:00:00:00','yyyy-MM-dd:HH:mm:ss') AND parse_datetime('2020-07-26:00:00:00','yyyy-MM-dd:HH:mm:ss');

情景三:显示在特定时间段内特定 IP 地址传输的数据量

SELECT SUM(bytessent) as uploadtotal, SUM(objectsize) as downloadtotal, SUM(bytessent + objectsize) AS total FROM s3_access_logs_demo_db.mybucket_logs WHERE remoteIP='58.33.126.28'

点一下右下角“在看”,让我们做的更好


文章转载自AWS Azure技术分享,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论