Metadata-Version: 2.1
Name: apig-wsgi
Version: 2.5.1
Summary: Wrap a WSGI application in an AWS Lambda handler function for running on API Gateway or an ALB.
Home-page: https://github.com/adamchainz/apig-wsgi
Author: Adam Johnson
Author-email: me@adamj.eu
License: ISC License
Project-URL: Changelog, https://github.com/adamchainz/apig-wsgi/blob/master/HISTORY.rst
Description: =========
        apig-wsgi
        =========
        
        .. image:: https://img.shields.io/travis/adamchainz/apig-wsgi/master.svg
                :target: https://travis-ci.org/adamchainz/apig-wsgi
        
        .. image:: https://img.shields.io/pypi/v/apig-wsgi.svg
                :target: https://pypi.python.org/pypi/apig-wsgi
        
        .. image:: https://img.shields.io/badge/code%20style-black-000000.svg
            :target: https://github.com/python/black
        
        Wrap a WSGI application in an AWS Lambda handler function for running on
        API Gateway or an ALB.
        
        A quick example:
        
        .. code-block:: python
        
            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**:
        
        .. code-block:: sh
        
            python -m pip install apig-wsgi
        
        Python 3.5 to 3.8 supported.
        
        Usage
        =====
        
        ``make_lambda_handler(app, binary_support=False, non_binary_content_type_prefixes=None)``
        -----------------------------------------------------------------------------------------
        
        ``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/', 'application/json' or 'application/vnd.api+json' - this
        is to support sending larger text responses. To support other content types
        than the ones specified above, you can set `non_binary_content_type_prefixes`
        to a list of content type prefixes of your choice.
        
        If the event from API Gateway contains the ``requestContext`` key, for example
        from custom request authorizers, this will be available in the WSGI environ
        at the key ``apig_wsgi.request_context``.
        
        If you want to inspect the full event from API Gateway, it's available in the
        WSGI environ at the key ``apig_wsgi.full_event``.
        
        Multiple values for headers and qurey parameters are supported. They are
        enabled automatically on API Gateway but need
        `explict activation on ALB's <https://docs.aws.amazon.com/elasticloadbalancing/latest/application/lambda-functions.html#multi-value-headers>`__.
        
        Example
        =======
        
        An example application with Ansible deployment is provided in the ``example/``
        directory in the repository. See the ``README.rst`` there for guidance.
        
        History
        =======
        
        2.5.1 (2020-02-26)
        ------------------
        
        * Restore setting ``HTTP_CONTENT_TYPE`` and ``HTTP_HOST`` in the environ,
          accidentally broken in 2.5.0 with multi-value header feature
          (`Issue #117 <https://github.com/adamchainz/apig-wsgi/issues/117>`__).
        
        2.5.0 (2020-02-17)
        ------------------
        
        * Support multi-value headers and query parameters as API Gateway added
          (`Issue #103 <https://github.com/adamchainz/apig-wsgi/issues/103>`__).
        * Pass full event as a WSGI environ variable
          (`PR #111 <https://github.com/adamchainz/apig-wsgi/issues/111>`__).
        
        2.4.1 (2020-01-13)
        ------------------
        
        * Fix URL parameter encoding - URL escaping like `%3A` will now be passed
          correctly to your application
          (`Issue #101 <https://github.com/adamchainz/apig-wsgi/issues/101>`__).
          Whilst this is a bugfix release, it may break any workarounds you have in
          your application - please check when upgrading.
        
        2.4.0 (2019-11-15)
        ------------------
        
        * Converted setuptools metadata to configuration file. This meant removing the
          ``__version__`` attribute from the package. If you want to inspect the
          installed version, use
          ``importlib.metadata.version("apig-wsgi")``
          (`docs <https://docs.python.org/3.8/library/importlib.metadata.html#distribution-versions>`__ /
          `backport <https://pypi.org/project/importlib-metadata/>`__).
        * Support Python 3.8.
        * Add `application/vnd.api+json` to default non-binary content type prefixes.
        * Add support for custom non-binary content type prefixes. This lets you control
          which content types should be treated as plain text when binary support is enabled.
        
        2.3.0 (2019-08-19)
        ------------------
        
        * Update Python support to 3.5-3.7, as 3.4 has reached its end of life.
        * Return binary content for gzipped responses with text or JSON content types.
        
        2.2.0 (2019-04-15)
        ------------------
        
        * If API Gateway event includes ``requestContext``, for example for custom
          authorizers, pass it in the WSGI ``environ`` as
          ``apig_wsgi.request_context``.
        
        2.1.1 (2019-03-31)
        ------------------
        
        * Revert adding ``statusDescription`` because it turns out API Gateway doesn't
          ignore it but instead fails the response with an internal server error.
        
        2.1.0 (2019-03-31)
        ------------------
        
        * Change ``statusCode`` returned to API Gateway / ALB to an integer. It seems
          API Gateway always supported both strings and integers, whilst ALB only
          supports integers.
        * Add ``statusDescription`` in return value. API Gateway doesn't seem to use
          this whilst the `ALB documentation <https://docs.aws.amazon.com/elasticloadbalancing/latest/application/lambda-functions.html>`_
          mentions it as supported.
        
        2.0.2 (2019-02-07)
        ------------------
        
        * Drop Python 2 support, only Python 3.4+ is supported now.
        
        2.0.1 (2019-02-07)
        ------------------
        
        * Temporarily restore Python 2 support. This is in order to fix a packaging
          metadata issue that 2.0.0 was marked as supporting Python 2, so a new release
          is needed with a higher version number for ``python -m pip install apig-wsgi`` to
          resolve properly on Python 2. Version 2.0.2+ of ``apig-wsgi`` will not
          support Python 2.
        
        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.
        
Keywords: AWS,Lambda,API Gateway,APIG
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: ISC License (ISCL)
Classifier: Natural Language :: English
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Requires-Python: >=3.5
Description-Content-Type: text/x-rst
