
Introduce myself and what the course is about
Lay out what the architecture progression looks like throughout the course.
Setting Python environment, NodeJs environment and create scaffolding from Serverless Python template.
Deploy our first Hello World function into AWS using the Python requirements plugin.
Start abstracting and splitting up yaml configurations that would get too big as development goes on. Serverless specific yaml configurations will be explained and we also take care of API gateway default error responses to be CORS compatible.
Split up the functions and enable a RESTful API. Implement REST with Python specific naming and coding conventions. Python modules are used properly and we have ways to execute the functions locally. We also implement a common reusable API response module. Finally common deployment errors are demonstrated.
Log into the AWS console and take a look at what was deployed in the default serverless configuration so that we know how we can improve upon it later.
Use Terraform standard practice to create a more isolated environment for our lambda functions. The back end code also gets an update to work in tandem with the infrastructure code.
Do a Terraform apply and have a look at what resources get generated on AWS.
Update the Serverless code to use the new VPC and private Subnets then take a look in the AWS console to see the delta between the new infrastructure and default one.
Dive into more Terraform code to create a User Pool and one app client for the backend.
Update the backend code for Bearer Authentication and common utilities for verifying a JWT. The Lambda function gets locked down and an execution policy gets generated on successful auth.
Look through AWS console on the User pool to confirm our Terraform code outputs. We also leverage the AWS hosted UI to go through the OAuth authentication code flow and retrieve the OAuth code.
Go through a complete Implicit grant flow and retrieve the access token to make an authenticated CURL call to our Lambda function.
We explore using the Serverless framework and boilerplate code on how to bring up a sample chat app. You will learn to use DynamoDB to manage connection sessions, connection to DynamoDB securely and how to manage auth for the websockets.
We look at https://github.com/serinth/serverless-python-boilerplate and how to utilize it for bootstrapping applications quickly. Additional functionality is included in the boilerplate.
This course takes you through building Serverless applications quickly and securely on Amazon Web Services by leveraging:
- Terraform for infrastructure code
- Serverless Framework (Python) for quickly deploying and structuring our code (REST & Websockets)
We go beyond the defaults and will construct infrastructure as code and create our own VPCs, Subnets and tackle OAuth2.0 authentication.
By the end of the course, you should be able to comfortably understand how to create a REST and websocket application from scratch and leverage the boilerplate to start generating business value immediately.
The course does require a high quality connection to get 1080p viewing due to font sizes in code. I've made the entire course downloadable in case you are on a slower connection so you can watch offline! Ensure that you set your quality level to "Auto" to get the best resolution possible.
Update: I no longer maintain this course and the code may be out of date. I've made it free so that others can learn some concepts and hopefully gain something from it. All the best on your learning adventures! Some other infra as code tools you can look at include:
- Pulumi -- Pulumi also comes with a copilot AI and really helps streamline the infra code writing!
- Various CDKs for their respective cloud providers