Skip to main content

S3 API Compatibility

note
  • Only S3 to S3 replication is supported.
  • Chorus was tested with S3 vendors: Clyso Enterprise Storage (CES), Ceph RGW, AWS S3, Minio. But it should work with any S3-compatible storage.

This table shows which S3 API operations Chorus replicates between storages. The Chorus column indicates whether changes made via that API are captured and replicated to follower storages.

  • 🟢 fully supported - operation is replicated
  • 🟡 partially supported - operation is replicated with limitations
  • 🔴 not supported - operation is not replicated

Bucket​

AWS API                                            ChorusCES   DO      Oracle
CreateBucket🟢🟢🟢🟢
DeleteBucket🟢🟢🟢🟢
HeadBucket🟢🟢🟢🟢
ListBuckets🟢🟢🟢🟢
GetBucketLocation🟢🟢🟢🟢

Bucket Tagging​

AWS API                                            ChorusCES   DO      Oracle
GetBucketTagging🟢🟢🟢🟢
PutBucketTagging🟢🟢🟢🟢
DeleteBucketTagging🟢🟢🟢🟢

Bucket Lifecycle​

AWS API                                            ChorusCES   DO      Oracle
GetBucketLifecycle🔴🟢🟢🔴
DeleteBucketLifecycle🔴🟢🟢🔴
PutBucketLifecycle🔴🟢🟢🔴
GetBucketLifecycleConfiguration🔴🟢🟢🔴
PutBucketLifecycleConfiguration🔴🟢🟢🔴

Bucket Policy​

AWS API                                            ChorusCES   DO      Oracle
GetBucketPolicy🔴🟢🟢🔴
PutBucketPolicy🔴🟢🟢🔴
DeleteBucketPolicy🔴🟢🟢🔴
GetBucketPolicyStatus🔴🟢🟢🔴

Bucket ACL​

AWS API                                            ChorusCES   DO      Oracle
GetBucketAcl🟢🟢🟢🔴
PutBucketAcl🟢🟢🟢🔴

Bucket Versioning​

AWS API                                            ChorusCES   DO      Oracle
GetBucketVersioning🟢*🟢🟢🔴
PutBucketVersioning🟢*🟢🟢🔴

* Versioning support: Chorus migrates versioned objects for all S3-compatible storages. However, retaining the original object version ID is only supported for CES, Ceph, and MinIO. For other providers, objects are migrated with new version IDs assigned by the destination storage.

Bucket Website​

AWS API                                            ChorusCES   DO      Oracle
GetBucketWebsite🔴🟢🔴🔴
PutBucketWebsite🔴🟢🔴🔴
DeleteBucketWebsite🔴🟢🔴🔴

Bucket Replication​

AWS API                                            ChorusCES   DO      Oracle
GetBucketReplication🔴🟡🔴🔴
PutBucketReplication🔴🟡🔴🔴
DeleteBucketReplication🔴🟡🔴🔴

Bucket Notification​

AWS API                                            ChorusCES   DO      Oracle
GetBucketNotification🔴🟡🔴🔴
PutBucketNotification🔴🟡🔴🔴
GetBucketNotificationConfiguration🔴🟡🔴🔴
PutBucketNotificationConfiguration🔴🟡🔴🔴

Bucket Encryption​

AWS API                                            ChorusCES   DO      Oracle
GetBucketEncryption🔴🔴🔴🔴
PutBucketEncryption🔴🔴🔴🔴
DeleteBucketEncryption🔴🔴🔴🔴

Bucket Request Payment​

AWS API                                            ChorusCES   DO      Oracle
GetBucketRequestPayment🔴🟢🔴🔴
PutBucketRequestPayment🔴🟢🔴🔴

Bucket Misc​

AWS API                                            ChorusCES   DO      Oracle
CRUD MetricsConfiguration🔴🔴🔴🔴
CRUD Cors🔴🔴🔴🔴
CRUD AnalyticsConfiguration🔴🔴🔴🔴
CRUD IntelligentTieringConfiguration🔴🔴🔴🔴
CRUD AccelerateConfiguration🔴🔴🔴🔴
CRUD Logging🔴🔴🔴🔴
CRUD OwnershipControls🔴🔴🔴🔴
CRUD InventoryConfiguration🔴🔴🔴🔴

Object​

AWS API                                            ChorusCES   DO      Oracle
GetObject🟢🟢🟢🟢
HeadObject🟢🟢🟢🟢
PutObject🟢🟢🟢🟢
DeleteObject🟢🟢🟢🟢
DeleteObjects🟢🟢🟢🟢
ListObjects🟢🟢🟢🟢
ListObjectsV2🟢🟢🟢🟢
GetObjectAttributes🟢🟢🟢🟢
CopyObject🟢🟢🟢🔴
ListObjectVersions🟢*🟢🟢🔴
RestoreObject🔴🔴🟢🟢
SelectObjectContent🔴🤷🤷🤷
WriteGetObjectResponse🔴🤷🤷🤷

Object Multipart​

AWS API                                            ChorusCES   DO      Oracle
CreateMultipartUpload🟢🟢🟢🟢
UploadPart🟢🟢🟢🟢
CompleteMultipartUpload🟢🟢🟢🟢
AbortMultipartUpload🟢🟢🟢🟢
ListMultipartUploads🟢🟢🟢🟢
ListParts🟢🟢🟢🟢
UploadPartCopy🟢🟢🟢🟢

Object ACL​

AWS API                                            ChorusCES   DO      Oracle
GetObjectAcl🟢🟢🟢🔴
PutObjectAcl🟢🟢🟢🔴

Object Tagging​

AWS API                                            ChorusCES   DO      Oracle
GetObjectTagging🟢🟢🟢🔴
PutObjectTagging🟢🟢🟢🔴
DeleteObjectTagging🟢🟢🟢🔴

Object Misc​

AWS API                                            ChorusCES   DO      Oracle
GetPublicAccessBlock🔴🔴🔴🔴
PutPublicAccessBlock🔴🔴🔴🔴
DeletePublicAccessBlock🔴🔴🔴🔴
GetObjectTorrent🔴🔴🔴🔴
GetObjectRetention🔴🔴🔴🔴
PutObjectRetention🔴🔴🔴🔴
GetObjectLegalHold🔴🔴🔴🔴
PutObjectLegalHold🔴🔴🔴🔴
GetObjectLockConfiguration🔴🔴🔴🔴
PutObjectLockConfiguration🔴🔴🔴🔴