AWS – Post – 9 - Cloud Front – CDN:
The cloud front CDN provides an edge location to cache options s3 objects files for quick data retrieval thereby improving the application’s performance, Say that your S3 buckets base region is Mumbai AZ (Availability zone) region and your web application is widely used by numerous users across the world ,
Consider that you have an user in UK, If the user tries to access your application , you should a send a request all the way from UK to India and a get a response all the way from India to Uk which will definitely add some latency to the request and response,
Instead consider that we have edge location in Europe, the edge location creates the cache of the object file once the initial request comes in and it will store it in the edge location, So when the user from UK tries to access the data, instead serving the data from Mumbai, India region, it will serve the request from Europe’s Edge location, thereby reducing the latency.
In this example, we will create a S3 bucket (gadothlondonbucket) in London region and have a file uploaded to it.
Under services , click on cloud front , under Networking and content delivery.
Click on create distribution,
We will select the web distribution method, as we are only going to test the graphic file.
Now select the origin domain name as “gadothlondonbucket” , the s3 bucket that we created in the London region. You will get an auto generated origin id , which can be changed as per your organization standard, this is just to give an unique distribution from the origin.
Since we don’t have an existing identify, we are going with creating a new identity, the users can use this cloudfront url using this identity. To automatically grant permission to the S3 bucket, we just use the existing bucket policy. We are not going to use any custom headers , so I am going to leave them blank. You can click on the information icon “i” to get more info on the options.
In the “default cache behavior settings”, you can select the viewer protocol policy, here I have redirected the http connection to https connection, so it will use SSL. In the allowed HTTP methods , I have selected “GET, HEAD, OPTIONS , PUT, POST , PATCH , DELETE” which means that the user can update the S3 object file to the edge location which will be later replicated to the origin.
Next is the TTL (i.e time to live) for the S3 objects and it will have the default settings. It is displayed in seconds , basically what this tells is that, it will have the cache for about 24 hrs ( i.e 86400 seconds)
Then I leave the default values for forward cookies, smooth streaming etc, you can get more information about them once you click on the information icon.
Then we go to the distribution settings , where you can select the edge location , here I select the US, Canada, Europe and Asia and then set the SSL settings to default cloudfront certificate. In the alternate cname , you can specify a standardized name otherwise cloudfront will generate a random alpha-numeric value as the prefix.
you can also switch on logging and direct it to another bucket and you can also enable or disable the distribution state. Now you can click on create distribution.
You will be redirected to the below page, You can cloudfront distribution creation is in progress, you can also notice that, since we didn’t give any value to the domain name , it has now generated an alpha-numeric value as domain name. It will take 5 to 10 minutes to get the delivery method created.
Now lets check whether we are able to access the s3 url & the cloudfront url.
So now we have successfully created cloudfront cdn for a AWS S3 bucket .