Use Requests to invoke AWS Lambdas
Project description
Lambda-requests use the well familiar requests library to access your HTTP enabled AWS Lambda functions.
Quick start
Installation
pip intall lambda-requests
Usage
>>> import lambda_requests
>>> lr = lambda_requests.Session()
>>> lr.get("http+lambda://flaskexp-test/test/foo")
<Response [200]>
In short, start a lambda_requests.Session() and then access you lambdas by passing http+lambda://{name-of-lambda-function}/… as the uri to the common requests methods such as get, post and the usual parameters such as query strings, form data and so on.
Lambda authorization is configured via boto3, and can be set up using environment variables or a configuration file. Configuration file is recommended. Example credential file ~/.aws/credentials:
[default]
aws_access_key_id = XXXXXXXXXXXXXXXXXXXX
aws_secret_access_key = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Similar to authorization, region can be configured either via the environment variable AWS_DEFAULT_REGION, configuration file. Region can also be set on initialization of Session(region=”us-west-2”). Example configuration file ~/.aws/config:
[profile default]
region = us-west-2
The lambdas must support proxy integration, which is used commonly by frameworks such as Zappa, Mangum.
Why
In using REST microservice architecture it is important to be able to conveniently make calls from one service to another. To use this pattern in AWS serverless ecosphere along with Lambda one is practically forced to stand up an API Gateway in front of the lambda. This has several distinct disadvantages, all mostly along the lines of security.
API Gateway publicly exposes endpoints
API Gateway uses own authentication / authorization schema. While Lambda already supplies us with IAM.
Extra dependencies in call chain. While availability is high, latency may still be of concern.
Over all, to reduce exposure of private sub-services, re-use IAM authentication / authorization and reduce latency.
How does its work
Simple, we register a new protocol name with requests and use a lambda specific transport adapter which translates a requests request to lambda invoke compatible with AWS API Gateway simple proxy format.
Limitations
Following functionality has not been tested and is likely to not be functional:
Cookies
Basicauth
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
Built Distribution
File details
Details for the file lambda_requests-1.5.tar.gz
.
File metadata
- Download URL: lambda_requests-1.5.tar.gz
- Upload date:
- Size: 4.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.9.0 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | cea67cbc5ebf8c8bc09de8c71ec6e4588365a77a44e9be70ee8c485bd3d95565 |
|
MD5 | 4d9a27646ca1260b365c9e05fa0e6fa1 |
|
BLAKE2b-256 | 0e03a7585d2d4634f65f75416641786797d3ec398e9f0c52094c45fad55f43e5 |
File details
Details for the file lambda_requests-1.5-py2.py3-none-any.whl
.
File metadata
- Download URL: lambda_requests-1.5-py2.py3-none-any.whl
- Upload date:
- Size: 5.3 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.9.0 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9897792e247f3eee3bec18753a6883e1a3e31b5c3ae2efbb692908a1e245af1e |
|
MD5 | 0080d8b13875c7dad1001b5c3313334e |
|
BLAKE2b-256 | 7db3dab7280fa7f506fbd48c1cbbc2f6b50ea73e08c29e07e62f4950dc59e305 |