Skip to main content

Pydantic model and lambda event handler for AWS Lambda

Project description

lambdantic

Pydantic model and lambda event handler for AWS Lambda

Build Status PyPI version codecov

This project is an experimental phase.

What is Lambdantic ?

The name means AWS Lambda + pydantic

lambdantic dispatch handler function from aws lambda events and to assign attributes from event object.

Installation

To install lambdantic:

$ pip install lambdantic

Example

API Gateway

The example is simple api which is invoked by API Gateway.

lambdantic parse Lambda Proxy Integration request.

The example should be deployed by Serverless, AWS CDK or other framework which supports Lambda Proxy Integration.

# handler.py
from typing import List, Optional

from 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/<pet_id>')
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.

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:

$ git clone git@github.com:koxudaxi/lambdantic.git
$ pip install -e lambdantic

PyPi

https://pypi.org/project/lambdantic

Source Code

https://github.com/koxudaxi/lambdantic

Documentation

https://koxudaxi.github.io/lambdantic

License

lambdantic is released under the MIT License. http://www.opensource.org/licenses/mit-license

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lambdantic-0.0.4.tar.gz (13.9 kB view details)

Uploaded Source

Built Distribution

lambdantic-0.0.4-py3-none-any.whl (14.9 kB view details)

Uploaded Python 3

File details

Details for the file lambdantic-0.0.4.tar.gz.

File metadata

  • Download URL: lambdantic-0.0.4.tar.gz
  • Upload date:
  • Size: 13.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.7.1

File hashes

Hashes for lambdantic-0.0.4.tar.gz
Algorithm Hash digest
SHA256 946eb84c5a59ee9b205b113fdb86ab5c40c3243fe05f9797c7cc522a1f3ca8e9
MD5 160ab65300ec4191027810743c44a356
BLAKE2b-256 3d30fcf2ddb279161dfaf5ac5d826b9d3715b7e7d00515524d32746c0497a7b9

See more details on using hashes here.

File details

Details for the file lambdantic-0.0.4-py3-none-any.whl.

File metadata

  • Download URL: lambdantic-0.0.4-py3-none-any.whl
  • Upload date:
  • Size: 14.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.7.1

File hashes

Hashes for lambdantic-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 4af72330966ac95083b6a896f2f6a69fd3c3c44fc0b7863f681d4cc5ec497990
MD5 4816f0613213f37cac2d30fdeebb627d
BLAKE2b-256 a22e65cc27c1842a56cd74704c7e4e1043696d867557418a95b62d45c8648f76

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page