We may earn an affiliate commission when you visit our partners.
Course image
Udemy logo

Build a Serverless App with AWS Lambda - Hands On! 2024 ed.

Sundog Education by Frank Kane, Brian Tajuddin, Frank Kane, and Sundog Education Team

New.  Re-recorded for 2024 against the latest AWS services and UI's, including the new API Gateway UI.

Read more

New.  Re-recorded for 2024 against the latest AWS services and UI's, including the new API Gateway UI.

Immerse yourself in Amazon Web Services (AWS) with this hands-on, project-based course - and truly internalize some highly valuable skills in the world of technology. We'll walk you through building your own chat website using nothing but AWS services - and no standalone services or server instances at all.  

Building a "serverless app" using AWS and its Lambda service is a great introduction to the core services AWS offers. As you create your chat application, you'll learn and use the following AWS services:

  • S3 (Simple Storage Service) - For storing static HTML and vending it to your users' browsers

  • Lambda - For executing logic in the cloud for storing and retrieving data in your application

  • IAM (Identity and Access Management) - For securing access to your services

  • API Gateway - For presenting a well-modeled API to your clients and automatically generating client-side code to communicate with it

  • DynamoDB - For quickly storing and retrieving data at scale

  • Cognito - For managing users, account creation, and logins securely

  • CloudFront - For accelerating the delivery of your site to end users with a CDN

We'll tie it all together by learning and practicing Javascript, and we'll learn about CORS to grant browsers the permissions they need to run a serverless application.

Even if you're familiar with AWS, you'll learn valuable techniques on how to build a fully functional, dynamic website without maintaining any servers at all - not even via EC2.

Your highly experienced guides through this project are Frank Kane, formerly a senior manager at Amazon, and Brian Tajuddin, a principal engineer also formerly working at Amazon. You'll be learning AWS from people who were there when it was being created. You'll join over 700,000 other students of the Sundog Education team who have leveled up their careers with hot technical skills.

Although this course isn't targeting any specific AWS certification exam, you'll leave it with a great foundation of AWS knowledge that will begin to prepare you for them.

Enroll now

What's inside

Learning objectives

  • Build a chat application entirely with aws services, and no stand-alone servers at all
  • Architect and design serverless applications
  • Serve static resources to browsers using aws's s3 (simple storage service)
  • Use javascript to dynamically modify web pages
  • Manage permissions and access policies using iam (identity and access management)
  • Manipulate and vend data in the cloud using aws lambda
  • Use cors to manage client-side security in serverless apps
  • Store and retrieve data with dynamodb
  • Model api's and create sdk's with api gateway
  • Create a user login system with cognito
  • Speed up your web app with a cloudfront cdn
  • Show more
  • Show less

Syllabus

Introduction
Udemy 101: Getting the Most From This Course
Important note

Course overview and demo of the chat application

Read more

Create an AWS account, an S3 bucket, upload a website, and view it in your browser

Static Chat Application with S3

Buckets, paths, and static website hosting

We'll review all of the static HTML, CSS, and Javascript that make up our chat application so far.

For now, we'll upload some static chat data into S3 in JSON format so we have something to display.

This course uses Javascript, so let's do a quick crash course on the basics of the language.

How does Javascript execute in parallel to speed up your website, without dealing with all the nastiness of multi-threading and concurrency?

Let's dynamically modify our chat pages to include the static chat data we're vending from S3.

We'll walk through the previous lecture's challenge of adding a new message and a new conversation to our chats.

Creating an API

Learn how Lambda allows you to execute snippets of code without running a dedicated server.

Identity and Access Management lets you secure your services and the services they have access to.

Let's give our Lambda function the permissions it needs to read our data from S3.

Let's dissect our first Lambda function, and how it works.

Learn how to create a test case for our Lambda function, and run it from within the AWS console.

Triggers are what cause your Lambda function to be executed. Let's cover the various ways in which that can work.

Let's set up the API Gateway in Proxy mode to trigger our Lambda function when an API is called from our client.

Learn how Cross-Origin Resource Sharing (CORS) gets around browser security to allow you to call web services from your page.

Let's modify our client-side code to hit the API Gateway and Lambda, instead of S3 directly.

We'll walk through the previous lecture's challenge to break CORS support intentionally and see what happens, and to lock down our API to only be accessible to your S3 bucket.

Let's modify our app to retrieve entire conversations using the API Gateway.

We'll walk through our solution to the previous lecture's challenge of writing test cases for failure modes.

Use DynamoDB for storage

Let's cover DynamoDB from a high level, and learn how it might help us store our chat data more efficiently.

Why use DynamoDB instead of S3? There are pros and cons to each, but DynamoDB is the clear winner for us.

Create the tables we need for chat conversations and messages in DynamoDB

Populate our DynamoDB tables with some sample chats for us to test with.

Grant our Lambda function the necessary permissions via IAM to access our DynamoDB tables instead of S3.

Modify and test our application to read chat conversations from DynamoDB instead of S3.

Modify and test our application to read the conversation list from DynamoDB instead of S3.

Modify our chat application to allow users to enter new chat messages and store them in DynamoDB where others can see them!

We'll walk through our solution to the challenge of handling invalid HTTP methods, and removing the now unnecessary access to S3 from our Lambda functions.

Break up the monolith

Why go through the trouble of breaking up our monolithic Lambda function? Let's explain.

What are resources and methods in the API Gateway, and how are they used?

What models are in the API Gateway, and how to use them.

Dissecting the request flow diagram in the API Gateway.

Let's go hands on and define our API for our chat application in the API Gateway, not in proxy mode.

Let's split up our Lambda function into individual ones for reading and writing messages.

We'll cover stages in the API Gateway and how they are used.

With a well defined API in the API Gateway, you can automatically generate client code for Javascript, and for pretty much any other client using the Swagger definition it creates for you.

We'll tackle the previous lecture's challenge of removing the hardcoded "Student" user name from our Lambda functions, and providing it as an event parameter instead.

Add Identity to the app

Let's cover the various components of Cognito, which we'll use for user account management.

Let's walk through Cognito in the console, and set up the user pool for our chat application.

Next we need to wire things up for listing users through Lambda with an associated IAM policy and role, and through the API Gateway.

Let's add the front-end code for listing users - and dive into how to debug things when things don't work.

Let's wire up the API and front end for creating a new conversation.

Let's create a working sign up page so new users can create accounts.

Now we need to wire up a page so users can enter the authentication code they received via email, or request it to be re-sent.

Now that we can sign in and confirm users, let's actually sign them in and tie their identity into the rest of the app.

We need to reconfigure the API Gateway to use an Authorizer, and modify our input mappings to use the new authenticated user.

We have sign in and authorization on the API, and now we just need to link the two together! 

In the last lecture, we challenged you to fix the problem of starting chats with yourself, and to ensure you can't see chats that you're not involved in. Let's look at our solution.

Optimization and Preparing for Production

You don't want your changes to "go live" immediately. Lambda versioning ensures a known good version of what your code is what's live. We'll also use Canary to divide traffic between different deployments, create and use a test stage and promote it to production, and use version aliases to simplify the configuration of Lambda.

Let's see how Stage Variables can let us maintain separate databases, or resources in general, between different stages so they don't pollute each other.

Let's talk about how CloudFront, AWS's content delivery network, works and why it's important.

Let's walk through setting up CloudFront to accelerate the delivery of our static resources in S3.

We'll tour the various monitoring available in AWS for our application, and practice setting up an alarm.

Finally, let's walk through how you would go about associating your own custom domain name with this application. We'll also show you how to associate a custom domain name with your API layer, if that's something you want to expose more widely.

Continue your learning about AWS and related technologies.

There's so much more learn about AWS! Here are some pointers for continuing your exploration.

Bonus Lecture: More courses to explore!

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Builds a strong foundation for beginners in AWS, serverless architecture, JavaScript, APIs and more
Taught by highly experienced professionals at Amazon, ensuring a high level of expertise in the subject matter
Offers a comprehensive study of AWS services and how they can be used to build serverless applications
Relevant to those looking to gain practical experience building serverless applications in the cloud
Uses hands-on labs and interactive materials to provide a practical learning experience
May require some prior experience with JavaScript and basic cloud concepts

Save this course

Save Build a Serverless App with AWS Lambda - Hands On! 2024 ed. to your list so you can find it easily later:
Save

Reviews summary

Cloud computing course with aws lambda

