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.

Files for lambdantic, version 0.0.4
Filename, size File type Python version Upload date Hashes
Filename, size lambdantic-0.0.4-py3-none-any.whl (14.9 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size lambdantic-0.0.4.tar.gz (13.9 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page