What is the MOST cost-effective solution to meet these requirements?
Use Amazon EC2 instances to manipulate the original image into the requested customizations. Store the original and manipulated images in Amazon S3. Configure an Elastic Load Balancer in front of the EC2 instances.
Use AWS Lambda to manipulate the original image to the requested customizations. Store the original and manipulated images in Amazon S3. Configure an Amazon CloudFront distribution with the S3 bucket as the origin.
Use AWS Lambda to manipulate the original image to the requested customizations. Store the original images in Amazon S3 and the manipulated images in Amazon DynamoDB. Configure an Elastic Load Balancer in front of the Amazon EC2 instances.
Use Amazon EC2 instances to manipulate the original image into the requested customizations. Store the original images in Amazon S3 and the manipulated images in Amazon DynamoDB. Configure an Amazon CloudFront distribution with the S3 bucket as the origin.
Explanations:
Using Amazon EC2 instances incurs higher costs due to the need for continuous instance uptime. Additionally, managing EC2 instances for image manipulation adds operational complexity compared to serverless solutions.
AWS Lambda is a cost-effective solution that only charges for compute time used, making it suitable for on-demand image manipulation. Storing images in Amazon S3 provides scalability, and using Amazon CloudFront improves availability and performance for users.
While AWS Lambda is cost-effective, storing manipulated images in Amazon DynamoDB is not ideal for images due to higher costs compared to S3. Additionally, using an Elastic Load Balancer is unnecessary when Lambda can handle the workload directly.
Similar to option A, using Amazon EC2 instances increases costs and operational complexity. Storing manipulated images in DynamoDB is inefficient for this use case, and CloudFront would be underutilized without an S3 origin for the manipulated images.