Skip to main content

Runtime Hooks for AWS Lambda SnapStart - Python

Project description

Snapshot Restore for Python

Description

This is the Snapshot Restore for Python library which can be used for registering runtime hooks in Snapstart enabled Python Lambda functions

This library provides two decorators that you can use to define your runtime hooks:

  • @register_before_snapshot - For code you want to run before a snapshot is taken
  • @register_after_restore - For code you want to run after a snapshot is restored

Alternatively, you can use the following methods to register callables for runtime hooks:

  • register_before_snapshot(func, *args, **kwargs)
  • register_after_restore(func, *args, **kwargs)

Code sample

Register hooks using decoratores

from snapshot_restore_py import register_before_snapshot, register_after_restore

def lambda_handler(event, context):
    # your logic here
    ...

@register_before_snapshot
def fn_before_snapshot():
    # your logic here
    ...

@register_after_restore
def fn_after_restore():
    # your logic here
    ...

Register hooks using functions

from snapshot_restore_py import register_before_snapshot, register_after_restore

def lambda_handler(event, context):
    // Lambda handler code

def fn_before_snapshot():
    # your logic here
    ...

def fn_after_restore():
    # your logic here
    ...

register_before_snapshot(fn_before_snapshot)
register_after_restore(fn_after_restore)

Please refer to the examples provided for more details.

Important points to note

Execution order

  • BeforeSnapshot hooks will run in the reverse order** as they were registered
  • AfterRestore hooks will run in the same order as they were registered.

Best Practices

  • While decorators are convenient, using functions for hook registration can offer more explicit control over the order of execution and improve code readability.

Registering functions with arguments

  • To register a function with specific arguments, just use the register_...(func, *args, **kwargs) method.

Importing Modules

  • If you register a hook in a file that isn’t imported in your main handler, it will be ignored.
  • If you import hooks within the lambda_handler, they won’t be executed. Instead, make sure all essential imports are at the top level of your code. This way, your hooks will be recognized and executed as intended!

Duplicate registrations

  • If you register a function more than once (like decorating it and registering it again), it’ll run multiple times.

Local environment

  • Pre-installed in Lambda Runtime: When deploying to AWS Lambda, you do not need to include this library in your deployment package, as it is already pre-installed in the Lambda runtime environment.

  • Local Testing Consideration: For local testing, ensure that you include the library in your development dependencies to avoid any import issues during testing.

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

snapshot-restore-py-1.0.0.tar.gz (3.4 kB view details)

Uploaded Source

Built Distribution

snapshot_restore_py-1.0.0-py3-none-any.whl (3.8 kB view details)

Uploaded Python 3

File details

Details for the file snapshot-restore-py-1.0.0.tar.gz.

File metadata

  • Download URL: snapshot-restore-py-1.0.0.tar.gz
  • Upload date:
  • Size: 3.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.19

File hashes

Hashes for snapshot-restore-py-1.0.0.tar.gz
Algorithm Hash digest
SHA256 4d27f82fb6f09968f422501e9c3c2dea48a46cd19dc798eb7d6cbc57523c8004
MD5 9c451c427df0c42741bd50a127022b33
BLAKE2b-256 27192d7584749a7f6d1b4b3a129995b1bc31e70ed9c5ecc323f1ee748b767268

See more details on using hashes here.

File details

Details for the file snapshot_restore_py-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for snapshot_restore_py-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 38f99e696793790f54658e71c68c7a8a40cea877c81232b5052383b1301aceba
MD5 65a4167b68085c83e138ea78822d064c
BLAKE2b-256 10b8f9da2457e9dfb5872042202d69b329940527672e20cbfdb26610c09e1d8e

See more details on using hashes here.

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