I recently went through this process of hosting a static website on Amazon Web Services (AWS) S3 bucket, mapping it to a custom domain, and enabling HTTPS and found it to be a bit complex, so I wanted to share my experience to help others.
Since, I wanted to share my website with the world but I needed a place to host it. So, I turned to AWS S3, a storage service that could handle the job.
First, I created a bucket (like a digital container) on S3 and uploaded my website files. Initially, I made the bucket public for easy access, but this meant I had to type the entire file name (e.g., index.html) every time I visited. This wasn't ideal.
To avoid the long URL, I enabled static website hosting on the S3 bucket. This allowed me to access my website without specifying the filename. However, the provided URL was long and difficult to remember.
Needing a better address, I registered a domain name (e.g., abc.com) from a third-party like GoDaddy. But how could I connect my domain to the S3 bucket?
Enter Route 53, AWS's custom DNS service. I created A records in Route 53, one for abc.com and another for www.abc.com. This pointed my domain to the S3 bucket, but I still had an issue because the website was accessible only via HTTP.
Security is crucial, so I wanted to switch from HTTP to the secure HTTPS protocol. However, S3 buckets can't directly use HTTPS certificates.
The solution came in two parts:
-
AWS Certificate Manager (ACM): I used ACM to register an SSL certificate for my domain. However, this certificate couldn't be directly used by the S3 bucket.
-
AWS CloudFront: This service delivers content securely. I created a CloudFront distribution with my domain name and linked it to the ACM certificate (created in the US Virginia region for compatibility and due to regional limitations). CloudFront even provided a shorter URL, but it still wasn't ideal.
Finally, I removed the A records that directly pointed to the S3 bucket (as we wouldn't need HTTP access anymore). CloudFront created new A records for my domain in Route 53, allowing access through both abc.com and www.abc.com. I also deleted the unnecessary www.abc.com bucket since CloudFront could handle both URLs.
With CloudFront redirecting HTTP requests to HTTPS, I achieved a secure and user-friendly way to access my website. This journey through the AWS cloud may seem complex, but it empowers anyone to host their website with ease and security.
Comments
Post a Comment