S3 Compatibility status

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 mentionned are not implemented and will return a 501 Not Implemented.

EndpointStatus
AbortMultipartUploadImplemented
CompleteMultipartUploadImplemented
CopyObjectImplemented
CreateBucketImplemented
CreateMultipartUploadImplemented
DeleteBucketImplemented
DeleteBucketCorsImplemented
DeleteBucketWebsiteImplemented
DeleteObjectImplemented
DeleteObjectsImplemented
GetBucketCorsImplemented
GetBucketLocationImplemented
GetBucketVersioningStub (see below)
GetBucketWebsiteImplemented
GetObjectImplemented
HeadBucketImplemented
HeadObjectImplemented
ListBucketsImplemented
ListObjectsImplemented, bugs? (see below)
ListObjectsV2Implemented
ListMultipartUploadImplemented
ListPartsImplemented
PutObjectImplemented
PutBucketCorsImplemented
PutBucketWebsitePartially implemented (see below)
UploadPartImplemented
UploadPartCopyImplemented
  • 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.