Meridian Storage S3
meridian-storage-s3 is the S3-compatible Object Adapter for Meridian V1. It implements
the released meridian-storage-object-common==1.0.0 contract behind the s3 adapter id.
Consumers continue to use mapping-first object Catalog Expressions; bucket names, keys,
endpoints, credentials, SDK objects, retention controls, and migration state remain private to
deployment composition and this adapter.
Contract and guarantees
The adapter implements all eight V1 Object operation contracts:
publish_schemaandcreate_resourcefor adapter-owned Object registry metadata;- streaming
putandgetwith SHA-256 verification and bounded memory; - inclusive
read_rangewith per-chunk integrity verification; stat, maintenance-only bounded-prefixlist, and exact-versiondelete;- S3 multipart upload above a validated threshold;
- portable user metadata and immutability/retention intent;
- optional S3 Object Lock enforcement when the IaC-owned bucket enables it;
- deterministic capabilities, authenticated health probes, physical verification, and externally orchestrated migration hooks.
The adapter never provisions a bucket, changes bucket policy, enables versioning/Object Lock, creates identities, manages ACLs, configures lifecycle/replication/recovery, or returns a pre-signed URL. Those authorities remain with Platform or Vangu IaC.
Installation
python -m pip install meridian-storage-s3==1.0.0
Python 3.12 or newer is required. The package pins the released Object Common contract and
is discovered through the meridian_storage.adapters entry-point group.
Deployment configuration
S3AdapterFactory consumes a closed Meridian BindingConfig. The physical namespace is
bucket or bucket/prefix; the binding endpoint, opaque identity/credential secret values,
TLS policy, and validated settings are translated privately to the S3 SDK. Supported settings
are listed below; unknown settings fail closed.
identityresolves to the UTF-8 S3 access-key id.credentialresolves either to the UTF-8 secret access key or to{"secretAccessKey":"...","sessionToken":"..."}for temporary credentials.endpointmust already be resolved by IaC. HTTP is accepted only with disabled TLS andallowInsecureHttp: true; authenticated server TLS requires HTTPS plus resolved CA material. Mutual TLS is rejected because the boto3 transport cannot safely consume the Core client identity contract.regiondefaults tous-east-1;addressingStyleisauto,path, orvirtual.multipartThresholdBytes,multipartPartBytes,spoolMemoryBytes,integrityChunkBytes,maxObjectBytes,maxRangeBytes, andmaxAttemptsare bounded before an SDK client or transfer is created.verifyAfterWritedefaults to true.checksumHeadersenables provider SHA-256 headers in addition to Meridian's mandatory end-to-end digest verification.serverSideEncryptionisAES256oraws:kms;kmsKeyIdis required only foraws:kms.requireVersioningfails authenticated startup unless versioning is verified.objectLockModeisGOVERNANCEorCOMPLIANCEand requires an IaC-created Object-Lock bucket.
Development-only HTTP endpoints require allowInsecureHttp: true. Production bindings should
use authenticated TLS. Enforced retention is advertised only when objectLockMode is configured
and the authenticated probe verifies Object Lock on the bucket. This is enforcement evidence,
not a WORM compliance or certification claim.
S3MigrationHooks exposes a deterministic forward-only metadata plan and idempotent apply hook.
It validates access and records the adapter metadata revision; the external IaC migration job
still owns scheduling, rollback/recovery decisions, bucket changes, and lifecycle policy.
Failure and data handling
Payloads are spooled with bounded memory, hashed before publication, uploaded with conditional metadata records, and read back for verification by default. Multipart sessions are aborted on every incomplete path. Range reads fetch and verify every complete integrity chunk covering the requested inclusive range. Logical ids, bucket names, endpoints, credentials, physical keys, and provider response text are absent from consumer references and normalized failures.
The adapter maps authenticated provider failures to the released Object error taxonomy, including conditional conflicts, not-found, range, throttling, quota, corruption, authorization, retention, and unavailable outcomes. Maintenance listing scans a bounded number of pages and uses an opaque logical cursor.
Verification
python -m pytest
python -m mypy src
python -m ruff check .
python -m build
The integration suite targets a disposable real MinIO server and runs the released Object Common conformance runner plus provider-specific multipart, range, metadata, retention, and normalized failure checks. The engine image is pinned by immutable multi-platform digest. CI regenerates and byte-compares the committed conformance report; the locked design/contract inputs and released Object Common wheel hash are recorded in the design baseline.
License
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file meridian_storage_s3-1.0.0.tar.gz.
File metadata
- Download URL: meridian_storage_s3-1.0.0.tar.gz
- Upload date:
- Size: 45.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3a58fc82f44320812c5c67ac6f7e0563b02920b36d2f563c8de2802102c1f10e
|
|
| MD5 |
26ccee57eb4627bd87bdb7a8636b8300
|
|
| BLAKE2b-256 |
912d84e5bd0474a46fe414e099cae2c36a13e338d3a8b4308676a4cb589542fb
|
Provenance
The following attestation bundles were made for meridian_storage_s3-1.0.0.tar.gz:
Publisher:
release.yml on zephytiju/meridian-storage-s3
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
meridian_storage_s3-1.0.0.tar.gz -
Subject digest:
3a58fc82f44320812c5c67ac6f7e0563b02920b36d2f563c8de2802102c1f10e - Sigstore transparency entry: 2595924777
- Sigstore integration time:
-
Permalink:
zephytiju/meridian-storage-s3@cb6e55a37b34df6522f0b259cfd7d6ff7782acd4 -
Branch / Tag:
refs/tags/v1.0.0 - Owner: https://github.com/zephytiju
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@cb6e55a37b34df6522f0b259cfd7d6ff7782acd4 -
Trigger Event:
push
-
Statement type:
File details
Details for the file meridian_storage_s3-1.0.0-py3-none-any.whl.
File metadata
- Download URL: meridian_storage_s3-1.0.0-py3-none-any.whl
- Upload date:
- Size: 38.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0b58f463ea9d2307a673d045ad6724a4843ea9d16370d0d3a72598f151ddb451
|
|
| MD5 |
78ff43da8d4db0eda9f9d3d5b3d98699
|
|
| BLAKE2b-256 |
f9b2a6d56dc1bc6f4a8198f761de1fb9d5836577162ed4366be791f2ca6315fd
|
Provenance
The following attestation bundles were made for meridian_storage_s3-1.0.0-py3-none-any.whl:
Publisher:
release.yml on zephytiju/meridian-storage-s3
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
meridian_storage_s3-1.0.0-py3-none-any.whl -
Subject digest:
0b58f463ea9d2307a673d045ad6724a4843ea9d16370d0d3a72598f151ddb451 - Sigstore transparency entry: 2595924814
- Sigstore integration time:
-
Permalink:
zephytiju/meridian-storage-s3@cb6e55a37b34df6522f0b259cfd7d6ff7782acd4 -
Branch / Tag:
refs/tags/v1.0.0 - Owner: https://github.com/zephytiju
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@cb6e55a37b34df6522f0b259cfd7d6ff7782acd4 -
Trigger Event:
push
-
Statement type: