GitHub
05/06/2026, 2:44 PMb2 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/meltanoGitHub
05/06/2026, 11:09 PM