Skip to main content

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.