S3 API support
Operation-by-operation support, verified against the dispatcher and the ceph/s3-tests suite (every AWS-relevant object-API test passes). ✅ implemented · ➖ not implemented.
Buckets
| Operation | Notes | |
|---|---|---|
| CreateBucket / DeleteBucket / HeadBucket / ListBuckets | ✅ | |
| ListObjects / ListObjectsV2 | ✅ | delimiter, prefix, continuation tokens |
| ListObjectVersions | ✅ | |
| GetBucketLocation | ✅ | |
| Get/PutBucketVersioning | ✅ | |
| Get/PutBucketAcl | ✅ | canned + explicit grants |
| Get/Put/DeleteBucketPolicy · GetBucketPolicyStatus | ✅ | condition keys supported |
| Get/Put/DeleteBucketCors | ✅ | per-bucket rules + preflight |
| Get/Put/DeleteBucketWebsite | ✅ | static website hosting |
| Get/Put/DeleteBucketLifecycle | ✅ | expiration rules enforced |
| Get/PutObjectLockConfiguration | ✅ | |
| Get/Put/DeleteBucketEncryption | ✅ | default encryption |
| Get/Put/DeleteBucketTagging | ✅ | |
| Get/PutBucketNotification | ✅ | webhook delivery to http(s):// destinations — see Bucket notifications |
| Get/Put/DeleteBucketReplication | ✅ | enforced — durable queued replication to local or remote buckets, priority rules, delete markers, x-amz-replication-status; requires source versioning |
| Get/PutBucketAccelerate | ✅ | |
| Get/PutBucketRequestPayment | ✅ | |
| Get/PutBucketLogging | ✅ | access logs delivered to target bucket |
| Get/Put/DeleteBucketOwnershipControls | ✅ | |
| Get/Put/DeletePublicAccessBlock | ✅ | |
| DeleteObjects (bulk) | ✅ | 1000-object cap, Quiet, per-object VersionId, governance bypass, preconditions |
| Metrics / Inventory / Analytics / Intelligent-Tiering configuration | ➖ | analytics family; rarely used by SDKs |
Objects
| Operation | Notes | |
|---|---|---|
| PutObject / GetObject / HeadObject / DeleteObject | ✅ | Range, all If-* conditionals, response-* overrides, versionId |
| CopyObject | ✅ | metadata directives, encryption re-wrap |
| Get/Put/DeleteObjectTagging | ✅ | |
| Get/PutObjectAcl | ✅ | |
| Get/PutObjectLegalHold | ✅ | |
| Get/PutObjectRetention | ✅ | governance & compliance |
| GetObjectAttributes | ✅ | |
| RestoreObject | ✅ | |
| SelectObjectContent | ✅ | SQL over CSV/JSON, event-stream framing |
| GetObjectTorrent | ➖ | deprecated by AWS |
Multipart
| Operation | |
|---|---|
| CreateMultipartUpload | ✅ (tagging, SSE, checksums, object-lock headers) |
| UploadPart | ✅ |
| UploadPartCopy | ✅ (source ranges) |
| CompleteMultipartUpload | ✅ |
| AbortMultipartUpload | ✅ |
| ListParts | ✅ |
| ListMultipartUploads | ✅ |
Auth & presign
| Feature | |
|---|---|
| SigV4 (headers + presigned) | ✅ |
| SigV2 (headers + presigned) | ✅ |
| Streaming chunked signing | ✅ |
| POST-policy browser uploads (V4 + V2) | ✅ |
| Anonymous access (policy / ACL / PAB) | ✅ |
| Presign expiry cap | 7 days (matches AWS) |
Server-side encryption
| Mode | |
|---|---|
| SSE-C | ✅ |
| SSE-S3 | ✅ (requires configured master key, else 501) |
| SSE-KMS | ✅ (same) |
Not implemented
STS/AssumeRole, Object Lambda (WriteGetObjectResponse), S3 Express (CreateSession, directory buckets), BitTorrent, and the analytics configuration family.