AWSCloud.WorksServerlessMarch 12, 2020Running a Serverless Blog for my Company Website

When I started my company, I was looking for a blogging platform that I can use easily and at the same time, it can be managed more easily. So the choice which I was learning towards was to have a Serverless Blogging website. Parameters were to have something on which I can easily write and I don’t have to do anything to manage the infrastructure of the website.
After going through many blogging platforms and reading a lot of articles​, I’d decided to go with Jekyll

Jekyll is a simple, blog-aware, static site generator for personal, project, or organization sites. Written in Ruby by Tom Preston-Werner, GitHub’s co-founder, it is distributed under the open-source MIT license.

So Here’s a DIY article on how can you set up your own Serverless Blogging Platform with near to 0$ cost.


  • First, we’ll need to install the gem
sudo apt-get install ruby-full build-essential zlib1g-dev
echo '# Install Ruby Gems to ~/gems' >> ~/.bashrc
echo 'export GEM_HOME="$HOME/gems"' >> ~/.bashrc
echo 'export PATH="$HOME/gems/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

Follow references if you are using other OS –

Quick Start Instructions

Let’s get started with installation:

gem install bundler jekyll

This should install bundler and Jekyll which is required to set up your own blogging platform.

Create your Blogging website

Now, let’s create our own website.

jekyll new my_awesome_site
cd my_awesome_site


Jekyll is a static file generator so we would have to build a site before we can view any content.

  • Jekyll build would build the site and copy the new posts/contents into _site the directory.
  • Jekyll serve would start a local webserver at http://localhost:4000

Alternatively, during the development time, you can run the below command to rebuild your website with every change which gets saved.

bundle exec jekyll serve
# => Now browse to http://localhost:4000

Setting up a template

Being an OpenSource project, You would find a lot of pre-built templates which you can use for your blogging website.
Head to – JekyllThemes

A quick way to setup –

git clone
cd beautiful-jekyll/
sudo bundle install
bundle exec jekyll serve


Now, that my blogging platform is ready, I want to deploy the website using my command line without me running serious upload operations.

So I set up my CI/CD Pipeline on Gitlab CI which would trigger every time I upload my blog into my GitLab repo.

This is how my .gitlab-ci.yml file looks like.

image: ruby:2.3
  - build
  - deploy

    - vendor
  key: "$CI_BUILD_REPO"

  - gem install bundler

  stage: build
    - master
    - bundle install --path=vendor/
    - bundle exec jekyll build
      - _site/

  image: "python:latest"
  stage: deploy
  when: manual
  - build_jekyll
    - pip install awscli # Install the SDK
    - aws s3 cp _site s3://$AWS_BUCKET/blog --recursive --exclude ".git/*" --exclude ".gitlab-ci.yml" --acl public-read
    - aws cloudfront create-invalidation --distribution-id $DISTRIBUTION_ID --paths "/blog/*"
    name: production

That’s all and my blogging setup was ready. In between, I didn’t cover how to create an S3 bucket and what configurations you should do to host your website on S3 which can be found [here]()

Don’t forget to leave down your review and do give me your comments on what you would like to see next!