Implementing CDN; Amazon S3 and CloudFront. What is the Best Approach?

I have implemented using Amazon S3 and used that for long. Before that I also tried with sub-domian of my own server. Then I used Cloudfront thinking it would be better. So, used Amazon S3 for as source and CloundFront for distribution from S3. For implementing this, I have moved uploads/ directory to another places for using with Super Cache plugin. That did not worked correctly then I was using WordPress plugin for S3 to upload files.

After all of the above, I was looking to remove Amazon S3 as this was looking a redundant step and distribute all files using Cloudfront. CloudFront will take all files from my Http server directly. I have implemented it recently.

To implement CloudFront that takes all files from my server, I need to implement Origin-pull / custom origin feature in Cloudfront. Search for term origin-pull or custom origin with cloudfront if you want similar settings. Most of documentations will mention Amazon S3 first then Http server/origin-pull/custom-origin.

amazon-web-services

CloudFront Implementation/How to Setup Cloudfront:

When I implemented CloudFront this time, then I placed uploads/ folder to its original position as these all create unnecessary problems in future. I used SymLinks to place everything in a sub-domain and used that as Custom Origin for CloudFront. Create another sub-domain for Cloudfront where you will change CNAME which points to cloudFront distribution. So,

origin.mysite.com –> Amazon will pull all files. Mention this in aws console for files source.

static.mysite.com –> your resources (img/js/etc) will be served from here. Image location: static.mysite.com/wp-content/uploads/….

origin.mysite.com can have all files you want to server from CloudFront. Something like this:

origin.mysite.com->

  • origin.mysite.com/media/
  • origin.mysite.com/wp-content/uploads (a symlink is better. Don’t more files)
  • origin.mysite.com/etc,…

Based on the above origin.mysite.com structure, your links to cloudfront resources will be:

  • static.mysite.com/media/*
  • static.mysite.com/wp-content/uploads/*
  • static.mysite.com/etc/*

Extra: Amazon News