用于生成aws lambda处理程序的有用装饰器的集合
lambda-handlers的Python项目详细描述
lambda处理程序
一个有助于指定aws lambda处理程序的固执己见的python包。
它包括输入验证、错误处理和响应格式化。
内容
开始
使用以下命令安装lambda-handlers
:
pip install lambda-handlers
如果要使用验证,应该在 Marshmallow或 jsonschema。
要使用其中一个安装:
pip install 'lambda-handlers[marshmallow]'
或
pip install 'lambda-handlers[jsonschema]'
快速启动
默认情况下,http_handler
decorator确保解析请求体
作为json,还将响应格式化为json,格式为:
- 一个足够的状态码,
- CORS标题,和
- 处理程序返回正文中的值。
fromlambda_handlerimporthttp_handler@http_handler()defhandler(event,context):returnevent['body']
示例
跳过默认的cors头并配置它。
fromlambda_handlerimporthttp_handlerfromlambda_handlers.responseimportcors@http_handler(cors=cors(origin='localhost',credentials=False),)defhandler(event,context):returnevent['body']
使用jsonschema验证用户模型的输入。
fromtypingimportDict,Anyfromlambda_handlerimportvalidators,http_handleruser_schema:Dict[str,Any]={'type':'object','properties':{'user_id':{'type':'number'},},}@http_handler(validator=validators.jsonschema(body=user_schema),)defhandler(event,context):user=event['body']returnuser
使用棉花糖验证输入和中的用户模型 响应体。
fromlambda_handlerimportvalidators,http_handlerfrommarshmallowimportSchema,fieldsclassUserSchema(Schema):user_id=fields.Integer(required=True)classResponseSchema(Schema):body=fields.Nested(UserSchema,required=True)headers=fields.Dict(required=True)statusCode=fields.Integer(required=True)@http_handler(validator=validators.marshmallow(body=UserSchema(),response=ResponseSchema(),),)defhandler(event,context):user=event['body']returnuser
使用源代码
此项目使用pipenv来管理其依赖项 以及python环境。您可以通过以下方式安装:
pip install --user pipenv
我们建议对每个单独的项目使用python虚拟环境。 为此,我们建议使用pyenv。
安装
对于生产,克隆此存储库后, 您可以使用以下命令安装此项目及其依赖项:
cd <clone_dest>
make install
发展
对于开发,您还应该安装开发依赖项, 所以请改为运行:
cd <clone_dest>
make install-dev
这将以开发模式安装所有依赖项和此项目。
测试
我们使用tox来运行代码检查程序。
您可以通过在项目的顶层运行tox
来运行测试。