<#9990 feat: Add s3-compatible providers in docs a...
# meltano-repo-activity
g
#9990 feat: Add s3-compatible providers in docs and update user agent Pull request opened by goanpeca Description Per the design feedback in #9988, this PR pivots from a dedicated
b2
state backend to documenting Backblaze B2 (and other S3-compatible providers) under the existing
s3
backend. Changes Removed (the rejected backend): •
src/meltano/core/state_store/b2/
(the dedicated
B2StateStoreManager
, its settings module, and
__init__.py
). •
tests/meltano/core/state_store/test_b2.py
(272 LOC). • The 4
b2_*
entry-point registrations in
pyproject.toml
(3 settings + 1 backend). Added under the existing
s3
backend:
• New "Using S3-compatible providers" subsection in
docs/docs/concepts/state_backends.md
, with a Backblaze B2 worked example (YAML config showing endpoint URL plus B2 Application Key ID / Application Key as the AWS access key pair). • A User-Agent gate in `S3StateStoreManager.client`: when
endpoint_url
contains
"<http://b2.com|b2.com>"
, the boto3 client is built with
Config(user_agent_extra="b2ai-meltano")
. No new settings, no user-facing config surface, no behaviour change for AWS or other endpoints. This lets B2-side log analysis identify traffic from this integration on shared buckets, following the convention MLflow already ships in its B2 artifact repo. Happy to drop this single conditional if you'd prefer the diff stay strictly docs-only. • 2 tests covering both branches of the gate (B2 endpoint attaches the suffix; AWS endpoint does not). The external state-backend route (the
meltano-state-backend-snowflake
model) is deferred for future work, per the issue thread. Checklist • I have read the contribution guide Was generative AI tooling used to co-author this PR? • Yes (Claude / Anthropic) Generated-by: Claude (Anthropic) following the agentic coding guidelines Related Issues • Closes #9988 Summary by Sourcery Document use of S3-compatible providers for state backends and tag Backblaze B2 traffic via a custom user agent in the S3 state backend client. New Features: • Support tagging Backblaze B2 S3-compatible requests from the S3 state backend with a custom user agent suffix when a B2 endpoint is configured. Enhancements: • Allow the S3 state backend client to be configured with a generic endpoint URL via shared client keyword arguments instead of only default AWS endpoints. Documentation: • Describe how to use S3-compatible storage providers with the existing S3 state backend, including a concrete Backblaze B2 configuration example. Tests: • Add tests verifying that the custom user agent suffix is applied for Backblaze B2 endpoints and omitted for standard AWS S3 endpoints. meltano/meltano