📊 AWS S3 + AWS Glue + Athena + Grafana — 端到端分析项目
发布: (2025年12月6日 GMT+8 04:26)
4 min read
原文: Dev.to
Source: Dev.to
概述
在本项目中,我使用 AWS 服务构建了一个完整的分析管道:
- 从 S3 读取 CSV 文件
- 使用 AWS Glue 将其转换为表
- 使用 Amazon Athena 查询数据
- 在 Grafana 中可视化结果
此工作流在云计算和 DevOps 环境中非常常见。
架构图
(Insert architecture diagram image here)
使用的服务
| 服务 | 用途 |
|---|---|
| S3 | 存储原始 CSV 文件 |
| Glue Crawler | 检测模式并创建 Athena 表 |
| Glue Data Catalog | 管理表的元数据 |
| Athena | 对 S3 文件执行 SQL 查询 |
| Grafana | 可视化 Athena 查询结果 |
步骤 1 — 将 CSV 数据上传到 S3
在 S3 存储桶中创建文件夹结构,并使用 AWS CLI 上传 CSV 文件,例如:
aws s3 cp ./data/ s3://my-bucket/raw-data/ --recursive
步骤 2 — 创建 AWS Glue 爬虫
配置一个 Glue 爬虫,使其:
- 指向包含 CSV 文件的 S3 文件夹
- 自动检测 CSV 模式
- 在 AWS Glue Data Catalog 中创建表
爬虫会创建:
- 数据库名称:
s3_log_db - 表名称:
s3_athena_analytics_abhishek31
爬取完成后,请在 Data Catalog 中验证生成的模式。
步骤 3 — 在 Athena 中查询数据
对爬虫创建的表运行 SQL 查询。例如:
SELECT
series_reference,
period,
series_title_2,
value
FROM s3_log_db.s3_athena_analytics_abhishek31
ORDER BY series_title_2 ASC;
该查询确认数据结构正确且可访问。
步骤 4 — 配置 Grafana 数据源
- 在 Grafana 中添加新数据源,选择 Amazon Athena。
- 提供以下配置信息:
- AWS 区域
- 用于查询结果的 S3 存储桶
- 工作组(如适用)
- 测试连接——应当成功。
步骤 5 — 在 Grafana 中构建仪表板
使用原始 SQL 查询(不导入 JSON),创建可视化,例如:
- 按年龄段分布的柱状图
- 按时间段的数值时间序列分析
- 按性别的人口趋势
- 每年的总人口
项目文件夹结构
project/
├─ data/ # 原始 CSV 文件
├─ glue/ # 爬虫配置(JSON/YAML)
├─ athena/ # 保存的查询文件
└─ grafana/ # 仪表板 JSON 导出(可选)
关键收获
- 使用 AWS Glue 自动模式检测简化了数据导入。
- Athena 提供了无服务器、成本效益高的直接在 S3 上进行 SQL 查询的能力。
- Grafana 能原生可视化 Athena 查询结果,实现实时仪表板。
GitHub 仓库
https://github.com/abhikorde31/aws-s3-athena-grafana-analytics
结论
本项目演示了如何使用 AWS S3、Glue、Athena 和 Grafana 构建生产级、无服务器的分析管道。该设置可以通过 AWS Lambda 实时更新、使用 Terraform 进行基础设施即代码,或添加更多可视化进行扩展。