19 KiB
+++ title = "S3 Compatibility status" weight = 20 +++
Endpoint implementation
All APIs that are missing on Garage will return a 501 Not Implemented.
The compatibility list for other platforms is given only for information purposes and based on available documentation. Some entries might be inexact. Feel free to open a PR to fix this table.
Signatures
Endpoint | Garage | Openstack Swift | Ceph Object Gateway | Riak CS |
---|---|---|---|---|
s3v2 (deprecated) | ❌Missing | ✅ | ||
s3v4 | ✅ Implemented | ✅ |
URL style
Endpoint | Garage | Openstack Swift | Ceph Object Gateway | Riak CS |
---|---|---|---|---|
path-style (eg. host.tld/bucket/key ) |
✅ Implemented | ✅ | ||
vhost-style URL (eg. bucket.host.tld/key ) |
✅ Implemented | ❌ |
Core endoints
Endpoint | Garage | Openstack Swift | Ceph Object Gateway | Riak CS |
---|---|---|---|---|
CreateBucket | ✅ Implemented | ✅ | ||
DeleteBucket | ✅ Implemented | ✅ | ||
GetBucketLocation | ✅ Implemented | ✅ | ||
HeadBucket | ✅ Implemented | ✅ | ||
ListBuckets | ✅ Implemented | ❌ | ||
HeadObject | ✅ Implemented | ✅ | ||
CopyObject | ✅ Implemented | ✅ | ||
DeleteObject | ✅ Implemented | ✅ | ||
DeleteObjects | ✅ Implemented | ✅ | ||
GetObject | ✅ Implemented | ✅ | ||
ListObjects | ✅ Implemented (implementation details below) | ✅ | ||
ListObjectsV2 | ✅ Implemented | ❌ | ||
PutObject | ✅ Implemented | ✅ |
Multipart Upload endpoints
Endpoint | Garage | Openstack Swift | Ceph Object Gateway | Riak CS |
---|---|---|---|---|
AbortMultipartUpload | ✅ Implemented | ✅ | ||
CompleteMultipartUpload | ✅ Implemented | ✅ | ||
CreateMultipartUpload | ✅ Implemented | ✅ | ||
ListMultipartUpload | ✅ Implemented | ✅ | ||
ListParts | ✅ Implemented | ✅ | ||
UploadPart | ✅ Implemented | ✅ | ||
UploadPartCopy | ✅ Implemented | ✅ |
Website endpoints
Endpoint | Garage | Openstack Swift | Ceph Object Gateway | Riak CS |
---|---|---|---|---|
DeleteBucketWebsite | ✅ Implemented | ❌ | ||
GetBucketWebsite | ✅ Implemented | ❌ | ||
PutBucketWebsite | ⚠ Partially implemented (see below) | ❌ | ||
DeleteBucketCors | ✅ Implemented | ❌ | ||
GetBucketCors | ✅ Implemented | ❌ | ||
PutBucketCors | ✅ Implemented | ❌ |
ACL, Policies endpoints
Amazon has 2 access control mechanisms in S3: ACL (legacy) and policies (new one). Garage implements none of them, and has its own system instead, built around a per-access-key-per-bucket logic. See Garage CLI reference manual to learn how to use Garage's permission system.
Endpoint | Garage | Openstack Swift | Ceph Object Gateway | Riak CS |
---|---|---|---|---|
DeleteBucketPolicy | ❌Missing | ❌ | ||
GetBucketPolicy | ❌Missing | ❌ | ||
GetBucketPolicyStatus | ❌Missing | ❌ | ||
PutBucketPolicy | ❌Missing | ❌ | ||
GetBucketAcl | ❌Missing | ✅ | ||
PutBucketAcl | ❌Missing | ✅ | ||
GetObjectAcl | ❌Missing | ✅ | ||
PutObjectAcl | ❌Missing | ✅ |
Versioning, Lifecycle endpoints
Garage does not support (yet) object versioning. If you need this feature, please share your use case in our dedicated issue.
Endpoint | Garage | Openstack Swift | Ceph Object Gateway | Riak CS |
---|---|---|---|---|
DeleteBucketLifecycle | ❌Missing | ❌ | ||
GetBucketLifecycleConfiguration | ❌Missing | ❌ | ||
PutBucketLifecycleConfiguration | ❌Missing | ❌ | ||
GetBucketVersioning | ❌ Stub (see below) | ✅ | ||
ListObjectVersions | ❌Missing | ❌ | ||
PutBucketVersioning | ❌Missing | ❌ |
Replication endpoints
Please open an issue if you have a use case for replication.
Endpoint | Garage | Openstack Swift | Ceph Object Gateway | Riak CS |
---|---|---|---|---|
DeleteBucketReplication | ❌Missing | ❌ | ||
GetBucketReplication | ❌Missing | ❌ | ||
PutBucketReplication | ❌Missing | ❌ |
(Server-side) encryption
We think that you can either encrypt your server partition or do client-side encryption, so we did not implement server-side encryption for Garage. Please open an issue if you have a use case.
Endpoint | Garage | Openstack Swift | Ceph Object Gateway | Riak CS |
---|---|---|---|---|
DeleteBucketEncryption | ❌Missing | ❌ | ||
GetBucketEncryption | ❌Missing | ❌ | ||
PutBucketEncryption | ❌Missing | ❌ |
Amazon specific endpoints
Implementation details
Most x-amz-
headers are not implemented.
Endpoint specific details
-
GetBucketVersioning: Stub implementation (Garage does not yet support versionning so this always returns "versionning not enabled").
-
ListObjects: Implemented, but there isn't a very good specification of what
encoding-type=url
covers so there might be some encoding bugs. In our implementation the url-encoded fields are in the same in ListObjects as they are in ListObjectsV2. -
PutBucketWebsite: Implemented, but only stores the index document suffix and the error document path. Redirects are not supported.