Skip to main content

AWS Lambda 上的 Flask 的 Swagger UI 蓝图

项目描述

aws-flask-swagger-ui

测试状态 发布状态

用于将Swagger UI添加到您的烧瓶应用程序的简单 Flask 蓝图。包括一个用于AWS API Gateway/Lambda 代理集成的 WSGI 适配器,以允许您将 WSGI 兼容的中间件和框架(如 Flask 和 Django)与 AWS API Gateway/Lambda 代理集成一起用于您的 Swagger 文档。

包含的 Swagger UI 版本:请参见此处

安装

pip install aws-flask-swagger-ui

用法

下面显示了简单的使用示例,以获取更多选项检查文件扩展示例

from flask import Flask
from aws_flask_swagger_ui import get_swaggerui_blueprint, flask_ui_response

app = Flask(__name__)

swaggerui_blueprint = get_swaggerui_blueprint(
    "/api-doc",
    aws_gw_config={
        "exportType": "oas30",
        "parameters": {
            "extensions": "integrations",
            "extensions": "apigateway",
            "extensions": "authorizers",
        },
    },
)

app.register_blueprint(swaggerui_blueprint)


def lambda_handler(event, context):
    return flask_ui_response(app, event, context, base64_content_types={"image/png"})

AWS 网关配置

http://mysite.com = https://restApiId.execute-api.region.amazonaws.com/stage/

为了使上述示例正常工作,Lambda 函数必须作为代理连接到端点http://mysite.com/api-doc/

{proxy+}使用具有方法的资源配置您的 API 网关ANY。您的“方法响应”可能应该包括application/json使用该Empty模型的“200 响应主体”。

由于 API Gateway 与 {proxy+} 定义的根文件夹不匹配,因此您的默认 URL 应包含 index.html。建议在您的路径上创建一个模拟集成/api-doc以返回 301。(例如:/api-doc => 301=> /api-doc/index.html)可以在本文中找到基于 Terraform 实现此目的的源代码。

Lambda 测试事件

Lambda 函数必须具有导出 API 定义的权限!

如果您希望将 Lambda 中的“测试”功能用于您的函数,您将需要一个“API Gateway AWS 代理”事件。检查事件文件夹中的事件JSON 对象。

要更新您的测试事件,请单击“操作”->“配置测试事件”。

在事件中,您需要使用您的 AWS 账户的值更新"apiId"和。"stage"

使用密码保护文档

如果您创建一个环境变量,如 SWAGGER_PASSWORD=abc

然后您需要在 URL 中传递一个查询参数,例如http://mysite.com/api-doc/?pass=abc

如果您没有环境变量,则端点不受密码保护,您可以按照正常http://mysite.com/api-doc/访问它

配置

蓝图支持重载所有可以 JSON 序列化的 Swagger UI 配置选项。有关选项,请参阅swagger-ui 配置

目前不支持插件和函数参数。

OAuth2 参数可以在swagger-ui oauth2中找到。

执照

这个库是根据Apache 2.0 License 授权的。

测试

  • 克隆 repo 并运行 pytest
git clone https://github.com/tb102122/aws_flask_swagger_ui.git
python -m venv virtualenv
virtualenv/bin/activate
pip install --upgrade pip, setuptools, wheel
pip install flake8 pytest boto3 pytest-cov
pip install .
flake8 .
pytest

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

aws-flask-swagger-ui-1.0.4.tar.gz (2.6 MB 查看哈希

已上传 source

内置分布

aws_flask_swagger_ui-1.0.4-py3-none-any.whl (2.6 MB 图哈希)

已上传 py3