Lambda Gateway
Project description
Lambda Gateway
Test AWS Lambda functions invoked as API Gateway proxy integrations locally.
This tool extends the native Python SimpleHTTPRequestHandler to proxy requests to a local Lambda function using the ThreadingHTTPServer.
This tool is was specifically implemented to use the standard Python library only. No additional pip installation is required.
After installing, navigate to the directory where your Lambda function is defined and invoke it with the CLI tool using the configured handler, eg:
lambda-gateway [-p PORT] [-t SECONDS] lambda_function.lambda_handler
# => Serving HTTP on :: port 8000 (http://[::]:8000/) ...
Installation
Install with pip.
pip install lambda-gateway
Usage
Create a Lambda function handler in Python 3
# ./lambda_function.py
import json
def lambda_handler(event, context=None):
# Get name from qs
params = event.get('queryStringParameters') or {}
name = params.get('name') or 'Pythonista'
# Return response
return {
'body': json.dumps({'text': f'Hello, {name}! ~ Lambda Gateway'}),
'statusCode': 200,
'headers': {
'Content-Type': 'application/json',
},
}
Start a local server with the signature of your Lambda handler as the argument.
Note — the handler must be importable from the current working directory
lambda-gateway [-B PATH] [-b ADDR] [-p PORT] [-t SECONDS] lambda_function.lambda_handler
# => Starting LambdaRequestHandler at http://localhost:8000/
Test the function with cURL.
curl http://localhost:8000/?name=Pythonista
# => {"text": "Hello, Pythonista! ~ Lambda Gateway"}
Timeouts
API Gateway imposes a 30 second timeout on Lambda responses. This constraint is implemented in this project using Python's async/await syntax.
The timeout length can be adjusted using the -t / --timeout
CLI option.
lambda-gateway -t 3 lambda_function.lambda_handler
API Gateway Payloads
API Gateway supports two versions of proxied JSON payloads to Lambda integrations, 1.0
and 2.0
.
Versions 0.8+
of Lambda Gateway use 2.0
by default, but this can be changed at startup time using the -V / --payload-version
option:
lambda-gateway -V1.0 lambda_function.lambda_handler
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 lambda_gateway-1.1.0.tar.gz
.
File metadata
- Download URL: lambda_gateway-1.1.0.tar.gz
- Upload date:
- Size: 13.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: python-requests/2.31.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b555e3ab4ef1fdc1abab084686a203e88b9dd75bc008881ef1278123377095e1 |
|
MD5 | 83a80a59134e4745a026b037b266bfb4 |
|
BLAKE2b-256 | 85de5b25b512f8ca2c1389d8f857b0d1336cf343f42d22b7e279617a8fb3e61a |
File details
Details for the file lambda_gateway-1.1.0-py3-none-any.whl
.
File metadata
- Download URL: lambda_gateway-1.1.0-py3-none-any.whl
- Upload date:
- Size: 8.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: python-requests/2.31.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 92ce7bae31c79e1c77ec967e78c37d8ab775ad932b0e612d212bec9abb4ca8c0 |
|
MD5 | 6485ed8d529cb1af9f2e8585893a6222 |
|
BLAKE2b-256 | 7153d819a54593b5de862e5b3fa594bd40501060705aa722f131f5396ad695c7 |