Awesome
Serverless API Framework
Serverless API Framework is a tool that lets you write and deploy serverless functions in Python. It bridges your code with the deployment configuration to make it a breeze to work with serverless functions.
Starts by defining a simple Python function:
from scw_serverless import Serverless
app = Serverless("hello-namespace")
@app.func(memory_limit=256)
def hello_world(event, context):
return "Hello World!"
Deploy it with scw-serverless
:
scw-serverless deploy app.py
Quickstart
Install
pip install scw-serverless
This will install the scw-serverless
CLI:
scw-serverless --help
Writing and configuring functions
You can transform your Python functions into serverless functions by using decorators:
import os
import requests
from scw_serverless import Serverless
app = Serverless("hello-namespace")
API_URL = os.environ["API_URL"]
@app.func(memory_limit=256, env={"API_URL": API_URL})
def hello_world(event, context):
return requests.get(API_URL)
The configuration is done by passing arguments to the decorator. To view which arguments are supported, head over to this documentation page.
Local testing
Before deploying, you can run your functions locally with the dev command:
scw-serverless dev app.py
This runs a local Flask server with your Serverless handlers. If no relative_url
is defined for a function, it will be served on /name
with name
being the name of your Python function.
By default, this runs Flask in debug mode which includes hot-reloading. You can disable this behavior by passing the --no-debug
flag.
Deploying
When you are ready, you can deploy your function with the scw-serverless
CLI tool:
scw-serverless deploy app.py
The tool will use your Scaleway credentials from your environment and config file.
What’s Next?
To learn more about the framework, have a look at the documentation. If you want to see it in action, we provide some examples to get you started.
To run your Python functions locally, check out Scaleway Functions Python.
Contributing
We welcome all contributions.
This project uses pre-commit hooks to run code quality checks locally. We recommended installing them before contributing.
pre-commit install