Skip to content

feat(services/s3): add R2 and MinIO presets - #8013

Draft
Xuanwo wants to merge 1 commit into
mainfrom
xuanwo/s3-provider-presets
Draft

feat(services/s3): add R2 and MinIO presets#8013
Xuanwo wants to merge 1 commit into
mainfrom
xuanwo/s3-provider-presets

Conversation

@Xuanwo

@Xuanwo Xuanwo commented Aug 2, 2026

Copy link
Copy Markdown
Member

Which issue does this PR close?

Part of #8003.

Rationale for this change

Cloudflare R2 and MinIO expose S3-compatible APIs, but each provider has a smaller configuration contract and distinct endpoint, region, and credential rules. Requiring users to configure them through the generic s3 service adds avoidable setup and exposes options that do not belong to those providers.

Dedicated presets provide provider-owned defaults and validation while continuing to share the S3 runtime. The generic s3 service remains the escape hatch for the complete S3 configuration surface.

What changes are included in this PR?

  • Add R2/R2Config and Minio/MinioConfig with dedicated r2:// and minio:// schemes.
  • Add independent services-r2 and services-minio facade features. Enabling services-s3 does not enable either preset.
  • Register the new schemes for URI and iterator construction while preserving direct builder construction.
  • Update generated binding configs, service documentation, RFC 7948, and behavior-test planning and fixtures.
  • Keep compatible_services.md as the guide for providers that still use the generic s3 service.

Are there any user-facing changes?

Yes. Rust users can enable only the provider they need and configure its smaller contract. R2 can derive its endpoint from account_id; MinIO requires its deployment endpoint and defaults the signing region to auto. Existing s3 configurations remain unchanged.

How was this change tested?

  • S3 service unit tests: 46 passed.
  • S3 service doctests: 12 passed, 5 ignored.
  • Facade tests passed independently with services-s3, services-r2, and services-minio.
  • Focused Clippy checks passed for the S3 service and all three facade features.
  • Generator tests: 7 passed; regenerated Python, Java, and docs output was reproducible.
  • Behavior planner tests: 8 passed.
  • Repository Rust formatting, Taplo formatting, and git diff --check passed.
  • During implementation, authenticated and anonymous MinIO behavior suites each passed 118 tests. R2 behavior coverage is configured for CI and was not run locally because project credentials were unavailable.

AI Usage Statement

I used OpenAI Codex with GPT-5 to implement and validate this change.

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