AWS Cloud Album Project
· Tech · Python / Flask / AWS / S3 / SQS / Lambda / SQL / YOLOv8 / ONNX / JWT / Leaflet / Docker
I designed and implemented a cloud-native photo management system for scalable storage, asynchronous processing, automated classification, and metadata-based search. It can manage large photo collections and display images by location.
Core features
- Image classification: YOLOv8 runs through ONNX and stores labels with confidence scores for search and organization.
- Asynchronous processing: SQS and Lambda separate uploads from ML inference, keeping user requests responsive and allowing workers to scale independently.
- Storage: image files live in Amazon S3; users, labels, locations, processing state, and other metadata are stored in SQL.
- Backend: Flask REST APIs handle authentication, upload, retrieval, and album management. JWT and IAM-based controls protect access.
- Map view: EXIF GPS data is extracted and shown with OpenStreetMap and Leaflet, with location-based browsing and filtering.
- Follow-up metadata: the system can ask for missing information after upload to make later searches more accurate.
Architecture
- Frontend: HTML and CSS client
- Backend: Flask API on EC2
- Async layer: SQS queue and Lambda workers
- Storage: S3 for images and SQL for metadata
- ML: YOLOv8 inference through ONNX
- Maps: OpenStreetMap rendered with Leaflet
The main engineering work was connecting storage, queues, serverless workers, inference, and relational metadata into one event-driven pipeline, while retaining explicit processing status and secure communication between services.