Skip to main content

A nano-framework for deploying Python functions as APIs on AWS Lambda using Function URLs.

Project description

Vaul

Vaul is a nano-framework for deploying Python functions as APIs on AWS Lambda using Function URLs. It provides seamless integration with OpenAPI Schema and allows for monitoring and managing microservices with ease.

Table of Contents

Introduction

Vaul is designed to help developers quickly deploy Python functions as serverless APIs on AWS Lambda. With a focus on simplicity and efficiency, Vaul leverages AWS Lambda's Function URLs to provide scalable and cost-effective API endpoints.

Features

  • Nano-framework: Lightweight and easy to use.
  • OpenAPI Integration: Automatically generate OpenAPI schema for your APIs.
  • AWS Lambda Support: Seamlessly deploy functions to AWS Lambda using Function URLs.
  • Request Validation: Built-in request validation using Pydantic.
  • CORS Support: Pre-configured Cross-Origin Resource Sharing (CORS) support.
  • Custom Actions: Define and manage custom actions with ease.

Installation

To install Vaul, you can use pip:

pip install vaul

Usage

Defining Actions

Vaul allows you to define actions (API endpoints) using simple decorators. Here is an example of how to define a GET and POST endpoint:

from vaul import Vaul

app = Vaul()

@app.action(path='/hello', method="GET")
def hello(name: str) -> str:
    return f"Hello, {name}!"

@app.action(path='/echo', method="POST")
def echo(data: dict) -> dict:
    return data

def handler(event, context):
    return app.handler(event)

Deploying to AWS Lambda

To deploy your Vaul application to AWS Lambda, use the AWS CLI or AWS Management Console. Ensure that your Lambda function's handler is set to the appropriate entry point (e.g., handler).

Using OpenAPI Schema

Vaul automatically generates an OpenAPI schema for your API based on the defined actions. You can access the schema by visiting the /openapi endpoint.

curl -X GET https://your-function-url/openapi.json

Accessing Request Data

You can access the request data (e.g., query parameters, headers, body) using the get_request function:

from vaul import Vaul, get_request

app = Vaul()

@app.action(path='/hello', method="GET")
def hello() -> str:
    request = get_request()
    user_agent = request.headers.get('User-Agent')
    return f"Hello, {user_agent}!"
    
def handler(event, context):
    return app.handler(event)

Handling Requests

Vaul's middleware automatically handles incoming requests, validates them, and routes them to the appropriate action based on the request path and method.

Contributing

We welcome contributions from the community! If you would like to contribute to Vaul, please follow these steps:

  1. Fork the repository.
  2. Create a new branch for your feature or bug fix.
  3. Make your changes and commit them to your branch.
  4. Push your changes to your fork.
  5. Create a pull request to the main repository.
  6. We will review your changes and merge them if they meet our guidelines.
  7. Thank you for contributing to Vaul!

License

Vaul is licensed under the GNU General Public License v3.0. See the LICENSE file for more information.

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

oveya-0.1.28.tar.gz (22.4 kB view details)

Uploaded Source

Built Distribution

oveya-0.1.28-py3-none-any.whl (22.7 kB view details)

Uploaded Python 3

File details

Details for the file oveya-0.1.28.tar.gz.

File metadata

  • Download URL: oveya-0.1.28.tar.gz
  • Upload date:
  • Size: 22.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.11.3

File hashes

Hashes for oveya-0.1.28.tar.gz
Algorithm Hash digest
SHA256 4ee3e1692c9b73ba5293f7b362e8db20c215e1dd354e8a7df5dc7c7d4afdcd2c
MD5 66bd281a2f24bbebce5e57c0f7d0d085
BLAKE2b-256 0de1944f723bff37545fc161f1ad9cd1088049a7d7c90fe5f8beaf020feb30c0

See more details on using hashes here.

Provenance

File details

Details for the file oveya-0.1.28-py3-none-any.whl.

File metadata

  • Download URL: oveya-0.1.28-py3-none-any.whl
  • Upload date:
  • Size: 22.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.11.3

File hashes

Hashes for oveya-0.1.28-py3-none-any.whl
Algorithm Hash digest
SHA256 120434367ea6a014dc8487d75f805c30f36e546519d44ff65ec998519cc92ec6
MD5 c4a2dbb7f68c59df4e8e4434c2b3d44b
BLAKE2b-256 1c988ea2932f945edda4f71548fbfb84090728ad36460703d2f716850a15627c

See more details on using hashes here.

Provenance

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