The Core Components of the Pattern
1. Amazon API Gateway: The Front Door
API Gateway is a fully managed service that makes it easy for developers to create, publish, maintain, monitor, and secure APIs at any scale. In this pattern, its primary role is to define your HTTP endpoints and connect them to backend services—in this case, AWS Lambda.
Key responsibilities of API Gateway include:
- Endpoint Creation: Defining your API's resources (e.g.,
/users
,/products
) and methods (e.g.,GET
,POST
,DELETE
). - Request Handling: Managing traffic, authorization, throttling, and request/response transformations.
- Invocation: Triggering the appropriate backend Lambda function for a given request.
2. AWS Lambda: The Business Logic
AWS Lambda is the serverless compute service that runs your backend code in response to triggers. When integrated with API Gateway, a Lambda function is responsible for processing the API request and returning a response. This is where you write the core logic of your application.
Choosing Your API Type: HTTP API vs. REST API
API Gateway offers two primary types of APIs for this pattern. Choosing the right one is a critical first step.
Feature | HTTP API (Recommended for most use cases) | REST API |
---|---|---|
Performance | Lower latency and higher performance. | Standard performance. |
Cost | Significantly cheaper (often up to 70% less). | Standard pricing. |
Core Features | Built-in support for OIDC, OAuth 2.0, and IAM auth. CORS configuration is simplified. | All features of HTTP APIs. |
Advanced Features | N/A | Supports API Keys, Usage Plans, request validation, and can integrate with a wider array of AWS services directly. |
Best For | Building RESTful APIs, web applications, and mobile backends where you don't need the advanced features of REST APIs. | APIs that require fine-grained access control per client (Usage Plans), request/response transformation, or integration with services other than Lambda. |
Recommendation: Start with an HTTP API. It's cheaper, faster, and simpler to configure for the majority of modern API workloads.
The Lambda Proxy Integration: A Seamless Connection
The standard and most efficient way to connect API Gateway to Lambda is through Lambda proxy integration.
- How it Works: With proxy integration, API Gateway passes the entire raw HTTP request—including headers, query string parameters, path parameters, and the request body—to your Lambda function as a single JSON
event
object. - Your Responsibility: Your Lambda function's job is to parse this
event
object, execute your business logic, and return a response object with a specific JSON structure that API Gateway can understand and transform back into an HTTP response.
Lambda Function Handler Example (Python):
import json
def handler(event, context):
# The 'event' object contains the entire HTTP request
print(json.dumps(event))
# Business logic goes here...
# For example, get the request body:
# body = json.loads(event.get('body', '{}'))
# The function MUST return a dictionary with statusCode, body, and headers
return {
'statusCode': 200,
'headers': {
'Content-Type': 'application/json'
},
'body': json.dumps({
'message': 'Hello from Lambda!'
})
}