Using CloudFront is not a must, but if you don’t do it, then you’ll be making multiple calls to Imagizer if the image with the same transformation is re-requested (i.e. even for a page refresh). If you are running your own instances of Imagizer on EC2, that may not be an issue for you. If you go the SAS route, you’ll be paying for every request.
Keep things simple at first and move to CF if you find you need to.
You could also run a processing job right after upload to build the resized versions using Imagizer and store them in S3 with the original, then just serve the S3 versions so you only pay Imagizer once per size/transformation. If you do this, you may need a ‘processing’ state while the images are built and put on S3 before you could serve them. You can orchestrate a lot of that work with AWS Lambda’s, which are also super cheap, and not burden the API server…just post back to the API when the images are all built.


















