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:
- Fork the repository.
- Create a new branch for your feature or bug fix.
- Make your changes and commit them to your branch.
- Push your changes to your fork.
- Create a pull request to the main repository.
- We will review your changes and merge them if they meet our guidelines.
- 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file oveya-0.1.281.tar.gz
.
File metadata
- Download URL: oveya-0.1.281.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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 30bc133f2674329e0af8e4d5e6b7ccd87cafdee77402f96e72765a82cb22313b |
|
MD5 | 9f6a192edced88aaa23648b8b527572e |
|
BLAKE2b-256 | 368b8136f3a9318b74b93e524aa61f773644898cc16e6b973a84d2f4275e3ec1 |
File details
Details for the file oveya-0.1.281-py3-none-any.whl
.
File metadata
- Download URL: oveya-0.1.281-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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 178052e1e8ca4def514e82bb921e728b6aac2ba49e71a515e30560b07aa9321d |
|
MD5 | 5f350516f63a731163aed03278aeab57 |
|
BLAKE2b-256 | b5d92fe9ae04021f7ab85d9fddbff55152636249aef2cb8c644813d903880ff2 |