Mangum is an adapter for using ASGI applications with AWS Lambda & API Gateway. It is intended to provide an easy-to-use, configurable wrapper for any ASGI application deployed in an AWS Lambda function to handle API Gateway requests and responses.
Documentation: https://mangum.io/
Multiple storage backend interfaces for managing WebSocket connections.
Compatibility with ASGI application frameworks, such as Starlette, FastAPI, and Quart.
Support for binary media types and payload compression in API Gateway using GZip or Brotli.
Works with existing deployment and configuration tools, including Serverless Framework and AWS SAM.
Startup and shutdown lifespan events.
Python 3.6+
pip install mangum
from mangum import Mangum
async def app(scope, receive, send):
await send(
{
"type": "http.response.start",
"status": 200,
"headers": [[b"content-type", b"text/plain; charset=utf-8"]],
}
)
await send({"type": "http.response.body", "body": b"Hello, world!"})
handler = Mangum(app)
Or using a framework.
from fastapi import FastAPI
from mangum import Mangum
app = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):
return {"item_id": item_id, "q": q}
handler = Mangum(app)