Skip to main content

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.

Release files for snapshot-restore-py 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for snapshot-restore-py 1.0.0
File Size Uploaded
snapshot-restore-py-1.0.0.tar.gz 3.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for snapshot-restore-py 1.0.0
File Interpreter ABI Platform
snapshot_restore_py-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 7.2 kB

Release files / snapshot-restore-py-1.0.0.tar.gz

Download URL snapshot-restore-py-1.0.0.tar.gz
Size 3.4 kB
Tags Source
SHA-256 checksum
How to use checksums
4d27f82fb6f09968f422501e9c3c2dea48a46cd19dc798eb7d6cbc57523c8004
BLAKE2b-256 checksum
How to use checksums
27192d7584749a7f6d1b4b3a129995b1bc31e70ed9c5ecc323f1ee748b767268
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.9.19

Release files / snapshot_restore_py-1.0.0-py3-none-any.whl

Download URL snapshot_restore_py-1.0.0-py3-none-any.whl
Size 3.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
38f99e696793790f54658e71c68c7a8a40cea877c81232b5052383b1301aceba
BLAKE2b-256 checksum
How to use checksums
10b8f9da2457e9dfb5872042202d69b329940527672e20cbfdb26610c09e1d8e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.9.19

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page