A simple session manager for aws lambda function using dynamodb
Project description
Session Lambda
A simple way to manage sessions for AWS Lambdas
This package simplfy the way one can use DynamoDB as a key/value presistance layer for AWS Lambda - using a single python decorator.
Install
pip install session-lambda
Prerequisites
DynamoDB Table
- A table in DynamoDB with a primary key named
key
of type string - [optional] Enable TTL in your DynamoDB table with attribute named
ttl
Usage
Set SESSION_LAMBDA_DYNAMODB_TABLE_NAME
env var:
export SESSION_LAMBDA_DYNAMODB_TABLE_NAME=<table-name>
Run the following python code:
from session_lambda import session, set_session_data, get_session_data
@session
def lambda_handler(event, context):
print(get_session_data())
set_session_data((get_session_data() or 0)+1)
return {"headers":{}}
# first client_a call
response = lambda_handler({'headers':{}}, {})
# get session id from response (created by the server)
session_id = response.get('headers').get('session-id')
# use session id in subsequent calls
lambda_handler({'headers':{'session-id':session_id}}, {})
lambda_handler({'headers':{'session-id':session_id}}, {})
lambda_handler({'headers':{'session-id':session_id}}, {})
# first client_b call
lambda_handler({'headers':{}}, {})
You should get the following prints:
None
1
1
1
None
This time using the update=True
mode:
from session_lambda import session, set_session_data, get_session_data
@session(update=True)
def lambda_handler(event, context):
print(get_session_data())
set_session_data((get_session_data() or 0)+1)
return {"headers":{}}
# first client_a call
response = lambda_handler({'headers':{}}, {})
# get session id from response (created by the server)
session_id = response.get('headers').get('session-id')
# use session id in subsequent calls
lambda_handler({'headers':{'session-id':session_id}}, {})
lambda_handler({'headers':{'session-id':session_id}}, {})
lambda_handler({'headers':{'session-id':session_id}}, {})
# first client_b call
lambda_handler({'headers':{}}, {})
Now you should see:
None
1
2
3
None
Features
@session(id_key_name='session-id', update=False, ttl=0)
def lambda_handler(event, context):
...
id_key_name
is the expected key name in theevent[headers]
. It is default tosession-id
. It is case-sensitive.update
flag control weatherset_sessions_data
updates the data. It is default toFalse
.ttl
is seconds interval for the session to live (since the last update time). By default it is disabled. Any value larger then 0 will enable this feature. Make sure to set the TTL key name in your dynamodb tottl
.
Future Features
- Support Schema validation for session data
Additional Inforamtion
-
Check this
session-lambda-example
repository for more usage examples: https://github.com/roy-pstr/session-lambda-example -
Check this medium post for general guidance: https://medium.com/@roy-pstr/a-simple-way-to-manage-sessions-with-aws-lambda-dynamodb-in-python-c7aae1aa7258
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 session_lambda-0.3.6.tar.gz
.
File metadata
- Download URL: session_lambda-0.3.6.tar.gz
- Upload date:
- Size: 6.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.3.2 CPython/3.9.5 Darwin/21.1.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 50c8b5e0b4b454c8bce214ebd7099434ce818f047044e4e80e9a25747c5488b0 |
|
MD5 | 94c656b28e99981f11342a4460e82a4f |
|
BLAKE2b-256 | 0a5dd464c92d5710c248207ffacf8985e5662dc73204b84ecedbfea142bc06e7 |
Provenance
File details
Details for the file session_lambda-0.3.6-py3-none-any.whl
.
File metadata
- Download URL: session_lambda-0.3.6-py3-none-any.whl
- Upload date:
- Size: 7.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.3.2 CPython/3.9.5 Darwin/21.1.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6ec28ae2eacfd10cb37949943d1805a0ddba8528024b813b60e94013df49afb9 |
|
MD5 | fdcb8efa7a957bc04fae661aa0d6aa28 |
|
BLAKE2b-256 | 3e5cbaf9cc5009248d95e8e183bfb58b67d9fcc40e8329021caedaf33d3d9b58 |