Skip to main content

A package with flask-like syntax for routing requests from an AWS ALB in Lambda

Project description

LambdaALBRouter

LambdaALBRouter is a small package with flask-like syntax for routing requests from an AWS ALB in Lambda. It parses out all relavent information from the triggering event and passes it through to a matching registered route. With exceptions handled and turned into json responses, utilities for quickly exiting and returning json it is very easy to make quick APIs with ALB-fronted Lambdas in AWS.

Currently there is nothing implemented for handling templates or returning HTML, but that will be added in the future. Runtime data is stored in a separate class and not stored in the instance of ALBRouter to allow that instance to be a global variable (and cached between lambda executions) without running into caching issues.

Installing

pip install -U LambdaALBRouter

Example

from LambdaALBRouter import router, abort, response

app = router.ALBRouter()

def lambda_handler(event, _context):
    return app.process_lambda_alb_event(event)

@app.route("/")
def hello():
    return response("Hello world!")

@app.route("/hello/<user>")
def hello_user(user):
    return response(f"Hello {user}!")

@app.route("/update/<user>", route_methods=["POST"])
def update_user(user, context):
    input_data = context.data
    query_string = context.query_string
    request_headers = context.request_headers

    if not "something" in input_data.keys():
        abort(400, "Missing required input 'something'")

    # Update user in a database...

    return response(
        {
            "message": f"Updated {user}!",
            "context": context.__dict__
        }
    )

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 LambdaALBRouter, version 0.2
Filename, size File type Python version Upload date Hashes
Filename, size LambdaALBRouter-0.2-py3-none-any.whl (8.6 kB) File type Wheel Python version py3 Upload date Hashes View hashes
Filename, size LambdaALBRouter-0.2.tar.gz (7.5 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page