garage/doc/book/reference-manual/s3-compatibility.md

17 KiB

+++ title = "S3 Compatibility status" weight = 20 +++

Global S3 features

Implemented:

  • path-style URLs (garage.tld/bucket/key)
  • vhost-style URLs (bucket.garage.tld/key)
  • putting and getting objects in buckets
  • multipart uploads
  • listing objects
  • access control on a per-access-key-per-bucket basis
  • CORS headers on web endpoint

Not implemented:

Endpoint implementation

All APIs that are not implemented will return a 501 Not Implemented.

Core

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

Endpoint Garage Openstack Swift Ceph Object Gateway Riak CS
AbortMultipartUpload Implemented
CompleteMultipartUpload Implemented
CreateMultipartUpload Implemented
ListMultipartUpload Implemented
ListParts Implemented
UploadPart Implemented
UploadPartCopy Implemented

Website

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

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. 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

Endpoint Garage Openstack Swift Ceph Object Gateway Riak CS
DeleteBucketLifecycle Missing
GetBucketLifecycleConfiguration Missing
PutBucketLifecycleConfiguration Missing
GetBucketVersioning Stub (see below)
ListObjectVersions Missing
PutBucketVersioning Missing

Replication

Endpoint Garage Openstack Swift Ceph Object Gateway Riak CS
DeleteBucketReplication Missing
GetBucketReplication Missing
PutBucketReplication Missing

Amazon specific

Endpoint Garage Openstack Swift Ceph Object Gateway Riak CS
DeleteBucketAnalyticsConfiguration Missing
DeleteBucketEncryption Missing
DeleteBucketIntelligentTieringConfiguration Missing
DeleteBucketInventoryConfiguration Missing
DeleteBucketMetricsConfiguration Missing
DeleteBucketOwnershipControls Missing
DeleteBucketTagging Missing
DeleteObjectTagging Missing
DeletePublicAccessBlock Missing
GetBucketAccelerateConfiguration Missing
GetBucketAnalyticsConfiguration Missing
GetBucketEncryption Missing
GetBucketIntelligentTieringConfiguration Missing
GetBucketInventoryConfiguration Missing
GetBucketLogging Missing
GetBucketMetricsConfiguration Missing
GetBucketNotificationConfiguration Missing
GetBucketOwnershipControls Missing
GetBucketRequestPayment Missing
GetBucketTagging Missing
GetObjectLegalHold Missing
GetObjectLockConfiguration Missing
GetObjectRetention Missing
GetObjectTagging Missing
GetObjectTorrent Missing
GetPublicAccessBlock Missing
ListBucketAnalyticsConfigurations Missing
ListBucketIntelligentTieringConfigurations Missing
ListBucketInventoryConfigurations Missing
ListBucketMetricsConfigurations Missing
PutBucketAccelerateConfiguration Missing
PutBucketAnalyticsConfiguration Missing
PutBucketEncryption Missing
PutBucketIntelligentTieringConfiguration Missing
PutBucketInventoryConfiguration Missing
PutBucketLogging Missing
PutBucketMetricsConfiguration Missing
PutBucketNotificationConfiguration Missing
PutBucketOwnershipControls Missing
PutBucketRequestPayment Missing
PutBucketTagging Missing
PutObjectLegalHold Missing
PutObjectLockConfiguration Missing
PutObjectRetention Missing
PutObjectTagging Missing
PutPublicAccessBlock Missing
RestoreObject Missing
SelectObjectContent Missing
  • 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.