Skip to main content

x2s3

Python CI

RESTful web service which makes any storage system X available as an S3-compatible REST API, hence the name "X to S3". It was initially built to support cloud-compatible microscopy image viewers such as N5 Viewer (BigDataViewer) and Neuroglancer.

At Janelia, we use x2s3 to make private buckets on Seagate Lyve appear public, and to proxy internal resources (e.g. VAST S3). It can also be used as a pop-up file service for quickly viewing local images in BigDataViewer or Neuroglancer.

Features

  • Extensible support for backend storage systems
  • Optional web-based bucket explorer
  • Hidden buckets
  • Partial buckets (chroot-like prefixes)
  • Non-blocking object streaming

Inspired by S3 proxies such as oxyno-zeta/s3-proxy and pottava/aws-s3-proxy, this service goes a step further to implement enough of the AWS S3 API to be useable by AWS clients, such as BigDataViewer. The S3 proxy implements which do this well (e.g. gaul/s3proxy) only proxy a single bucket at a time.

S3 endpoints implemented:

S3 features omitted:

  • Permissions
  • Encryption
  • Versioning
  • RequestPayer
  • etc.

Running

Create a config.yaml file that contains all of the buckets you want to serve. You can get started quickly by using the provided example template:

cp config.template.yaml config.yaml

See the documentation for more information about the configuration file.

The simplest way to run the service is to use Docker:

docker run -it -p 8000:8000 -v ./config.yaml:/app/x2s3/config.yaml ghcr.io/janeliascicomp/x2s3:latest

You can also run the service with Python/Uvicorn directly. See the development documentation for more information on setting that up.

Production Deployment

For production deployments, we recommend using an orchestrator (like Docker Compose) to run the prebuilt Docker container along with an Nginx reverse proxy which provides caching and TLS termination.

Create a ./docker/.env file that looks like this:

CONFIG_FILE=/path/to/config.yaml
VAR_DIR=/path/to/var/dir
CERT_DIR=/path/to/certs
NGINX_CACHE_DIR=/path/to/cache

These properties configure the service as follows:

  • CONFIG_FILE: path to the config.yaml settings file
  • VAR_DIR: optional path to the var directory containing access keys referenced by config.yaml
  • CERT_FILE: optional path to the SSL cert file
  • KEY_FILE: optional path to the SSL key file
  • NGINX_CACHE_DIR: path for Nginx response caching (you can disable caching by editing nginx.conf)

Now you can bring up the container:

cd docker/
docker compose up -d

Additional Documentation

Attributions

Metadata

Release files for x2s3 1.6.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 x2s3 1.6.0
File Size Uploaded
x2s3-1.6.0.tar.gz 44.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for x2s3 1.6.0
File Interpreter ABI Platform
x2s3-1.6.0-py3-none-any.whl Python 3 none any Details

Total release size: 78.2 kB

Release files / x2s3-1.6.0.tar.gz

Download URL x2s3-1.6.0.tar.gz
Size 44.4 kB
Tags Source
SHA-256 checksum
How to use checksums
1d411fd7ee422e05ff6121b477437a00f7774642ad2cebc8cc9e7def6f41ebfb
BLAKE2b-256 checksum
How to use checksums
8776a0cfd27effc6eeac7295f1f1498ec06eec4a747bd23fb082db6092825303
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.13

Release files / x2s3-1.6.0-py3-none-any.whl

Download URL x2s3-1.6.0-py3-none-any.whl
Size 33.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f78f70e2e4da3e851e6f617fe53c7c17c34cf2571a13f7a7cd7672ddf118ad4c
BLAKE2b-256 checksum
How to use checksums
6d7bec8e14901ef16b35677e3883c197fca0a5e03b4f6d2e94c0c9f371772ce0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.13

Release history Release notifications | RSS feed

This release

1.6.0 This release

2 release files

1.5.2

2 release files

1.5.1

2 release files

1.5.0

2 release files

1.4.2

2 release files

1.3.0

2 release files

1.2.0

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.0

2 release files

0.9.1

2 release files

0.9.0

2 release files

0.8.3

2 release files

0.8.2

2 release files

0.8.0

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