AWS Builder Center

Build Your First Serverless Application with AWS Lambda and Amazon API Gateway

Learn how to build a simple serverless REST API on AWS using AWS Lambda and Amazon API Gateway. This beginner-friendly guide covers the architecture, implementation steps, testing, and best practices for building scalable cloud applications.

Introduction

Serverless computing allows developers to build and run applications without managing servers. Instead of provisioning and maintaining infrastructure, you can focus on writing code while AWS handles much of the underlying infrastructure management.
In this tutorial, we'll explore how to build a simple REST API using AWS Lambda and Amazon API Gateway. This is a useful starting point for developers learning cloud computing, backend development, and serverless architecture.

What You'll Learn

By the end of this tutorial, you'll understand how to:
  • Create an AWS Lambda function.
  • Expose the function through Amazon API Gateway.
  • Build a simple HTTP endpoint.
  • Test your API using a browser or an HTTP client.
  • Apply basic security and cost-management practices.

Understanding the Architecture

Our application uses two core AWS services.
AWS Lambda runs your application code in response to events without requiring you to manage servers.
Amazon API Gateway provides an HTTP endpoint that accepts client requests and invokes your Lambda function.
The request flow looks like this:
  1. A client sends an HTTP request.
  2. API Gateway receives the request.
  3. API Gateway invokes the Lambda function.
  4. Lambda executes the code and returns a response.
  5. API Gateway sends the response back to the client.
This architecture separates the API endpoint from the application logic and can scale automatically as request volume changes.

Step 1: Create an AWS Lambda Function

Sign in to the AWS Management Console and open the AWS Lambda service.
  1. Select Create function.
  2. Choose Author from scratch.
  3. Enter a function name, such as hello-serverless-api.
  4. Select a supported Python runtime.
  5. Choose or create an execution role with the permissions required for your function.
  6. Create the function.
For this example, we'll use Python to return a simple JSON response.
Replace the function code with:
1
2
3
4
5
6
7
8
9
10
11
12
13
import json

def lambda_handler(event, context):
return {
"statusCode": 200,
"headers": {
"Content-Type": "application/json"
},
"body": json.dumps({
"message": "Hello from AWS Lambda!",
"status": "success"
})
}
Deploy the function and use the Lambda console's test feature to verify that it returns the expected response.

Step 2: Create an API Gateway Endpoint

Next, open Amazon API Gateway.
  1. Choose to create an HTTP API.
  2. Add an integration with your Lambda function.
  3. Select the hello-serverless-api function.
  4. Configure a route, such as GET /hello.
  5. Create a stage and deploy the API.
API Gateway will provide an invoke URL. The exact URL depends on your API configuration.
Your endpoint will look similar to:
1
https://your-api-id.execute-api.your-region.amazonaws.com/hello
Replace the example values with the actual URL provided by AWS.

Step 3: Test Your API

Copy the API invoke URL and append /hello if your stage configuration requires it.
You can test the endpoint using curl:
1
curl https://your-api-id.execute-api.your-region.amazonaws.com/hello
A successful request should return a JSON response similar to:
1
2
3
4
{
"message": "Hello from AWS Lambda!",
"status": "success"
}
If you receive an error, check the API route, stage configuration, Lambda integration, execution permissions, and CloudWatch logs.

Step 4: Understand Security and Monitoring

A working endpoint is only the beginning. Before using the API in a production application, consider the following practices.

Secure Your API

Configure appropriate authentication and authorization for your use case. Depending on your requirements, options may include IAM authorization, JWT authorizers, or other supported authentication mechanisms.
Avoid exposing sensitive information in responses or logs, and follow the principle of least privilege when assigning permissions.

Monitor Application Behavior

Use Amazon CloudWatch to review Lambda logs, invocation counts, errors, and execution duration. Monitoring helps you identify failures and understand how your application behaves under load.

Manage Costs

AWS Lambda and API Gateway use usage-based pricing models, subject to their respective pricing rules and any applicable free-tier allowances. Review current AWS pricing before deploying workloads with significant traffic.
Set up billing alerts and remove unused resources when you finish experimenting.

Best Practices for Serverless Applications

As your application grows, keep these principles in mind:
  • Keep functions focused: Design functions around clear responsibilities.
  • Handle errors gracefully: Return appropriate HTTP status codes and meaningful error messages.
  • Protect sensitive data: Never hardcode credentials or secrets in source code.
  • Monitor continuously: Use logs and metrics to diagnose problems.
  • Design for retries: Make operations idempotent when duplicate event delivery could cause issues.
  • Test before deployment: Validate normal requests, invalid inputs, and failure scenarios.

Conclusion

AWS Lambda and Amazon API Gateway provide a straightforward way to build HTTP APIs without managing traditional application servers. By combining managed infrastructure with focused application code, developers can create services that are easier to deploy and scale.
This example is a foundation for more advanced serverless projects, including APIs connected to Amazon DynamoDB, event-driven applications, and backend services for web and mobile applications.
Start small, experiment with the AWS console, and gradually introduce authentication, automated deployment, monitoring, and persistence as your requirements evolve.
Have you built a serverless application on AWS? Share your experience and lessons learned with the AWS Builder community.
Any opinions in this article are those of the individual author and may not reflect the opinions of AWS.
Enjoyed reading this content? Let the author know!

Your likes, comments, shares, and saves help creators reach more builders.

Loading recommendations

Loading article