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.
Time for a Tech Upgrade? Exploring the Benefits of Insurance Agent Portal Software in 2024
Stuck in the Insurance Stone Age? Discover the Power of Portal Software in 2024 Remember those rolodexes and fax machines? Yeah, the insurance industry can feel a bit like that sometimes. But what if you could ditch the outdated tools and access a war room of information – all online and at your fingertips? Here’s […]
Stop Wasting Time & Generate More Leads: Proven Real Estate Lead Generation Strategies for Massive Growth
Forget “For Sale” signs outside houses and endless cold calls. The future of real estate lead generation is undeniably digital. In today’s world, potential buyers begin their home search online, making a wide web presence crucial for any agent looking to maximize property sales. In this blog post, we will explore how these innovative tools […]
Stop Wasting Money! Here Is How Web Apps Can Revolutionize Your Inventory Management
An Introduction To Cost Reduction In Inventory Management Do you ever feel like you’re constantly playing inventory whack-a-mole? Stockouts costing you sales? Or maybe you’re drowning in a sea of unused products eating away at your profits? Inefficient inventory management can be a major drain on your business resources. But what if there was a […]
Web App vs Mobile App: Which One Should Your Business Choose?
What If I Told You That A Website Is Already An App? There is a saying “If you can’t convince them, confuse them”! This is exactly what Web Apps and Mobile Apps do with us. So if “Web App vs Mobile App: Which one should I choose” is your question, then this blog has all […]
Forget Native Apps, Enter React PWAs: A Deep Dive for Business Owners
PWAs are no longer a futuristic fantasy; they’re a present-day reality, transforming how businesses connect with their audience. Stats back this up as several reports suggest increased conversions and user engagement with PWAs over traditional websites. And let’s not forget the search engine love – PWAs get indexed and appear in app store listings, expanding […]
Top 10 Web Application Security Attacks To Look Out For In 2024 & How To Prevent Them
WE HAVE DETECTED AN UNSAFE LINK!!!! Ever felt that gut-wrenching ‘ohhh noo’ moment when you realize your website is under attack? In 2024, the web is a wild west of cyber threats, and your website might be the next frontier. Picture this: Everything you’ve built vanished in the blink of a malicious code. But fear […]