This document outlines the architecture and workflows of the Distributed Image Processor, a service designed to handle image uploads, preprocessing, and real-time processing. The system utilizes serverless components to ensure scalability and efficiency while providing users with quick feedback on their image processing requests.
Real Time Processor (RTP)
- The user sends a request to upload a file to the
rtp-request-filesbucket. - Upon successful saving of the image, a public URL is returned to the user.
- The user sends a request to process the image using the
/process-fileendpoint. - The API Gateway receives the request and puts it into the
rtp-request-topic. - The
rtp-request-topicfans out the request to thertp-request-queue. rtp-preprocessor-lambda:- Retrieves the request from
rtp-request-queue. - Downloads the file stored in
rtp-request-files. - Performs preprocessing on the image.
- Stores the preprocessed image in
rtp-preprocessed-files. - Records the request data in
rtp-data-store(DynamoDB). - Upon successful preprocessing, sends a notification to the
rtp-preprocess-ok-topic.
- Retrieves the request from
- The
rtp-preprocess-ok-topicfans out the request to thertp-preprocess-ok-queue. rtp-file-processor-lambda:- Retrieves the request from
rtp-preprocess-ok-queue. - Downloads the preprocessed image from
rtp-preprocessed-files. - Applies additional processing (e.g., applying filters).
- Stores the final processed image in
rtp-processed-files. - Updates the status in the
rtp-data-store(DynamoDB). - Upon successful processing, sends a notification to the
rtp-notifier-topic.
- Retrieves the request from
- The
rtp-notifier-topicfans out to Amazon SES, which notifies the user of their processing results via email.

