Skip to main content

A simple session manager for aws lambda function using dynamodb

Project description

Session Lambda

A simple way to manage sessions for AWS Lambdas

Install

pip install session-lambda

Prerequisites

DynamoDB Table

  • A table in DynamoDB with a primary key named key with 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:

import time
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:

import time
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 the event[headers]. It is default to session-id. It is case-sensitive.
  • update flag control weather set_sessions_data updates the data. It is default to False.
  • 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 to ttl.

Future Features

  • Support Schema validation for session data

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

session_lambda-0.3.4.tar.gz (5.5 kB view details)

Uploaded Source

Built Distribution

session_lambda-0.3.4-py3-none-any.whl (6.8 kB view details)

Uploaded Python 3

File details

Details for the file session_lambda-0.3.4.tar.gz.

File metadata

  • Download URL: session_lambda-0.3.4.tar.gz
  • Upload date:
  • Size: 5.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.3.2 CPython/3.9.5 Darwin/21.1.0

File hashes

Hashes for session_lambda-0.3.4.tar.gz
Algorithm Hash digest
SHA256 4f4d9184fad3edf170a44eea0c25e5685f0d484b3a3a1a03fa56f92ddcf91019
MD5 48f9e24d194a1945139f6d804837151a
BLAKE2b-256 3c6311b1f5715ba68f784bf9b263c40ce8094aa4a85d72dbd825c4dd4f47b782

See more details on using hashes here.

Provenance

File details

Details for the file session_lambda-0.3.4-py3-none-any.whl.

File metadata

  • Download URL: session_lambda-0.3.4-py3-none-any.whl
  • Upload date:
  • Size: 6.8 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

Hashes for session_lambda-0.3.4-py3-none-any.whl
Algorithm Hash digest
SHA256 6c2fa065dd019fbb1514e89f1086a23c462b9a73de52dfcf3b2742ceb0afb948
MD5 a00e2e7703b1e01f1ddb601033d13fc0
BLAKE2b-256 42dbaae3bad5aedadc2a38e374bc9947f4a47cf72f70c26effa29f9f0fbf9b05

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page