AWS 云相册项目
· 技术 · Python / Flask / AWS / S3 / SQS / Lambda / SQL / YOLOv8 / ONNX / JWT / Leaflet / Docker
我设计并实现了一套云原生照片管理系统,用于可扩展存储、异步处理、自动分类和基于元数据的搜索。它可以管理大规模照片集合,也能按拍摄地点查看图片。
主要功能
- 图像分类:通过 ONNX 运行 YOLOv8,保存标签和置信度,用于搜索与整理。
- 异步处理:SQS 和 Lambda 将上传请求与模型推理解耦,用户请求不必等待,工作节点也能独立扩展。
- 存储:图片放在 Amazon S3;用户、标签、位置、处理状态等元数据保存在 SQL 数据库。
- 后端:Flask REST API 负责认证、上传、读取和相册管理,访问控制使用 JWT 与 IAM。
- 地图视图:提取 EXIF GPS 信息,用 OpenStreetMap 和 Leaflet 显示,并支持按位置浏览和筛选。
- 补充元数据:上传后可以继续收集缺失信息,让后续搜索更准确。
系统结构
- 前端:HTML/CSS 客户端
- 后端:部署在 EC2 上的 Flask API
- 异步层:SQS 队列与 Lambda 工作节点
- 存储:S3 保存图片,SQL 保存元数据
- 模型:通过 ONNX 运行 YOLOv8
- 地图:Leaflet 渲染 OpenStreetMap
项目的主要工作是把对象存储、消息队列、无服务器任务、模型推理和关系型元数据接成一条事件驱动流程,同时保留明确的处理状态和服务间安全通信。