Skip to main content

Wrap a WSGI application in an AWS Lambda handler function for running on API Gateway or an ALB.

Project description

https://img.shields.io/travis/adamchainz/apig-wsgi/master.svg https://img.shields.io/pypi/v/apig-wsgi.svg

Wrap a WSGI application in an AWS Lambda handler function for running on API Gateway or an ALB.

A quick example:

from apig_wsgi import make_lambda_handler
from myapp.wsgi import app

# Configure this as your entry point in AWS Lambda
lambda_handler = make_lambda_handler(app)

Installation

Use pip:

pip install apig-wsgi

Python 3.4+ supported.

Usage

make_lambda_handler(app, binary_support=False)

app should be a WSGI app, for example from Django’s wsgi.py or Flask’s Flask() object.

If you want to support sending binary responses, set binary_support to True. ALB’s support binary responses by default, but on API Gateway you need to make sure you have '*/*' in the ‘binary media types’ configuration on your Rest API (whilst API Gateway supports a list of binary media types, using '*/*' is the best way to do it, since it is used to match the request ‘Accept’ header as well, which WSGI applications are likely to ignore).

Note that binary responses aren’t sent if your response has a ‘Content-Type’ starting ‘text/html’ or ‘application/json’ - this is to support sending larger text responses.

History

Pending Release

2.0.0 (2019-01-28)

  • Drop Python 2 support, only Python 3.4+ is supported now.

  • If exc_info is passed in, re-raise the exception (previously it would be ignored and crash in a different way). This isn’t the nicest experience, however the behaviour is copied from wsgiref's simple server, and most WSGI applications implement their own exception conversion to a “500 Internal Server Error” page already.

  • Noted that the EC2 ALB to Lambda integration is also supported as it uses the same event format as API Gateway.

1.2.0 (2018-05-14)

  • Work with base64 encoded body values in requests from API Gateway.

1.1.2 (2018-05-11)

  • Fix crash using binary support for responses missing a Content-Type header.

1.1.1 (2018-05-11)

  • Remove debug print()

1.1.0 (2018-05-10)

  • Add binary_support flag to enable sending binary responses, if enabled on API Gateway.

1.0.0 (2018-03-08)

  • First release on PyPI, working basic integration for WSGI apps on API Gateway.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

apig-wsgi-2.0.0.tar.gz (5.0 kB view details)

Uploaded Source

Built Distribution

apig_wsgi-2.0.0-py3-none-any.whl (4.6 kB view details)

Uploaded Python 3

File details

Details for the file apig-wsgi-2.0.0.tar.gz.

File metadata

  • Download URL: apig-wsgi-2.0.0.tar.gz
  • Upload date:
  • Size: 5.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Python-urllib/3.7

File hashes

Hashes for apig-wsgi-2.0.0.tar.gz
Algorithm Hash digest
SHA256 5cba4a0711fa4ea880bac7aaf3dc4eb51661099b6793499ffc1a78a0c07c094f
MD5 8db45b948fb94ea27c255383d7e0615d
BLAKE2b-256 74ad003d80dc205ef9e8aa0882f9aaaf9d03ed01e4d224fbd7a3d44fab77f7ee

See more details on using hashes here.

File details

Details for the file apig_wsgi-2.0.0-py3-none-any.whl.

File metadata

  • Download URL: apig_wsgi-2.0.0-py3-none-any.whl
  • Upload date:
  • Size: 4.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.6.3 requests-toolbelt/0.9.1 tqdm/4.30.0 CPython/2.7.15

File hashes

Hashes for apig_wsgi-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 de35dd3853529accd68ae6f699ad0b7372d6f8dd8706d56299619396ddc6ad17
MD5 f77a0f798538322a68dbfd2d3ca6765a
BLAKE2b-256 601835445cf405bc78f0706ce5df8cd056b31000c76082d46fad8841153cafb7

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page