Skip to content

S3

pip install "jdlib[s3]"

jdlib.storage is object storage, and jdlib.storage.s3.S3ObjectStorage is the backend that ships. The same rule as the cache applies: the tenant is part of the key, so a shared bucket cannot become a cross-tenant read.

Module What it is
provider the storage protocol a backend implements
keys key construction, with the tenant in the prefix
metadata the metadata stored beside an object
s3 S3ObjectStorage
errors the refusals

What ships, and what does not

S3 is verified against a real MinIO in the integration suite. Google Cloud Storage and Azure Blob have no module and no export: a provider class in the public surface is a claim that it works, and a test asserts they are absent rather than leaving the claim implicit.

Wiring it

from jdlib.storage.s3 import S3ObjectStorage

storage = S3ObjectStorage(
    bucket="tenant-objects",
    endpoint_url="http://127.0.0.1:9000",   # MinIO in the lab; omit for AWS
    ...
)

Credentials come from the caller's own chain (the SDK's, or jdlib.credentials), never from a value the library read out of the environment on its own.

Where it is tested

tests/integration/ against MinIO, including the key-prefix rule. The feature guide is features/storage.