October 25, 2023
Last updated: October 27, 2023
Table of Contents
If you are interested in building a web app without worrying about servers, scalability, or maintenance, then you might want to consider building a serverless web app on AWS. It is a web application that runs on the cloud without requiring any servers to host or manage it. Instead, it relies on serverless computing services, such as AWS Lambda, to execute the backend logic and interact with other cloud resources.
AWS Lambda is a service that lets you run code without provisioning or managing servers. With Lambda, you can run code for virtually any type of application or backend service. You can also use Lambda to integrate with other AWS services, such as Amazon S3, Amazon DynamoDB, Amazon API Gateway, and more.
In this blog, I will show you how to build a serverless web app on AWS services using AWS Lambda as the core component. You will be able to create a simple web page that allows users to enter their name and email address, and store them in a DynamoDB table.
We will also use API Gateway to create an endpoint that invokes the Lambda function and returns the data to the web page. By the end of this blog, you will have a basic understanding of AWS serverless web app architecture and how to build a serverless web application in AWS.
Let’s get started with the steps to building a serverless web app on AWS.
Before getting started with the project, I will list out the prerequisites that you will need to start building your first serverless web app.
In order to start building a serverless web app on AWS you should first create an AWS account and configure the AWS CLI. This will allow you to access and use the AWS services that we will need for this project. I would suggest you to follow these steps:
Now that you have created an account, proceed further to configure the AWS CLI.
The next step in building a serverless web app on AWS is to create a simple HTML page that will serve as the front end of your web app. You will be using HTML, CSS, and JavaScript to create a web page that allows users to enter their basic information and displays a message when they submit the form. You will also upload the HTML page to S3, which is a service that provides secure, durable, and scalable object storage.
Now you can proceed to create your first serverless web app:
<html>
<head>
<style>
body {
font-family: Arial, sans-serif;
text-align: center;
}
h1 {
color: blue;
}
form {
margin: 20px auto;
width: 300px;
}
input {
display: block;
margin: 10px auto;
}
button {
background-color: green;
color: white;
padding: 10px 20px;
border: none;
cursor: pointer;
}
#message {
display: none;
color: red;
}
</style>
</head>
<body>
<h1>Serverless Web App Demo</h1>
<form id=”form”>
<input type=”text” id=”name” placeholder=”Enter your name” required>
<input type=”email” id=”email address” placeholder=”Enter your email” required>
<button type=”submit”>Submit</button>
</form>
<p id=”message”>Thank you for submitting your details!</p>
<script>
// Get the form element
var form = document.getElementById(“form”);
// Add an event listener to handle the form submission
form.addEventListener(“submit”, function(event) {
// Prevent the default form submission behavior
event.preventDefault();
// Get the name and email values from the input elements
var name = document.getElementById(“name”).value;
var email = document.getElementById(“email address”).value;
// Call the sendData function to send the data to the backend
sendData(name, email address);
// Show the message element
document.getElementById(“message”).style.display = “block”;
// Clear the input values
document.getElementById(“name”).value = “”;
document.getElementById(“email address”).value = “”;
});
// Define a function to send the data to the backend
function sendData(name, email) {
// Create an XMLHttpRequest object
var xhr = new XMLHttpRequest();
// Set the request method, URL, and asynchronous flag
xhr.open(“POST”, “https://your-api-gateway-url”, true);
// Set the request header for the content type
xhr.setRequestHeader(“Content-Type”, “application/json”);
// Define a callback function to handle the response
xhr.onreadystatechange = function() {
// Check if the request is completed
if (xhr.readyState == 4) {
// Check if the status is OK
if (xhr.status == 200) {
// Parse the response as JSON
var response = JSON.parse(xhr.responseText);
// Log the response to the console
console.log(response);
} else {
// Log the error to the console
console.error(xhr.statusText);
}
}
};
// Create a data object with the name and email properties
var data = {
name: name,
email: email address
};
// Send the data as JSON string
xhr.send(JSON.stringify(data));
}
</script>
</body>
</html>
To proceed with building a serverless web app on AWS, you should write a Lambda function that will handle the user input and store it in DynamoDB. DynamoDB is a service that provides a fast and flexible NoSQL database. You can use DynamoDB to store the name and email address of the users who submit the form on your web page.
To write a Lambda function, follow these steps:
import json
import boto3
# Create a DynamoDB resource
dynamodb = boto3.resource(‘dynamodb’)
# Get the table object
table = dynamodb.Table(‘serverless-web-app-demo’)
# Define a handler function
def lambda_handler(event, context):
# Get the name and email from the event body
name = event[‘name’]
email address’= event[’email’]
# Put the item into the table
table.put_item(
Item={
‘name’: name,
’email address’: email
}
)
# Return a response with status code 200 and a message
return {
‘statusCode’: 200,
‘body’: json.dumps(‘Data saved successfully!’)
}
import json
import boto3
# Create a DynamoDB resource
dynamodb = boto3.resource(‘dynamodb’)
# Get the table object
table = dynamodb.Table(‘serverless-web-app-demo’)
# Define a handler function
def lambda_handler(event, context):
# Get the name and email from the event body
name = event[‘name’]
email address’= event[’email’]
# Put the item into the table
table.put_item(
Item={
‘name’: name,
’email address’: email
}
)
# Return a response with status code 200 and a message
return {
‘statusCode’: 200,
‘body’: json.dumps(‘Data saved successfully!’)
}
import json
import boto3
# Create a DynamoDB resource
dynamodb = boto3.resource(‘dynamodb’)
# Get the table object
table = dynamodb.Table(‘serverless-web-app-demo’)
# Define a handler function
def lambda_handler(event, context):
# Get the name and email from the event body
name = event[‘name’]
email address’= event[’email’]
# Put the item into the table
table.put_item(
Item={
‘name’: name,
’email address’: email
}
)
# Return a response with status code 200 and a message
return {
‘statusCode’: 200,
‘body’: json.dumps(‘Data saved successfully!’)
}
Now that you have successfully created your Lambda function, it’s time to test it.
Click on Test and choose Configure test events.
Enter a name for your test event. You can use any name that you like, such as test-event.
In the event template, delete the default JSON and copy and paste the following JSON:
{
“name”: “Vishaal”,
“email address”: “vishaal@example.com”
}
The final step in building a serverless web app on AWS is to create an API Gateway endpoint that invokes the Lambda function. API Gateway is a service that lets you create, manage, and secure APIs for your applications. You will have to use API Gateway to create a RESTful API that connects your web page to your Lambda function.
To create an API Gateway endpoint, follow these steps:
The last step to building a serverless web app on AWS is to modify the HTML page to send and receive data from the API Gateway. You will use JavaScript to make an AJAX request to your API Gateway endpoint and display the response on your web page.
To modify the HTML page, follow these steps:
After building a serverless web app on AWS, we can proceed with testing and deploying it. You can use your browser to access the web page to see how it works.
Now that you have tested the serverless web app and verified that it works as expected, you can proceed to deploy it.
There is no additional step required to deploy the serverless web app. You can directly share this URL with anyone who wants to use your web app.
In case if you want to use a custom domain name for your web app you will need to register a domain name with a domain registrar.
In case you change your mind and want to make any changes to it, here’s how you can do it.
Now that you can build a serverless web app on AWS on your own, you can scale it up easily. By using AWS Lambda, DynamoDB, and API Gateway you can build reliable, and cost-effective web applications without managing any servers.
Top 5 Frameworks and Tools to Build Progressive Web Apps
Progressive Web Apps have revolutionized the digital experience, offering users fast, engaging, and reliable apps directly through their browsers without the need for downloads. They combine the best of web and mobile applications, and building them requires robust front-end and back-end progressive web app frameworks and tools. Here’s a detailed guide to the top 5 […]
How to Build a Profitable Delivery Business Inspired by DoorDash Business Model
The DoorDash Business Model has revolutionized the way we think about on-demand delivery, becoming a household name in food delivery and beyond. From leveraging multiple revenue streams to creating a seamless experience for customers, restaurants, and delivery drivers, the DoorDash business model is a masterclass in operational excellence and consumer psychology. For aspiring entrepreneurs or […]
Top 10 Cloud Security Risks of 2024: Insights and Expert Solution
Did you know? By 2024, 94% of enterprises are projected to rely on cloud services, while the global cloud computing market will hit a staggering $1 trillion. With this monumental growth comes a parallel surge in threats. A recent report reveals that cyberattacks targeting cloud environments have increased by 27% year-on-year, with data breaches in […]
Are You Measuring E-Commerce Success the Right Way? Check These 7 Factors
Key Factors for Success in E-commerce – An Introduction Imagine setting up an e-commerce store, pouring your heart into every detail, and then wondering—how do you truly know it’s thriving? Success in the digital marketplace isn’t just about sales; it’s about creating a seamless experience that keeps your customers coming back. In today’s fast-paced digital […]
Best Cross Platform App Development Frameworks to Consider in 2024
The demand for cross-platform app development is skyrocketing in 2024, and it’s easy to see why. Instead of creating separate apps for iOS and Android, developers can now write code once and deploy it across multiple platforms with cross platform development frameworks. This not only saves time and money but also ensures a seamless user […]
5 Essential Steps to Build a Viral Casino Game
Casino games are more popular than ever, with millions of players logging in every day to try their luck on everything from slot machines to poker tables. But what does it take to create a successful casino game that not only entertains players but also stands out in a crowded market? In this guide, we’ll […]