Skip to content

feat(persistence): introduce AWS S3 backend#42

Merged
smunini merged 7 commits intoHeliosSoftware:mainfrom
aacruzgon:feat/s3-backend
Mar 4, 2026
Merged

feat(persistence): introduce AWS S3 backend#42
smunini merged 7 commits intoHeliosSoftware:mainfrom
aacruzgon:feat/s3-backend

Conversation

@aacruzgon
Copy link
Contributor

Summary

This PR introduces a new AWS S3 persistence backend behind the s3 feature flag.

The implementation integrates with the existing backend abstraction and capability matrix and is intended to provide object-storage–based persistence without claiming advanced query/index semantics.

Implemented Capabilities

  • CRUD operations
  • Resource versioning (vread)
  • Instance history
  • Optimistic locking
  • Batch bundle support (best-effort transaction handling)
  • Bulk export (manifest + NDJSON output)
  • Bulk submit (ingest + raw artifact persistence)
  • Prefix-per-tenant and explicit bucket-per-tenant modes

Integration

  • Added S3 to the capability matrix
  • Added S3 as a backend in the Inferno test matrix
  • Env-gated real AWS integration tests (RUN_AWS_S3_TESTS=1)
  • Uses AWS SDK provider chain (AWS_PROFILE, AWS_REGION)
  • No automatic bucket creation (HeadBucket validation only)

Notes

  • Region-aware behavior
  • Storage-focused backend (no search/index guarantees claimed)
  • Verified against a real AWS S3 bucket

aacruzgon and others added 5 commits February 25, 2026 15:45
… and env-gated integration tests

- Implement S3 backend behind 's3' feature using aws_sdk_s3 only
- Add CRUD, vread, history, bulk export, bulk submit
- Add bucket-per-tenant and prefix-per-tenant modes
- Integrate with capability matrix
- Add env-gated real AWS integration tests
- Update documentation
- No automatic bucket creation (HeadBucket validation only)
@codecov
Copy link

codecov bot commented Mar 4, 2026

Codecov Report

❌ Patch coverage is 85.71429% with 15 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
crates/rest/src/handlers/batch.rs 89.88% 9 Missing ⚠️
crates/hfs/src/main.rs 0.00% 6 Missing ⚠️

📢 Thoughts on this report? Let us know!

smunini added 2 commits March 4, 2026 13:02
- Fix outcome placement: error OperationOutcome now goes in
  response.outcome instead of being incorrectly placed at entry.resource
- Add fullUrl to response entries using HFS_BASE_URL
- Honor Prefer header (return=minimal, return=representation,
  return=OperationOutcome) in batch and transaction responses
- Add lastModified, etag, and location to batch response entries by
  unifying batch and transaction paths through BundleEntryResult
- Add 22 new integration tests in batch_conformance.rs covering all fixes
- Add S3 storage backend mode to ServerConfig and StorageBackendMode
- Wire S3Backend into HFS main binary with HFS_S3_BUCKET, HFS_S3_REGION,
  and HFS_S3_VALIDATE_BUCKETS env vars
- Add s3 feature flag to helios-hfs and helios-rest Cargo.toml
- Implement stub SearchProvider and ConditionalStorage traits for S3
  (returns UnsupportedCapability errors)
- Improve S3 client error mapping for access denied, timeout, and
  dispatch failures
- Add S3 backend to Inferno CI test matrix with conditional execution
- Update README with S3 backend docs and env vars
@smunini smunini merged commit 3b1b7ab into HeliosSoftware:main Mar 4, 2026
4 of 6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants