Storage Workflows for Notebooks
Project description
bookstore
This repository provides tooling and workflow recommendations for storing, scheduling, and publishing notebooks.
Automatic Notebook Versioning
Every save of a notebook creates an immutable copy of the notebook on object storage.
To ease implementation, we'll rely on S3 as the object store, using versioned buckets.
Storage Paths
All notebooks are archived to a single versioned S3 bucket with specific prefixes denoting the lifecycle of the notebook:
/workspace
- where users edit/published
- public notebooks (to an organization)
Each notebook path is a namespace that an external service ties into the schedule. We archive off versions, keeping the path intact (until a user changes them).
Prefix | Intent |
---|---|
/workspace/kylek/notebooks/mine.ipynb |
Notebook in “draft” |
/published/kylek/notebooks/mine.ipynb |
Current published copy |
Scheduled notebooks will also be referred to by the notebook key, though we'll need to be able to surface version Ids as well.
Transitioning to this Storage Plan
Since most people are on a regular filesystem, we'll start with writing to the /workspace
prefix as Archival Storage (writing on save using a post_save_hook
for a Jupyter contents manager).
Configuration
# jupyter config
# At ~/.jupyter/jupyter_notebook_config.py for user installs on macOS
# See https://jupyter.readthedocs.io/en/latest/projects/jupyter-directories.html for other places to plop this
from bookstore import BookstoreContentsArchiver
c.NotebookApp.contents_manager_class = BookstoreContentsArchiver
# All Bookstore settings are centralized on one config object so you don't have to configure it for each class
c.BookstoreSettings.workspace_prefix = "/workspace/kylek/notebooks"
c.BookstoreSettings.published_prefix = "/published/kylek/notebooks"
c.BookstoreSettings.s3_bucket = "<bucket-name>"
# Note: if bookstore is used from an EC2 instance with the right IAM role, you don't
# have to specify these
c.BookstoreSettings.s3_access_key_id = <AWS Access Key ID / IAM Access Key ID>
c.BookstoreSettings.s3_secret_access_key = <AWS Secret Access Key / IAM Secret Access Key>
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
Hashes for bookstore-2.1.0-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c5e55c50b1d4fb5446ecf59810cf07751fc472754c30a44946d474a82205b2f0 |
|
MD5 | 1b25cc876595663e084e62d37509b805 |
|
BLAKE2b-256 | affcf744adb947123c8fc0923de3e566baaf7e99dfdd1e8f02476e4a20fea951 |