AWS Lambda & API Gateway support for ASGI
Project description
Mangum
Mangum is an adapter for using ASGI applications with AWS Lambda & API Gateway.
Documentation: https://erm.github.io/mangum
Requirements
Python 3.6+
Installation
pip install mangum
Usage
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.
-
text_mime_types
: list (default=None)The list of MIME types (in addition to the defaults) that should not return binary responses in API Gateway.
Binary support
Binary response support is available depending on the Content-Type
and Content-Encoding
headers. The default text mime types are the following:
application/json
application/javascript
application/xml
application/vnd.api+json
All Content-Type
headers starting with text/
are included by default.
If the Content-Encoding
header is set to gzip
, then a binary response will be returned regardless of mime type.
Binary response bodies will be base64 encoded and isBase64Encoded
will be True
.
Event and context
The AWS Lambda handler has event
and context
parameters. These are available in the ASGI scope
object:
scope['aws.event']
scope['aws.context']
Example
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
WebSockets (experimental)
The adapter currently provides some basic WebSocket support using boto3
with DynamoDB. To install Mangum with the optional dependency:
pip install mangum[full]
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.