Skip to content

Conversation

@klaudworks
Copy link
Contributor

@klaudworks klaudworks commented Dec 11, 2025

Summary

Adresses: #750

Adds a new aws-s3-sdk storage backend using AWS SDK v2, replacing the jclouds-based aws-s3 provider for S3-compatible backends.

Changes

  • New AwsS3SdkBlobStore implementing full BlobStore interface via AWS SDK v2
  • Supports path-style access for non-AWS or AWS legacy endpoints
  • CI integration with LocalStack for automated testing
  • Changed src/test/resources/run-s3-tests.sh to be able to run individual tests for a faster feedback loop

Changes that I included for my own workloads on s3 compatible storages:

  • Native atomic conditional writes (If-Match/If-None-Match) with configurable fallback to an emulation (I need that fallback because lots of s3 compatible storages don't implement that feature yet)
  • Added a setting to disable chunked encoding. Hetzner does not support that yet.

I'm using s3proxy as a compatibility layer to be able to swap out s3-compatible storage backends / azure. Even the s3 compatible storage backends are usually not as compatible as it seems. 😅

Current validation

Most s3-tests conformity tests working. Only tests I had to disable were tests

  • that were marked as fail_on_aws
  • 4 tests related to a quirk in localstack not properly matching AWS S3 behavior
  • 2 tests related to another localstack quirk where it doesn't match AWS S3 behavior

Here the PR for the s3-tests: gaul/s3-tests#5

EDIT 17.12.2025: Running this in kubernetes with quite a wide variety of workloads and it's working just fine.

@gaul gaul self-requested a review December 11, 2025 19:06
@klaudworks
Copy link
Contributor Author

@gaul it's ready 🥳

@klaudworks klaudworks force-pushed the feature/aws-s3-sdk-provider branch from 19ce9ed to 07e62f3 Compare December 12, 2025 08:23
@klaudworks
Copy link
Contributor Author

klaudworks commented Dec 12, 2025

I renamed the s3proxy-localstack.conf created in #941 to s3proxy-localstack-s3.conf and the one from this branch to s3proxy-localstack-aws-s3-sdk.conf to resolve the conflict.

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.

1 participant