This is based on my experience on hosting my static web in AWS S3. The process is not too much complex. The things we need setup is:

  1. S3 Bucket
  2. CloudFront
  3. Route53

Without further do, let's do it!

Create You S3 Bucket

  1. Go to S3 bucket -> https://console.aws.amazon.com/s3/
  2. Create your bucket and just next next and next (we'll setup it later)
  3. Upload your files.

Request For SSL Certificate

You can read it here -> How to Get and Setup Free SSL Certificate from AWS

Create CloudFront Web Distribution (CDN)

  1. Go to https://console.aws.amazon.com/cloudfront/home
  2. Create your distribution
  3. Fill Origin Domain Name with the bucket that you created before.
  4. Select Yes for Restrict Bucket Access
  5. In Distribution Settings, use Custom SSL Certificate and choose certificate you created before.
  6. Leave the rest as is and create your distribution.

Use Your Custom Domain

  1. Go to https://console.aws.amazon.com/route53/home
  2. Create Hosted Zone
  3. Create Record Set. You can create two record set. First one is yourdomain.com and second one is www.yourdomain.com. Use A record and select the CloudFront that you created before.

Setup You S3 to Host Static Web

  1. Go to your bucket https://s3.console.aws.amazon.com/s3/buckets/yourdomain.com
  2. Click on Properties tab.
  3. Select Static website hosting
  4. Fill in index and error document.
  5. Save.
  6. Click on Permission tab.
  7. Choose Bucket Policy.
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::thetruthofmine.com/*"
        }
    ]
}

Now, you have a static web using AWS S3 Bucket and CloudFront!