Skip to content
Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Python SES DynamoDB Contact Form

serverless license

AWS SES DYNAMODB tutorial using Serverless Framework written in Python

Application Architecture

Serverless Application Architecture

Serverless Framework Setup

Command Description
npm install -g serverless Install Serverless CLI
npm install Install Serverless dependencies
npm install serverless-domain-manager --save-dev Install plugin to use custom domains
Set up an AWS account with admin permissions Documentation

How to Deploy

$ git clone
$ cd python-ses-dynamodb-contactform
$ npm install
$ sls deploy -v

Creating Route53 records for custom domain

$ sls create_domain

Service Endpoints

The service exposes 2 REST API endpoints:

Endpoint Description Parameters
POST /sendMail Submit the data from contact form {"firstname": "John Doe", "email": "", "message": "Hi there"}
GET /list Retrieves all the contact form submissions -


curl --header "Content-Type: application/json" \
    --request POST \
    --data '{"fullname": "John Doe", "email": "", "message": "Hi there"}'\
    <host>/sendMail -H 'x-api-key: <API_KEY>'
curl <host>/list -H 'x-api-key: <API_KEY>'

sls or serverless CLI Usage

deploy function command

Deploy only one function:

sls deploy function -f <function-name> -v

invoke command

Run a specific function with a provided input and get the logs

sls invoke -f <function-name> -p event.json -l

Run a specific function without input and get the logs

sls invoke -f <function-name> -l

logs command

Tail the logs of a function:

sls logs -f <function-name> -t

info command

Information about the service (stage, region, endpoints, functions):

sls info

help command

Just use it on anything:

sls  help


sls <command> --help