We are building an API capable of handling and triggering automation workflows based on Github webhook events.
Github Webhook is an event based integration provided by Github and other version control systems such as Bitbucket. 
We need a webhook handler to trigger automation workflows such as CI/CD pipelines, ML training jobs e.t.c.
This pipeline can be used to automate deployments for AWS Lambda, API Gateway and other services supported by SAM.List of supported services can be found here.
This post follows a bottom-up approach as described below.
Create a DynamoDB table with a partition key of your choice.
For this example, I am using an application created for senior citizens and my table is called ‘citizens’.
The table partition key is a string called ‘citizenId’ and for optimum performance , I am using the uuid module to generate a unique uuid values for each item. You can read more about optimizing DynamoDB performance here.
This article goes through the full process of setting up a CI/CD pipeline for a Django application with Github, Travis CI and AWS ElasticBeanstalk
This article is going to focus on setting up the CI/CD pipeline and not the Django application as the steps used in this pipeline are common across all Django applications. However, I am including a small note on the application to add some context.
Ex-AWS engineer currently pursuing Masters in Software engineering at UOFC