Students say this course is great for anyone new to serverless architecture on AWS Lambda. The course is well organized and easy to follow. The instructor is very knowledgeable and the assignments are relevant.
Relevant
"The assignments are relevant and help reinforce the concepts learned in the videos."
"This is hands-on and there are a lot of assignments to practice."
Well organized
"This course is very well organized and easy to follow along."
"Thank you for creating this great course. I've searched for a while for a Serverless course that is well organized, high quality, and up-to-date."
Very knowledgeable
"The instructor is very knowledgeable."
"This course is made just for lambdas and the instructor is great."

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Build a Serverless App with AWS Lambda - Hands On! 2024 ed. with these activities:
ReactJS Video
Build understanding of Javascript by designing a more complex page that requires the use of Javascript and ReactJS.
Browse courses on JavaScript
Show steps
  • Watch tutorial demonstrating ReactJS.
  • Create a functional ReactJS application and deploy.
  • Leverage the ReactJS API to create dynamic and interactive elements.
Code Challenge: API Gateway
Reinforce concepts around API Gateway and Lambdas by working through a real-world coding challenge.
Browse courses on API Gateway
Show steps
  • Identify and gather requirements for the code challenge.
  • Design and implement an API using API Gateway.
  • Create and configure Lambda functions to handle API requests.
  • Test and debug the API and Lambda functions.
  • Deploy the API and Lambda functions to production.
Blog Post: Implementing Authentication
Deepen understanding of Cognito and authentication mechanisms by writing a blog post explaining how to implement authentication in a serverless application.
Browse courses on Cognito
Show steps
  • Research and understand how Cognito works.
  • Design and implement authentication flow using Cognito.
  • Write a blog post explaining the implementation details.
  • Publish the blog post and share it with the community.
Show all three activities

Career center

Learners who complete Build a Serverless App with AWS Lambda - Hands On! 2024 ed. will develop knowledge and skills that may be useful to these careers:
Full-Stack Developer
Full-Stack Developers are responsible for both the front-end and back-end development of web applications and services. They work on the client-side and server-side of applications, ensuring that the application is both functional and visually appealing. This course may be useful for Full-Stack Developers who want to learn how to build serverless applications using AWS Lambda, which can help them build more scalable and cost-effective applications.
Cloud Engineer
Cloud Engineers are responsible for designing, building, and maintaining cloud-based systems. They work with a variety of cloud technologies, including AWS, Azure, and Google Cloud Platform. This course may be useful for Cloud Engineers who want to learn how to build serverless applications using AWS Lambda, which can help them build more scalable and cost-effective applications.
Software Engineer
Software Engineers design, develop, test, and maintain software systems. They work on a variety of projects, from small personal projects to large enterprise systems. This course may be useful for Software Engineers who want to learn how to build serverless applications using AWS Lambda, which can help them build more scalable and cost-effective applications.
Back-End Developer
Back-End Developers create and maintain the server-side logic and architecture of web applications and services. They are responsible for ensuring that the application's data is stored and retrieved efficiently, that the application's logic is executed correctly, and that the application is secure and reliable. This course may be useful for Back-End Developers who want to learn how to build serverless applications using AWS Lambda, which can help them build more scalable and cost-effective applications.
Network Engineer
Network Engineers are responsible for designing, building, and maintaining computer networks. They work with a variety of network technologies, including routers, switches, and firewalls. This course may be useful for Network Engineers who want to learn how to build serverless applications using AWS Lambda, which can help them build more scalable and cost-effective networks.
Data Engineer
Data Engineers are responsible for designing, building, and maintaining data pipelines. They work with a variety of data sources, including databases, data warehouses, and data lakes. This course may be useful for Data Engineers who want to learn how to build serverless applications using AWS Lambda, which can help them build more scalable and cost-effective data pipelines.
DevOps Engineer
DevOps Engineers are responsible for bridging the gap between development and operations teams. They work to ensure that applications are deployed and maintained efficiently and reliably. This course may be useful for DevOps Engineers who want to learn how to build serverless applications using AWS Lambda, which can help them build more scalable and cost-effective applications.
Database Administrator
Database Administrators are responsible for managing and maintaining databases. They work with a variety of database technologies, including SQL and NoSQL databases. This course may be useful for Database Administrators who want to learn how to build serverless applications using AWS Lambda, which can help them build more scalable and cost-effective databases.
Security Engineer
Security Engineers are responsible for protecting networks, systems, and data from unauthorized access and attack. They work with a variety of security technologies, including firewalls, intrusion detection systems, and encryption. This course may be useful for Security Engineers who want to learn how to build secure serverless applications using AWS Lambda, which can help them protect their applications from attack.
IT Architect
IT Architects are responsible for designing and maintaining the IT infrastructure of an organization. They work with a variety of technologies, including hardware, software, and networks. This course may be useful for IT Architects who want to learn how to build serverless applications using AWS Lambda, which can help them build more scalable and cost-effective IT infrastructures.
Business Analyst
Business Analysts are responsible for gathering and analyzing business requirements. They work with stakeholders to understand their needs and develop solutions that meet those needs. This course may be useful for Business Analysts who want to learn how to build serverless applications using AWS Lambda, which can help them build more scalable and cost-effective solutions for their clients.
Project Manager
Project Managers are responsible for planning, executing, and closing projects. They work with a variety of stakeholders to ensure that projects are completed on time, within budget, and to scope. This course may be useful for Project Managers who want to learn how to build serverless applications using AWS Lambda, which can help them build more scalable and cost-effective projects.
Technical Writer
Technical Writers are responsible for creating and maintaining documentation for software and hardware products. They work with engineers and other technical staff to gather information and develop documentation that is clear, concise, and accurate. This course may be useful for Technical Writers who want to learn how to build serverless applications using AWS Lambda, which can help them build more scalable and cost-effective documentation.
User Experience Designer
User Experience Designers are responsible for designing the user interface and experience of software and hardware products. They work with developers and other technical staff to create products that are easy to use and enjoyable to use. This course may be useful for User Experience Designers who want to learn how to build serverless applications using AWS Lambda, which can help them build more scalable and cost-effective products.
Quality Assurance Analyst
Quality Assurance Analysts are responsible for testing software and hardware products to ensure that they meet quality standards. They work with developers and other technical staff to identify and fix defects. This course may be useful for Quality Assurance Analysts who want to learn how to build serverless applications using AWS Lambda, which can help them build more scalable and cost-effective tests.

