Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/koxudaxi/lambdantic
Pydantic model and lambda event handler for AWS Lambda
https://github.com/koxudaxi/lambdantic
apigateway aws lambda pydantic python
Last synced: 19 days ago
JSON representation
Pydantic model and lambda event handler for AWS Lambda
- Host: GitHub
- URL: https://github.com/koxudaxi/lambdantic
- Owner: koxudaxi
- License: mit
- Created: 2019-09-08T13:35:27.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2020-04-20T16:29:21.000Z (over 4 years ago)
- Last Synced: 2024-10-26T06:16:44.716Z (20 days ago)
- Topics: apigateway, aws, lambda, pydantic, python
- Language: Python
- Homepage: https://koxudaxi.github.io/lambdantic
- Size: 370 KB
- Stars: 16
- Watchers: 4
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# lambdantic
[Pydantic](https://github.com/samuelcolvin/pydantic) model and lambda event handler for [AWS Lambda](https://aws.amazon.com/lambda/)[![Build Status](https://travis-ci.org/koxudaxi/lambdantic.svg?branch=master)](https://travis-ci.org/koxudaxi/lambdantic)
[![PyPI version](https://badge.fury.io/py/lambdantic.svg)](https://badge.fury.io/py/lambdantic)
[![codecov](https://codecov.io/gh/koxudaxi/lambdantic/branch/master/graph/badge.svg)](https://codecov.io/gh/koxudaxi/lambdantic)## This project is an experimental phase.
## What is Lambdantic ?
The name means [AWS Lambda](https://aws.amazon.com/lambda/) + [pydantic](https://github.com/samuelcolvin/pydantic)`lambdantic` dispatch handler function from aws lambda events and to assign attributes from event object.
## Installation
To install `lambdantic`:
```sh
$ pip install lambdantic
```## Example
### API Gateway
The example is simple api which is invoked by API Gateway.`lambdantic` parse [Lambda Proxy Integration](https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-lambda-proxy-integrations.html) request.
The example should be deployed by [Serverless](https://serverless.com/), [AWS CDK](https://github.com/aws/aws-cdk) or other framework which supports [Lambda Proxy Integration](https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-lambda-proxy-integrations.html).
```python
# handler.py
from typing import List, Optionalfrom pydantic import BaseModel, Schema
from lambdantic.apigateway import Handler
handler = Handler()
class Pet(BaseModel):
pet_id: Optional[int] = Schema(..., alias='id')
name: str
age: int# database
pets = [
Pet(id=1, name='dog', age=3),
Pet(id=2, name='cat', age=2)
]@handler.get('/pets')
def get_pets() -> List[Pet]:
return pets@handler.get('/pets/')
def get_pet(pet_id: int) -> Pet:
for pet in pets:
if pet.pet_id == pet_id:
return pet@handler.post('/pets', body_model=Pet, status_code=201)
def crate_pet(pet: Pet) -> Pet:
pet.pet_id = max(p.pet_id for p in pets)
pets.append(pet)return pet
```If you use Serverless then, the handler is defined like this example.
```yaml
functions:
pet:
handler: handler.handler
events:
- http:
method: any
path: /{proxy+}
```I show common parameters for Other framework
```
Handler: handler.handler
API Gateway API integration type : Lambda Proxy Integration
Path: /{proxy+}
method: ANY
```## Implemented
- API Gateway (WIP)## Not Implemented
- S3
- SNS
... and more## Development
Install the package in editable mode:
```sh
$ git clone [email protected]:koxudaxi/lambdantic.git
$ pip install -e lambdantic
```## PyPi
[https://pypi.org/project/lambdantic](https://pypi.org/project/lambdantic)
## Source Code
[https://github.com/koxudaxi/lambdantic](https://github.com/koxudaxi/lambdantic)
## Documentation
[https://koxudaxi.github.io/lambdantic](https://koxudaxi.github.io/lambdantic)
## License
lambdantic is released under the MIT License. http://www.opensource.org/licenses/mit-license