'How to speed up image downloads from S3

My team works on an iOS app that uses S3 and DynamoDB to manage user profile pictures. We have default profile pictures when a user creates an account. When they upload a custom profile picture, we

  1. upload the file to S3 and generate a pre-signed URL for that user
  2. store the pre-signed URL in DynamoDB in our "users" table

When a user goes to login, we fetch the pre-signed URL from that user and download the image for that user. If the pre-signed URL has expired, we'll generate a new one, replace it in DynamoDB, and download the new image from the new URL.

Images are downloading more slowly as more users create profile pictures. What is the best way to handle this? Should we serve the images through CloudFront instead? We'd like to use security best practices so continuing to use pre-signed URLs is probably necessary here.

Edit: All of our users are based in the United States



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source