A company is designing a system where image processing must occur as a result of direct user uploads to their application. The processing job involves several computational steps and could take a significant amount of time. The company wants to ensure that the system can handle spikes in traffic without user uploads being lost or delayed excessively. Which of the following is the BEST approach to integrate into the architecture to meet these requirements?
Have the client applications upload images directly to an Amazon S3 bucket and configure S3 event notifications to trigger an AWS Lambda function for processing.
Use AWS Step Functions to manage the upload and orchestrate multiple AWS Lambda functions for each step of the image processing in sequence.
Store the uploaded images in an Elastic Block Store (EBS) volume and schedule regular processing intervals with Amazon EC2 instances scanning for new images.
Create an Amazon SQS queue for the client to send image data, and set up an Amazon EC2 Auto Scaling group to process the images from the queue.
Implement an Amazon API Gateway to receive uploads and directly invoke an AWS Lambda function synchronously for image processing.
Deploy an Amazon EC2 instance to receive image uploads, and use its local storage to queue the images before processing them sequentially without any event trigger.