Skip to content

sirceljm/aws-lambda-blog

Repository files navigation

I no longer actively develop this project. It was made in a way that it is quite easy to install and run, but not that easy to modify the code and expand on it.

If you are looking for a more developer friendly framework to make serverless web pages on AWS, please look at my other project: https://awly.io

Powered by Amazon Web Services

LambdaBlogPlatform

serverless blogging platform built with AWS

Table of Contents

About

alt tag AWS Lambda Blog Platform is a complete blogging solution that uses the following Amazon Web Services for operation:

  • API Gateway
  • Lambda
  • DynamoDB
  • S3
  • Cloudfront
  • SES

It runs completely serverless - free of any inflexible hardware infrastructure. The whole system running as a team of small microservices means that the running expenses are without any overhead even at the smallest scale.

Installation prerequisites

Installation

  • Download this repo, unzip and cd to project folder
  • Run npm install
  • Create a new user in IAM
  • [IAM -> Users -> Add User -> Access type -> check Programmatic access]
  • On the last step click on Download .csv file and save the file in project folder
  • Add permissions to the user
  • [IAM -> Users -> your_user -> Permissions -> Add inline policy -> Custom policy]
  • Copy the following JSON and give your inline policy a name
   {
       "Version": "2012-10-17",
       "Statement": [
           {
               "Sid": "Stmt1481118325000",
               "Effect": "Allow",
               "Action": [
                   "iam:CreatePolicy",
                   "iam:CreateRole",
                   "iam:GetPolicy",
                   "iam:GetRole",
                   "iam:AttachUserPolicy",
                   "iam:AttachRolePolicy",
                   "iam:PassRole",
                   "route53:ListHostedZones",
                   "acm:ListCertificates",
                   "iam:ListUserPolicies",
                   "iam:GetUserPolicy"
               ],
               "Resource": [
                   "*"
               ]
           }
       ]
   }
  • The install script will add other permissions that are necessary for installation
  • Run node install.js
  • The wizard will take you through the process of installation
  • If everything went smoothly you should see your page after CloudFront changes resolve. This usually takes around 15 minutes.

Advanced installation

  • Download this repo, unzip and cd to project folder
  • Run npm install
  • Create a new user in IAM (you will put this user name into install_config.js later)
  • [IAM -> Users -> Add User -> Access type -> check Programmatic access]
  • Copy account keys for the user and make a json file that looks like this: user_access_keys
{
   "accessKeyId": "AK************",
   "secretAccessKey": "BX**********************",
   "region": "eu-west-1"
}
  • Add a new inline policy to the user
  • [IAM -> Users -> your_user -> Permissions -> Add inline policy -> Custom policy -> Select -> Copy JSON below and enter a policy name
{
     "Version": "2012-10-17",
     "Statement": [
         {
             "Sid": "Stmt1481118325000",
             "Effect": "Allow",
             "Action": [
                 "iam:CreatePolicy",
                 "iam:CreateRole",
                 "iam:GetPolicy",
                 "iam:GetRole",
                 "iam:AttachUserPolicy",
                 "iam:AttachRolePolicy",
                 "iam:PassRole",
                 "route53:ListHostedZones",
                 "acm:ListCertificates",
                 "iam:ListUserPolicies",
                 "iam:GetUserPolicy"
             ],
             "Resource": [
                 "*"
             ]
         }
     ]
 }

-> Attach policy]

  • The install script will add other permissions that are necessary for installation
  • Copy and save the Hosted Zone ID for your domain alt tag
  • Copy this certificate ARN - and paste it into install_config.js alt tag
  • Get your recaptcha key (you can edit this later in API Gateway)
  • Copy install/install_config_template.js to install/install_config.js
  • Change values in install/install_config.js
  • Run node install_advanced.js
  • If everything went smoothly you should see your page after CloudFront changes resolve, which usually takes around 15 minutes