将WSGI应用程序封装在AWS Lambda处理函数中,以便在API网关或ALB上运行。
项目描述
将WSGI应用程序封装在AWS Lambda处理函数中,以便在API网关或ALB上运行。
快速示例
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)
安装
使用 pip
python -m pip install apig-wsgi
支持Python 3.8至3.12。
在Django项目中工作? 通过我的书之一提高您的技能。
用法
在您的AWS Lambda函数中使用apig-wsgi,该函数连接到以下之一
支持“格式版本1”和“格式版本2”(文档)。apig-wsgi将自动检测正在使用的版本。截至编写时,“格式版本2”用于Lambda函数URL和API网关HTTP API。
make_lambda_handler(app, binary_support=None, non_binary_content_type_prefixes=None)
app 应该是一个 WSGI 应用,例如来自 Django 的 wsgi.py 或 Flask 的 Flask() 对象。
binary_support 配置是否支持包含二进制内容的响应。默认值 None 表示自动从事件的格式版本检测此功能 - 在格式版本 2 上默认为 True,在格式版本 1 上为 False。根据您如何部署 Lambda 函数,您可能需要在启用二进制响应之前进行额外的配置。
ALB 默认支持二进制响应。
API Gateway HTTP API 默认支持二进制响应(并默认为事件格式版本 2)。
API Gateway REST API(“旧”风格)需要您在“二进制媒体类型”配置中添加 '*/*'。您需要通过 API Gateway、CloudFormation、SAM 或您项目使用的任何工具进行配置。虽然它支持一系列二进制媒体类型,但使用 '*/*' 是配置它的最佳方式,因为它还用于匹配请求的“Accept”标题,而 WSGI 应用通常忽略它。您可能需要删除并重新创建您的阶段,以便将此值复制过来。
请注意,如果您的响应具有以“text/”、“application/json”或“application/vnd.api+json”开头的“Content-Type”,则不会发送二进制响应 - 这是为了支持发送较大的文本响应,因为否则 base64 编码会膨胀内容长度。为了避免对其他内容类型进行 base64 编码,您可以将 non_binary_content_type_prefixes 设置为包含您选择的内容类型前缀的列表或元组(这将替换默认列表)。
如果来自 API Gateway 的事件包含 requestContext 键,例如在格式版本 2 或来自自定义请求授权时,它将在 WSGI 环境中以 apig_wsgi.request_context 键提供。
如果您想检查 API Gateway 的完整事件,它可以在 WSGI 环境中以 apig_wsgi.full_event 键提供。
如果您需要 Lambda Context 对象,它可以在 WSGI 环境中以 apig_wsgi.context 键提供。
如果您正在使用“格式版本 1”,则支持请求和响应头以及查询参数的多个值。它们在 API Gateway 上自动启用,但在 ALB 上需要 显式激活。如果您需要从您的应用程序中确定是否启用了多个头值,您可以在 WSGI 环境中检查 apgi_wsgi.multi_value_headers 键,如果启用了则为 True,否则为 False。
示例
在存储库的 example/ 目录中提供了一个具有 Ansible 部署的 Django 项目示例。有关指南,请参阅那里的 README.rst。
项目详情
下载文件
下载您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源代码发行版
编译发行版
apig_wsgi-2.18.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7e46eb15b32f644caeb8065ad494beae4f3114dc10009384db9191f2b16eceec |
|
MD5 | a30482aeb3e1a98a966dac4e820ffe5d |
|
BLAKE2b-256 | 7d9c76a3300e25efe32d07331274cab1c504771202026d0c852614383cd46bd7 |
apig_wsgi-2.18.0-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 9132330bd1b1e9d1365cc1873e36b508930db65c5ed4d35f6234d332a6453fb9 |
|
MD5 | ede50fafbfa51fd6f0a0ca5bc9bee1ba |
|
BLAKE2b-256 | 9883bea5c3b091481db0443da76dc32dac52aaa4d6d2b59fa52b6635f810bb32 |