FAQ
Does Chorus Proxy support virtual-hosted style requests?
Chorus Proxy does not natively support virtual-hosted style bucket addressing.
It extracts the bucket name from the URL path. However, Proxy can be configured
to read the bucket name from a custom header or the Host header when the
bucket is not in the path. With this configuration, it can work behind a load
balancer that uses virtual hosts. Additionally, Proxy can forward requests to
underlying storages using virtual-hosted style addressing.
Does Chorus support AWS STS temporary credentials?
Temporary credentials like AWS STS are not currently supported.
How does routing work with ListBuckets?
The ListBuckets operation always goes to the main storage, regardless of
bucket-level routing policies. This ensures a consistent view of all buckets.
Can Chorus work as a tiering solution?
Chorus can achieve tiering-like behavior by not replicating lifecycle policies.
Configure Chorus to skip PutBucketLifecycle replication. Objects will be
replicated to followers but will only expire on the main storage (where the
lifecycle policy applies), effectively keeping older data on the follower.
What is the performance overhead of using Chorus Proxy?
The overhead is minimal—equivalent to a reverse proxy like HAProxy or nginx. Chorus Proxy does not read or modify request bodies; it only adds an extra network hop between the client and the main storage.
Can I export Chorus logs to a log streaming service?
Yes. All Chorus components produce JSON-formatted logs that work with log
collectors like Loki, Fluentd, or any JSON-compatible logging pipeline.
Enable JSON logs in config: log.json: true.
What metrics does Chorus expose?
All components expose Prometheus metrics on the /metrics endpoint (default
port 9090). Available metrics include:
Proxy:
- Request latency by S3 method
- Request error rate by S3 method
Worker:
- Replication lag
- Number of tasks in queue
- Bytes uploaded/downloaded per storage
- API calls per storage
Does Chorus support bucket versioning?
Yes. Chorus replicates versioned objects. For CES, Ceph, and MinIO, Chorus preserves the original version IDs. For other providers, objects are migrated with new version IDs assigned by the destination storage. See S3 API Compatibility for details.
Does Chorus support Object Lock?
Object Lock is not currently supported. See S3 API Compatibility for the full list of supported operations.
What metadata does Chorus replicate?
Chorus replicates standard S3 metadata:
- Object metadata (user-defined headers)
- Object and bucket ACLs
- Object and bucket tags
Vendor-specific metadata (e.g., erasure coding settings) is not replicated as it is storage-implementation specific.
How does Chorus handle Ceph RGW indexless buckets?
Ceph RGW indexless buckets do not support ListObjects, which affects Chorus:
- Initial replication will fail if an indexless bucket is the source, because Chorus cannot list existing objects.
- Indexless buckets work as destinations—Chorus can write to them.
- Live replication works via Proxy or Agent, since ongoing changes do not require listing objects.