Course curriculum

  • 1

    Part 1 - Building REST APIs

    • Prerequisite: Adding an IAM user

    • Lecture: Lambda 101

    • Exercise: Create Lambda functions in AWS Console

    • Lecture: Lambda EFS integration

    • Lecture: Lambda extensions

    • Lecture: Intro to Provisioned Concurrency

    • Lecture: When to use Provisioned Concurrency

    • Lecture: When to use Lambda destinations

    • Lecture: CloudFormation 101

    • Lecture: IAM 101

    • Exercise: Create a serverless project

    • Exercise: Invoke Lambda functions locally

    • Lecture: Anatomy of a serverless.yml

    • Exercise: Deploy the serverless project

    • Exercise: Deploy project to another stage

    • Lecture: DynamoDB 101

    • Lecture: API Gateway 101

    • Exercise: Create an API with API Gateway and Lambda

    • Source code: Create an API with API Gateway and Lambda

    • Exercise: Creating the Restaurants API

    • Source code: Creating the Restaurants API

    • Exercise: Displaying restaurants on the landing page

    • Source code: Displaying restaurants on the landing page

    • Lecture: Securing API Gateway

    • Exercise: Secure API Gateway with AWS_IAM

    • Source code: Secure API Gateway with AWS_IAM

    • Lecture: Cognito 101

    • Exercise: Create a new Cognito User Pool

    • Source code: Create a new Cognito User Pool

    • Lecture: Secure API Gateway with Cognito User Pool

    • Exercise: Secure API Gateway with Cognito User Pool

    • Source code: Secure API Gateway with Cognito User Pool

    • Lecture: API Gateway best practices

    • Lecture: API Gateway REST API vs HTTP API vs ALB

    • Lecture: When to use Lambda function URLs

    • (Optional) Challenges

    • Live Q&A #1

    • Live Q&A #2

  • 2

    Part 2 - Testing and CI/CD

    • Lecture: Serverless requires a different approach to testing

    • Lecture: Writing integration tests

    • Exercise: Writing integration tests

    • Source code: Writing integration tests

    • Lecture: Writing acceptance tests

    • Exercise: Writing acceptance tests

    • Source code: Writing acceptance tests

    • Lecture: CI/CD

    • Exercise: Set up CI/CD with GitHub Actions

    • Lecture: Intro to SSM Parameter Store

    • Lecture: The problems with environment variables

    • Exercise: Load dynamic configurations

    • Source code: Load dynamic configurations

    • Lecture: Securely handle secrets

    • Exercise: Securely handle secrets

    • Source code: Securely handle secrets

    • Lecture: SSM Parameter Store vs Secrets Manager

    • (Optional) Challenges

    • Live Q&A #3

    • Live Q&A #4

  • 3

    Part 3 - Processing events in real-time

    • Lecture: Project organization

    • Lecture: Intro to EventBridge

    • Lecture: Processing events with EventBridge and Lambda

    • Exercise: Processing events with EventBridge and Lambda

    • Source code: Processing events with EventBridge and Lambda

    • Lecture: How to include SNS and EventBridge in acceptance tests

    • Exercise: Include SNS and EventBridge in acceptance tests

    • Source code: Include SNS and EventBridge in acceptance tests

    • Lecture: Dealing with failures

    • Exercise: Per-function IAM roles

    • Source code: Per-function IAM roles

    • Lecture: SNS vs SQS vs Kinesis vs EventBridge

    • Lecture: Orchestration vs Choreography

    • Live Q&A #5

    • Live Q&A #6

  • 4

    Part 4 - Observability

    • Lecture: Log aggregation

    • Lecture: Structured logging

    • Exercise: Structured logging

    • Source code: Structured logging

    • Lecture: Sample debug logs in production

    • Exercise: Sample debug logs in production

    • Source code: Sample debug logs in production

    • Lecture: Intro to AWS X-Ray

    • Exercise: X-Ray

    • Source code: X-Ray

    • Lecture: X-Ray limitations

    • Lecture: Intro to Lumigo

    • Exercise: Lumigo

    • Source code: Lumigo

    • Lecture: Alerts you should have

    • Exercise: Powertuning Lambda functions

    • Lecture: Costly mistakes to avoid

    • Wrap up

    • Live Q&A #7

    • Live Q&A #8