In today’s world, it is important that your platform / service / application have genuine registered users. It increases the trust quotient of your offering when people know that other users on the platform are also genuine users like themselves. While there are many ways to ensure to weed out bots and impersonation, one popular way to do is to ensure that user take a picture of themselves while holding a placard containing random text. This random text is shown to the user during on-boarding or during profile verification process. It is important to only allow users to take picture…


AWS offers many purpose built databases to serve varying needs of businesses. Neptune DB is their graph database solution. Graph databases are built to efficiently store and query highly connected data. Data is stored in the form of vertices and edges that connect those vertices. Each vertex represents an entity like a user, product, place and each edge represents a relationship between the two vertices e.g. Person “Sanjay Dandekar” is resident of Place “Bangalore”.


In this article we will see how you can build a serverless image processor using S3 and Lambda. Lets see the use case where serverless image processing is required. Assume you are building a photo album application where people can upload their photos and then access the uploaded photos on web or using a mobile application.

Such use case very often require that once the original image is uploaded to the server, it needs to be processed further for following use cases:

  • Resizing images to make them suitable for display across multiple form factors (Web v/s Mobile)
  • Adding watermarks
  • Image…


In this article we will talk about how you can leverage AWS CloudWatch Rules and AWS Lambda to build a reliable, flexible, low cost and server-less batch processing. Typically batch processing involves running a scheduling engine and AWS EC2 instances. AWS Batch provides a nice abstraction and allows you to do batch processing at scale. However — It is not entirely “server-less”. AWS batch spins up EC2 instances to run your batch jobs. Most of the time you may have to leave a minimum capacity of EC2 in running state even if you are not doing any batch processing. This…


AWS Simple email service (SES) is Amazon’s answer to services like Mailchimp that allows you to efficiently manage your the promotional and transactional email traffic for your business. In this article we will look at many aspects of SES including the following:

  • Prerequisite for using SES in production
  • Sending rich templated emails
  • Design approach for sending large number of emails using AWS Lambda
  • Handling unsubscribe and bounces / complaints

Prerequisite for using SES in production

The most basic prerequisite for using SES in production is a SES verified domain that you will be using for your “FROM” email address. The…


In this article we will look at writing RESTful service using API gateway and Lambda. We will use DynamoDB as a backend store. We will use terraform to deploy all the AWS resources. We will write following APIs:


Please read the first article in the series here:

The code samples this article uses the DynamoDB table we designed in the above article.

In this article we will look at the following aspects of DynamoDB:

  • Exponential backoff when doing batch operation
  • Updating attributes of a record
  • Atomic update of numeric attribute of record
  • Accessing DynamoDB service from a Lambda hosted in VPC

Batch Operation and Exponential Backoff

One of the most efficient ways to fetch / update / create / delete multiple items from DynamoDB is to use the batch APIs it offers. Using batch API prevents multiple round…


DynamoDB is fully managed NoSQL database and one of the key components of modern server less design on AWS. It is highly scalable and has very low latency for both read / write operations. In this article we will look at the following topics related to DynamoDB and its usage.

  • Data modelling
  • Auto deletion of “expired” / “old” records from DB
  • Triggers

DynamoDB is most suitable for data which does not change often but is read multiple times i.e. write once (or may be few times) / read multiple times.

Data Modelling in DynamoDB

If you are coming from RDBMS…


Read the overview of the Cognito User Pool in the article below:

In this article, let’s get a little hands on. I will cover some of the basic challenges that developers face when they first start working with AWS Cognito.

Workflow Triggers

In the last article I talked about various workflow triggers that can be configured to kick off custom validations / workflows when a specific event happens e.g. user sign-in, pre-sign-up etc. AWS Cognito uses the AWS Lambda — a core technology of AWS server less technology stack — for this purpose. …


Amazon Web Service platform’s Identity and Access Management offering consists of two major components — Cognito User Pool and Cognito Identity Pool. In this article we deep dive into Cognito User Pool and find out what it is, how to use it and when to use it.

Cognito User Pool

Cognito user pool — at its core — is a “user repository” with very rich user registration and authentication capabilities. This is where you can define a schema of the “USER” entity of your application / solution. …

Sanjay Dandekar

Developer, Home Cook, Amateur Photographer - In that order!.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store