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

1 participant