
Master serverless programming with AWS Lambda by building, testing, and deploying functions using SAM CLI, API gateway, DynamoDB, and YAML templates.
Maximize learning for Java developers through hands-on labs and assignments, while installing AWS and SAM CLI, testing REST APIs with Postman and API Gateway, and embracing serverless lambda approach.
Clone the course repository on GitHub (github dot com slash Bharath Thippireddy) to access all completed projects, then run and reference them to explore and experiment.
Complete the section assignments to evaluate your learning and submit them for review via lecture resources. Download the pdf with code and configuration as a helpful reference, not for copying.
Download the slides from the resources section and unzip the file to access a Mac Keynote, Windows PowerPoint, and a PDF for interview revision and team presentations.
Harness cloud components for business solutions with serverless programming, using AWS Lambda for custom code and nano services, paying only for what you use.
Explore nano services, the next generation of micro services, with the do one thing principle, low cost versus usefulness, and asynchronous event driven execution using the AWS serverless repository.
Discover how AWS Lambda provides compute for serverless apps, letting Java developers run handler-based custom code on events, using IAM roles, and organizing logic with controllers, services, and DAO.
Explore FaaS with AWS lambda, where each lambda is a nano service triggered by events from S3, SNS, or DynamoDB, with runtime provisioned and billed by execution time.
Explore how AWS Lambda enables event-driven, serverless components to power restful backends, data processing, chatbots, and infrastructure management with scalable, on-demand Lambda instances.
Create your first AWS Lambda from the console, author from scratch in node js 12, test with events, and view CloudWatch logs and IAM permissions.
Learn the lambda workflow and lifecycle, deploy a Java function from console or CLI, and understand how AWS provisions runtimes and triggers from services like S3, DynamoDB, and SNS.
Learn how to invoke AWS Lambda functions via console test, CLI, and SDK, and through event sources like S3, API Gateway, DynamoDB, and SNS in synchronous, asynchronous, and polling modes.
Explore how AWS Lambda runs event-driven code with automatic scaling and fault tolerance across zones, and understand its usage-based pricing, limits, and memory-driven costs.
Learn to create and deploy serverless projects on AWS with AWS SAM, including deploying lambdas and infrastructure from a single command, plus setting up IAM, CLI tools, Java, and YAML.
Set up an AWS account by entering your email, creating a password, and choosing a personal account; then activate access and use only free tier services for a year.
Learn how AWS SAM simplifies building and deploying serverless Java applications by configuring Lambda functions in a concise template, then build and deploy with sam build and sam deploy.
Create an IAM user named lambda user in the aws console, enable console and programmatic access, attach administrator permissions, and generate access keys for the sam cli.
Install the AWS CLI version 2 and the AWS SAM CLI, verify their versions, and learn to build and deploy serverless projects with SAM in AWS Lambda.
Configure the AWS CLI by entering your access key id and secret access key with aws configure. Set the default region to us-east-1 to run AWS and SAM commands.
Install the Java JDK (8 or 11), set up an IDE (Eclipse or IntelliJ), and install Maven with proper environment variables to build and deploy Java code to AWS Lambda.
Install and launch Postman, a RESTful client and API development environment, to test your microservices RESTful API. Learn to use various HTTP methods, headers, JSON bodies, and basic authentication.
Install Visual Studio Code, the open source IDE from Microsoft, to edit YAML files (YAML extends JSON) on Windows, Mac, and Linux; you can use any editor, including Sublime Text.
Learn YAML syntax for configuring Docker compose, Kubernetes, and Ansible, with practical guidance on creating and validating YAML files in Visual Studio Code.
Explore AWS Lambda documentation to build serverless projects from scratch, covering permissions, Java examples, monitoring, troubleshooting, and security for Java developers.
Learn to build and deploy a serverless AWS Lambda app for Java developers using sam cli, from creating a maven project and template.yaml to testing and deleting the stack.
Master creating a serverless project with the SAM CLI by choosing AWS Quickstart templates, selecting the hello world template, and configuring the runtime in the updated SAM init flow.
Create a java lambda project using the aws sam cli, selecting the hello world template with maven and java eleven. Explore the project structure, template.yaml, and the hello world function.
Build and package your Java AWS Lambda with sam build using template.yaml, preparing artifacts for deployment and revealing the .aws-sam build outputs.
Deploy a serverless app with SAM deploy guided, uploading artifacts to S3, converting the SAM template to CloudFormation, and provisioning Lambda, API Gateway, and IAM roles.
Launch your first Java lambda by importing a Maven project, creating a Hello world function, configuring the SAM template, building and deploying with SAM, and testing in the AWS console.
Pass a simple name parameter to a lambda and see how the input and output flow. Build and deploy with SAM, then test in the AWS console.
Learn the anatomy of a sam template file, focusing on transform and resources, define a hello world lambda with 512 mb memory and code uri, and validate with sam deploy.
Walk through the maven pom.xml dependencies for AWS Lambda Java core, implement the request handler, and use API Gateway pojo classes for input and output.
Package the aws lambda java project with the Maven shade plugin to create an uber jar containing dependencies, then deploy with SAM by pointing to the target jar.
Learn how to test an AWS Lambda function locally by running a Docker container that simulates the Lambda service with sam local invoke, using a sample event.json input.
Demonstrates using sam local start api to simulate api gateway on your local machine, hit the local gateway url, and configure the api gateway in template.yaml from scratch.
Access and tail AWS Lambda logs from your local machine using the SAM CLI, view CloudWatch logs, and diagnose errors with stack traces such as deserialization failures.
Explore lambda security by understanding execution roles and resource policies, granting the least permissions for lambda access to resources like CloudWatch, and controlling which services can trigger the function.
Learn how to clean up a lambda project by deleting its CloudFormation stack with AWS CLI, and prepare for future deployment using SAM build and SAM deploy.
Master lambda signatures, including primitives, lists, maps, and Java pojos, with input/output streams and the context object; explore variable scopes and cold start, plus S3/SNS events.
Learn to pass and return primitive types in a Java lambda, including int and float. Create a data types pojo under com.bharath.aws.lambda.finish, configure template.yaml, and test with sam local invoke.
Pass collection type data and return lists from aws lambda functions. Return a list of integers for given student names using a map of scores.
Pass a map as input to a java AWS lambda, print data with System.out, and observe CloudWatch logs after deploying via SAM build and invoke.
Build a map of lists in Java for a serverless AWS Lambda, mapping student names to score lists. Test with SAM local invoke after updating template.yaml and rebuilding.
Learn how to pass Java objects as parameters to AWS Lambda and return Pojo data, using a patient class and a clinical data class that follow Java Bean conventions.
Learn how a Java lambda in AWS can use input and output streams with a void return, reading data, converting to lowercase, and writing results back.
Demonstrates the AWS Lambda Java context object, exposing invocation and execution details such as request ID, remaining time, memory limits, and log group information.
Learn how AWS Lambda timeout works, including the default three seconds, identifying remaining time in milliseconds, and configuring a timeout in template.yaml to a maximum of fifteen minutes.
Learn to pass environment variables from template.yaml to a lambda function, enabling runtime pointing to different rest API URLs, databases, or external systems without hard coding, accessed via system.getenv.
Explore how AWS Lambda instantiates a Java function and how global, class, and local variables affect execution, including a constructor and a static block, with cold start context.
Discover how cold starts affect a java lambda by deploying and testing multiple invocations, observe static and instance fields staying warm, and optimize by keeping expensive work outside invocation.
Invoke remote lambda functions from the command line with the AWS CLI, using async or sync invocation and viewing outputs in files and cloud watch logs.
Learn to build a serverless API with AWS Lambda for Java developers using synchronous Lambda functions and API Gateway to create and retrieve orders in DynamoDB.
Discover how API gateway enables serverless APIs with security via Cognito and CloudFront, auto scales from one to ten thousand requests per second, and requires only configuration.
Explore dynamoDB, a serverless, scalable database with tables, items, and attributes, a mandatory partition key, optional soft key, and streams that trigger Lambda functions for serverless APIs.
Learn to use the AWS Java SDK to invoke lambda functions via API gateway and from code, and to interact with DynamoDB using Jackson object mapper.
Explore how to secure serverless Java workloads by configuring IAM execution roles and Dinamo DB permissions for Lambda functions, and applying resource policies for API Gateway triggers managed by SAM.
Discover how a SAM template.yaml and cloud formation create the infrastructure for two lambda functions, an API gateway, and a DynamoDB table to create and read orders.
Learn how cloud formation intrinsic functions in template.yaml enable dynamic references across resources created by SAM deploy, including passing a DynamoDB table name to a lambda function.
Create a sam project for orders api from a java template, rename the hello world function to create order, and clean template.yaml for a minimal lambda with api gateway.
Create an order DTO and lambda to parse API Gateway requests with Jackson, then return a 200 response including the order ID.
Configure an api gateway trigger for a lambda using a sam template by pointing to the orders api, setting the handler, and exposing the 'order' path with post.
Deploy and test the orders API by building and deploying with AWS SAM, creating a CloudFormation stack, and validating the Lambda backed API Gateway via Postman using POST to /orders.
Create and configure the read orders lambda, using an object mapper to serialize results to json, and expose get and post endpoints via API gateway.
Test the read orders lambda, build with SAM, and deploy to verify the API gateway endpoint for get and post.
Learn to run a simulated API gateway locally with sam local start api to test Lambda functions, using a local URL on port 3000 and Postman for orders.
Learn to use the global element in template.yaml to apply runtime, memory size, and timeout across all lambda functions, then build and test locally with SAM and Postman.
Create a DynamoDB simple table named orders_table with a primary key id in the SAM template, and pass the table name to lambdas via an environment variable.
Create an item in DynamoDB via a Java Lambda by wiring the DynamoDB library, updating POM.xml, and inserting id, item name, and quantity into orders table from an environment variable.
Implement a get orders Lambda that scans a DynamoDB table, maps each item to an order object, and returns a JSON response using a default DynamoDB client.
Configure security by assigning lambda policies to enable CRUD on DynamoDB table via template.yaml, while granting minimal read-only permissions on this table and ensuring the primary key type is number.
Deploy and test a serverless Java app with AWS SAM, API Gateway, and DynamoDB. Create and read orders via Lambda functions, ensuring item name is used consistently.
Learn to expose the API gateway URL via the outputs section of a SAM template, using the Sub intrinsic function to substitute region and endpoints for testing in Postman.
Learn to use the get attribute intrinsic function to render the create order function ARN and its IAM role ARN in the SAM outputs.
Refactor lambda handlers to define shared resources at the instance level, reusing an object mapper and DynamoDB and S3 connections across invocations to avoid recreation, with private final fields.
Learn to trigger asynchronous AWS Lambda via S3 uploads, convert patient JSON to POJO objects, publish messages to SNS, and process them with a second Lambda to generate reports.
Explore S3, an object-based storage service with buckets in a flat data pool, featuring versioning, key-based encryption, and lambda triggers for serverless applications via Sam CLI.
Demonstrate wiring S3 and SNS using Java AWS SDKs: read an S3 object with S3 client, map to patient checkout events with Jackson, then publish to SNS.
Walk through the SAM template YAML to define two lambda functions triggered by S3 and SNS, the S3 bucket, and SNS topic, and explain dynamic names and environment variables.
Create the patient checkout serverless project by using sam init with the hello world template, configure maven dependencies for s3 and sns, and update pom.xml and eclipse import.
Define a patient model and two lambda skeletons, the patient checkout lambda for s3 events and the bill management lambda for sns events, enabling object mapping and toString.
Implement patient checkout lambda to process S3 event notifications, read the uploaded object via S3 API, map JSON to patient checkout event pojos with Jackson, and log results to CloudWatch.
Configure an AWS Lambda function in template.yaml with function name patient and handler. Create S3 bucket resource named patient and object-created event to trigger the Lambda, and add read policy.
Build, deploy, and test an AWS Lambda app with S3 events using SAM, create a CloudFormation stack, upload patient.json to S3, and verify Lambda logs in CloudWatch.
Configure a lambda to read json from s3, loop through patient checkout events, and publish messages to an sns topic defined in a cloudformation yaml via environment variable using Ref.
Publish every checkout event to an sns topic by looping through the events, converting to strings with an object mapper, and reading the topic arn from an environment variable.
Implement a lambda function triggered by an SNS event to process records, convert JSON messages into a patient check out event with an object mapper, and log to CloudWatch.
Configure the bill management lambda and its resources by updating the yaml template, duplicating the first lambda, renaming to bill management function, and wiring sns events to the topic.
Build, deploy, and test a complete serverless workflow using AWS SAM, S3, and SNS with two Lambda functions and CloudWatch monitoring.
Refactor serverless lambda functions by making fields private final, caching environment variables, and extracting publish to SNS into its method; close S3 input streams after processing and publish per event.
Trace how sysout statements and cloud watch logs reveal lambda processing of S3 data into Java objects, and how exceptions appear with corrupt data.
Use the AWS Lambda context logger instead of sys out, retrieve the logger from context, and log exceptions with stack traces via logger.log for clearer CloudWatch logs.
Add log4j 2 dependencies to the pom.xml, switch to slf4j LoggerFactory for logging, and configure log4j 2 with an AWS Lambda appender in src/main/resources.
Test the serverless workflow by uploading a JSON file to S3, then monitor Lambda function logs in CloudWatch to verify the request IDs and log lines appended by log4j.
Master error handling in AWS Lambda for Java across synchronous, asynchronous, and polling triggers, using try-catch, configurable retries, and dead-letter queues with SNS or SQS via template YAML.
Create an error handler lambda triggered by SNS dead-letter queue events to log records and rethrow exceptions as runtime errors, signaling failures in the checkout lambda.
Configure a dead letter queue for the checkout lambda using an SNS topic as the DLQ in the SAM template, and set up an error handling lambda.
Delete the CloudFormation stack and empty the S3 bucket to clean up a serverless AWS Java project, using the CLI and console for a fresh start.
Build, deploy, and test a dead letter queue-enabled lambda with an error handler and SNS topic, triggered by S3 events; configure retry and maximum retry attempts in template.yaml.
Demonstrate how AWS Lambda scales with concurrent events by spawning separate function instances and distinct log streams in CloudWatch, validated via two simultaneous S3 uploads.
Understand the cold start in AWS Lambda for Java developers, including environment setup, loading the Lambda class, and creating and reusing an instance across events.
Demonstrate cold start behavior by triggering an AWS Lambda function through S3 uploads, and observe log streams in CloudWatch showing a reused environment across invocations.
Learn that a lambda instance handles a single event, with no service-level parallelism, and ensure all threads finish before the lambda returns to avoid freezing or state corruption.
Convert a synchronous API gateway trigger into an asynchronous workflow with an SQS queue. Lambdas poll batched messages, handle duplicates idempotently, and use dead-letter queues for failures.
Configure a lambda to use SQS as an event trigger for a claim management use case, processing a batch of messages and logging each message body to CloudWatch.
Create a lambda function to process SQS events by implementing a handler that receives an SQS event, loops through event.getRecords, and prints each message body and its attributes.
Configure the lambda function and its claim management SQS queue in the template YAML for the patient check project, renaming bill management and setting the batch size to ten.
Deploy and test a serverless Java app by fixing YAML indentation, building with SAM, deploying, then triggering a Lambda via an SQS queue, and monitoring logs in CloudWatch.
Sample of the reviews:
Hello Learners, To put in one word, "Awesome" !!! To learn AWS Serverless basics programmatically. this is the course which needs to be followed step by step. I am writing this after going through first 4 sections. I went through many Udemy courses especially all the top rated ones, everyone explained theoretically. I wasn't satisfied by any of them. I needed to know the flow of how it actually works in code not just through Amazon Console. My search stopped when I found this course :) Thanks a ton Bharath for the guidance -- Rohit Kumar Singh
The best and the most comprehensive AWS Lambda course for Java I can find so far - Marios Chen
Sharing & guiding on cutting edge technologies in a user friendly way is the unique about this course - Samaresh Kumar Pradhan
All source code is available for download
Responsive Instructor - All questions answered within 24 hours
Professional video and audio recordings (check the free previews)
Are you a Java developer interested in learning Serverless Programming in detail then this course is for you .Are you an experienced java developer who wants to master the fundamentals of AWS Lambda Functions and use them to create Serverless projects then this course is for you as well.
AWS Lambdas combine Nano Services and Function as a service (FaaS) to deliver Serverless programming model while using various other managed components in AWS. Look at any project that is on AWS it will be using AWS Lambda functions. This course is designed for developers with some knowledge of AWS and Java Development.
You will start this course by:
Master the fundamentals of Serverless Programming and AWS Lamdba
Create Lambda Function using the AWS console
Install the tools required to create and deploy Serverless Projects from your command line
Learn the method signature and the data that can be passed to and returned from a Lambda Function
Learn the YAML Syntax required to create SAM template files
Create Projects using SAM CLI
Understand the structure of a Serverless Project
Build and deploy Function as Code(FAAS)
Test the Functions remotely on the cloud and locally
Access the lambda environment information
Create and cleanup the entire infrastructure required for your project with a single command
Create Serverless APIs using API Gateway , AWS Lambda functions and DynamoDB
Learn how to use AWS APIs and SDKs to programatically work with various components
Work on a ASync usecase using S3 and SNS as triggers
Configure Logging using Log4j
Handle Errors gracefully to configure Dead Letter Queues
Learn what Cold Starts are
Scaling Lambda Functions
and more in easy steps