Personally I consider creating a website more as pain than anything else. Technology is moving fast and I need this knowledge not often enough, since I am more into writing (non-web)applications and working with APIs.
But on one point - I guess - every developer wants to have her/his website. So I was searching for a solution that takes as less effort as possible and looks as good as it can get.
It turns out, it’s not that complicated nowadays.
By searching the internet for static website generators (because I knew I wanted to host it on AWS S3 ), I got overwhelmed. There are thousands of different ones. My first criteria was to being able to write articles, pages or posts as easy as possible. So no HTML coding. So I filtered for those which can generate HTML from Markdown. I am used to markdown from using github. Just a few were left so I took a look at some of them but fast I got stuck with hexo.
Hexo is a static website generator based on nodejs, which takes Markdown and converts it into HTML including page-routing settings.
Enough for my purpose.
As mentioned earlier I wanted to Host the website on AWS S3. Why? Mostly out of curiosity. Since I am using the AWS since a while in my working environment (sometimes more sometimes not that much), I wanted to have a full project hosted amazon myself.
So uploading the content of the website is an easy task to achieve. Whenever you upload something to S3 you get an ugly looking link, with which you can access your content. This is why I am using AWS Route 53, in order to tell the DNS to link from www.andretietz.com to the content of the S3 Bucket.
There’s a solution provided by amazon as well. It’s called AWS CloudFront. Whenever my website is requested now, it’s request gets forwarded to the closest AWS CloudFront Server (Servers are distributed all over the world), takes a look into the cache. If there’s not cache for the request it loads the content from the AWS S3 and caches it on the AWS CloudFront Server.
So the second time a request comes in, it can immediately provide the content. Additionally, AWS CloudFront provides a way of using a certificate to encrypt the content.
To get into the AWS it takes a while. Not only the mass of services that are provided, also the shortcuts that are often used as their names.
As a newcomer it’s hard to overview the amount of services and which of the to use to solve a small problem. Here are the services I used in order to get this website running as it is:
- AWS S3 (S3 for “SSS” means: Simple Storage Service)
- For storing the content
- AWS Route 53
- Linking the domain with AWS CloudFront servers
- AWS CloudFront
- World wide caching
- AWS ACM (Amazon Certificate Manager)
- handling your ssl certificate and connecting it to CloudFront
- AWS IAM (Identity and Access Management)
- permissions to be set on S3 in order to make the content available public
Cost wise this shouldn’t be a problem (I expect ~1€/month), I’ll see in a couple of weeks how this turns out…