Course curriculum

  • 1

    Week 1 - Building REST APIs

    • Lecture: What do we mean by serverless?

    • Lecture: When is serverless the right choice for your workload?

    • Lecture: The serverless-first mindset

    • Lecture: What about vendor lock-in?

    • What do you hope to get out of this workshop?

    • Prerequisite: Adding an IAM user

    • Lecture: Lambda 101

    • Exercise: Create Lambda functions in AWS Console

    • Lecture: How Lambda works under the hood

    • Lecture: Understanding Lambda's scaling behaviour

    • 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

    • Lecture: Serverless Framework vs AWS SAM vs AWS CDK vs Terraform

    • Serverless Framework or CDK, your choice!

    • Exercise: Create a serverless project

    • Exercise: Invoke Lambda functions locally

    • Lecture: Anatomy of a serverless.yml

    • Exercise: Deploy the serverless project

    • Exercise: Working with ephemeral environments

    • 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

    • Lecture: How to assign a static IP to a Lambda function

    • Lecture: When to use API Gateway service proxies

    • (Optional) Challenges

    • Live Q&A #1

    • Live Q&A #2

  • 2

    Week 2 - Testing and CI/CD

    • Lecture: Serverless requires a different approach to testing

    • Lecture: The general strategy for testing API Gateway REST APIs

    • Lecture: Writing integration tests

    • Exercise: Writing integration tests

    • Source code: Writing integration tests

    • Lecture: Writing end-to-end tests

    • Exercise: Writing end-to-end tests

    • Source code: Writing end-to-end 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

    • Exercise: Share SSM parameters with temporary environments

    • Source code: Share SSM parameters with temporary environments

    • Exercise: Share information via SSM Parameters

    • Source code: Exercise: Share information via SSM Parameters

    • Lecture: Securely handle secrets

    • Exercise: Securely handle secrets

    • Source code: Securely handle secrets

    • Lecture: SSM Parameter Store vs Secrets Manager

    • Lecture: Ephemeral (Temporary) environments explained

    • Lecture: How to handle serverful resources when using ephemeral environments

    • Lecture: How to load test serverless apps

    • (Optional) Challenges

    • How are we doing so far?

    • Live Q&A #3

    • Live Q&A #4

  • 3

    Week 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 end-to-end tests

    • Exercise: Include SNS and EventBridge in end-to-end tests

    • Source code: Include SNS and EventBridge in end-to-end tests

    • Lecture: Dealing with failures

    • Exercise: Implement idempotency in event processing

    • Source code: Implement idempotency in event processing

    • Exercise: Implement error handling in event processing

    • Source code: Implement error handling in event processing

    • Exercise: Per-function IAM roles

    • Source code: Per-function IAM roles

    • Lecture: SNS vs SQS vs Kinesis vs EventBridge

    • Lecture: How to control Lambda concurrency

    • Lecture: Orchestration vs Choreography

    • Lecture: Introduction to AWS Step Functions

    • Lecture: How to build multi-region, active-active serverless applications

    • Lecture: All you need to know about caching for serverless applications

    • (Optional) Challenges

    • Become an affiliate and earn 50% commission

    • Live Q&A #5

    • Live Q&A #6

  • 4

    Week 4 - Observability

    • Lecture: Log aggregation

    • Lecture: How to avoid CloudWatch Logs altogether

    • 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: Lambda's advanced logging controls

    • Lecture: Intro to AWS X-Ray

    • Exercise: X-Ray

    • Source code: X-Ray

    • Exercise: Analyzing and improving cold start duration

    • Source code: Analyzing and improving cold start duration

    • 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

    • How our app might look in the real world

    • How did we do?

    • Wrap up

    • Live Q&A #7

    • Live Q&A #8