Mangum is an adapter for using ASGI applications with AWS Lambda & API Gateway.
Documentation: https://erm.github.io/mangum
Python 3.6+
pip3 install mangum
The adapter class Mangum
accepts the following optional arguments:
-
enable_lifespan
: bool (default=True)Specify whether or not to enable lifespan support.
-
api_gateway_base_path
: str (default=None)Base path to strip from URL when using a custom domain name.
The AWS Lambda handler has event
and context
parameters. These are available in the ASGI scope
object:
scope['aws.event']
scope['aws.context']
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, enable_lifespan=False) # disable lifespan for raw ASGI example
The adapter currently provides some basic WebSocket support using boto3
with DynamoDB. To install Mangum with the optional dependency:
pip3 install mangum[full]