Cheapest way to host a SPA or static website with https on S3

I'll try to provide answers to your questions in order.

Cloudfront: will the cost be insignificant?

Yes, incredibly so. Below is a screenshot of a random bill from my AWS account:

enter image description here

Here is the Cloudfront pricing breakdown presented on a typical AWS invoice:

enter image description here

Route53: can I do this with Route53?

Yes it will be necessary. NGINX is not necessary.

The 4 AWS services you will need are:

  • S3: create a bucket with "web hosting" enabled and with the same name as your desired domain url. For example: "www.jacobswebsite.com" or "jacobswebsite.com"
  • Cloudfront: because you can't install an SSL cert on an S3 bucket directly, but you can install SSL on a Cloudfront distribution.
  • Route53: what you use to point your DNS records when users type in your URL. In a simplistic way you will point "www.mysite.com" DNS records to Cloudfront - and Cloudfront will point to your S3 bucket.
  • AWS Certificate Manager: with this you can generate free auto-renewing browser compatible SSL certs. If Route53 is handling DNS for your domains, SSL generation is a one click setup with about a 30 minute wait. You can then install these SSL certs into a CloudFront distribution from a dropdown menu.

This is an excellent guide for the basic procedure:

https://medium.com/@sbuckpesch/setup-aws-s3-static-website-hosting-using-ssl-acm-34d41d32e394

You can skip the parts about SES for the basic setup, but if you ever need to setup a form that submits to your email inbox, then you might want to look into it.

In short, the answer is yes. You can use S3 and Cloudfront to accomplish your goal without a bunch of backend-server knowledge and for pennies per month. The method and services described above is exactly how you do it.