Setup a custom domain on AWS using S3 static website hosting and Route 53

Aaron Shaver
3 min readDec 14, 2017

First, buy a domain name.

Once you have your domain, go to Route 53 in the AWS console and create a new Hosted Zone. Be aware that this costs $0.50/month.

Click into your record set. It’ll have an NS record. Click on that to find your name servers.

On your registrar (the company you bought the domain from), edit the name servers for the domain. Note that this whole process is easier if you use Amazon as your registrar. I used, and the screenshot below is from Hover.

Next, go to S3 in the AWS console and setup your S3 buckets. You’ll need two, one for the plain domain, and one for www.domain. Name them exactly as the domain reads. So if you own, your buckets will be and

(I’m going to assume we’ll redirect requests to, simply because that’s what I prefer, but there’s some debate about this, so feel free to swap this and redirect to www. if you want.)

Go to Properties on your root domain ( bucket. Set it up to have static hosting:

Next, go to Properties on your domain. Set it up to redirect to your root domain:

The final step is to create two DNS “A” records back in Route 53 in your Hosted Zone:

There are a couple of confusing things about this process which I’ll talk about below the screenshot:

  1. For the Name field, leave it blank for your root, and for, put just the “www”. The form will append the rest of your domain ( to the name.
  2. Click Yes to use an Alias. Then for the Target, click the dropdown and wait until you see the S3 bucket. NOTE: It can take a long time to populate, and sometimes it times out completely and you have to try again. I don’t know what causes this, but it’s pretty frustrating.

That should be it. Now if you upload an index.html to your root bucket ( S3 bucket), and navigate to or in a browser, you should see your HTML show up.

NOTE: it can take a few hours for DNS propagation to finish. A helpful tool to see if it’s finished or in progress is: