Host a Static website on EC2 using Route 53 with 3rd party domain
In this blog, I will share my hands-on experience with route 53. I have created a static website that displays Indian Standard Time which I have hosted on a 3rd party domain that is basically free of cost .so in this blog you will learn how to we can create a free domain and connect with AWS services.
AWS Services Used:
- EC2
- ELB & ASG
- Route 53
Here is an architecture diagram for better understanding.
Creating Zip file
The folder which contains website files including index.html is to be zipped and uploaded to the s3 bucket. so our first task is to zip the website folder
Now we will zip our website folder and upload it to s3 bucket
Uploading files to S3
- Go to S3 Console
- Create Bucket ( give it any name and the rest of it as it is)
- Click on the bucket which we have created => Click on upload => Click on Add files => choose zip file => Click on upload
Output:
Creating Auto Scaling Group
- Go to EC2 Console
- Click on ‘Auto Scaling Groups’
- Click on ‘Create Auto Scaling Group’
- Give any name to ASG and right click on ‘create a launch template’ and open in new tab
- Enter details below:
keep rest of the values default and go down to Advanced details
Go to IAM instance profile => Create new IAM Profile [open in new tab]
In the newly opened tab
Click on create role => Select EC2 and click on next => Go to search and type s3 => Press Enter => Select AmazonS3FullAccess => Click Next => Give tags if you want => Click Next => Role name: RoleForEC2 => Click on Create role and close that wondow
Now Come back to create template tab
Go to IAM Instance profile and click on refresh icon and select our new role:RoleForEC2
Leave all other value as it is and
Go to last option user data and paste this script
#!/bin/bash
# Use this for your user data (script from top to bottom)
# install httpd (Linux 2 version)
yum update -y
yum install -y httpd
systemctl start httpd
systemctl enable httpd
cd /var/www/html
aws s3 cp s3://whatistime/website.zip /var/www/html/
unzip website.zip
mv website/* .
service httpd start
note : whichever in the bold letters my differ in your case so change accordingly
and click on Create Launch Template
6. Come back to Auto Scaling Group tab and click on refresh icon in Launch Template section and select
Click on next
7. Select vpc and all subnets rest of value as it is
Click on next
8. Select ‘attach to a new load balancer’
Select internet facing
Scroll down and go to Listener and routing and select Create a new target group
Set other values as it is and click on next
9. Set these values
Click on next
10. Click on Next
11. Click on Next
12. Click on ‘Create auto scaling group’
Our instance is created with 1 desired capacity now we can go to our website using public IP of our instance
Domain Register
Now we want to register a domain
In my case I have created a website which displays current time so I will register my domain as whatsthetime.ml
I am using freenom because it provides free domain names for everyone
- Go to website and sign in[create an account if you don't have]
- Click on services => register a new domain
- Enter domain name want and click on check availability
Click on get it now which ever domain you want and click on checkout
4. Click continue = > click complete order
Now your domain name is registered successfully
Connect domain with Route 53
Now it’s time to connect our instances with our domain.
- Go to route 53 and click on create hosted zones
2. Enter your domain name
Click on create hosted zones
After creating there will be NS record copy it in notepad
3. Go to freenom.com
Go to services => my domains
Click on manage domain
4. Go to management tools => nameservers
Click on Use custom nameservers and paste all 4 nameservers which we have copied earlier in notepad
Click on change nameservers and close the tab
Route 53
Now we are in final step
Click on create record in our route 53 tab
Enter values:
Record name: www
Record type : A
Turn on alias and choose as below
Choose load balancer which we have created using ASG and click on create record
It’s done . Enter your domain name in new tab and it works!!!
Thanks for reading :)
My LinkedIn Profile: https://www.linkedin.com/in/raj-parmar-8a6a6b195/