Reading list

We've selected seven books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Build a Serverless App with AWS Lambda - Hands On! 2024 ed..
Provides a comprehensive review of the AWS Certified Solutions Architect - Associate exam. It covers the core concepts and services covered in the course and includes practice questions and mock exams, offering a valuable resource for preparing for the certification.
Provides a concise guide to the core concepts and principles of JavaScript. It offers a solid foundation for understanding the JavaScript code used in the course and promotes best practices for writing maintainable and efficient code.
Offers a comprehensive guide to designing and building microservices-based architectures. It provides valuable insights into the principles and best practices of microservices, complementing the course's focus on building modular and scalable applications.
Provides a comprehensive guide to designing and architecting scalable systems. It offers valuable insights into the principles and best practices of scalability, complementing the course's focus on building applications that can handle increasing demand.
Provides a comprehensive guide to the Rust programming language. It offers a thorough introduction to Rust's syntax, semantics, and ecosystem, providing valuable background knowledge for those interested in exploring Rust for building serverless functions.
Provides a comprehensive guide to the Go programming language. It offers a thorough introduction to Go's syntax, semantics, and ecosystem, providing valuable background knowledge for those interested in exploring Go for building serverless functions.
Offers a comprehensive guide to front-end development best practices and techniques. It provides valuable background knowledge on JavaScript, HTML, and CSS, enhancing the course's focus on building dynamic web pages.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Here are nine courses similar to Build a Serverless App with AWS Lambda - Hands On! 2024 ed..
AWS Fundamentals: Building Serverless Applications
Most relevant
Data Analytics and Databases on AWS
Most relevant
Integrating AWS with the SDK
Most relevant
Serverless Architectures on AWS
Most relevant
Build a RESTful API(Node.js) using AWS Lambda & API...
Most relevant
Build a Python application(API) on AWS(Lambda+API Gateway)
Most relevant
Building Modern Node.js Applications on AWS
Most relevant
Complete AWS Bedrock Generative AI Course + Projects
Most relevant
Introduction to Amazon Web Services (AWS)
Most relevant
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2024 OpenCourser