garage/doc/book/src/reference_manual/s3_compatibility.md

99 lines
2.0 KiB
Markdown
Raw Normal View History

# S3 Compatibility status
2021-02-19 18:10:23 +00:00
## Global S3 features
2021-02-19 18:10:23 +00:00
Implemented:
2021-02-19 18:11:55 +00:00
- path-style URLs (`garage.tld/bucket/key`)
2021-02-19 18:10:23 +00:00
- putting and getting objects in buckets
- multipart uploads
- listing objects
- access control on a per-key-per-bucket basis
Not implemented:
2021-02-19 18:11:55 +00:00
- vhost-style URLs (`bucket.garage.tld/key`)
2021-02-19 18:10:23 +00:00
- object-level ACL
2021-05-31 15:23:35 +00:00
- object versioning
2021-02-19 18:10:23 +00:00
- encryption
- most `x-amz-` headers
## Endpoint implementation
2021-02-19 18:10:23 +00:00
All APIs that are not mentionned are not implemented and will return a 400 bad request.
#### AbortMultipartUpload
Implemented.
#### CompleteMultipartUpload
Implemented badly. Garage will not check that all the parts stored correspond to the list given by the client in the request body. This means that the multipart upload might be completed with an invalid size. This is a bug and will be fixed.
#### CopyObject
Implemented.
#### CreateBucket
Garage does not accept creating buckets or giving access using API calls, it has to be done using the CLI tools. CreateBucket will return a 200 if the bucket exists and user has write access, and a 403 Forbidden in all other cases.
#### CreateMultipartUpload
Implemented.
#### DeleteBucket
Garage does not accept deleting buckets using API calls, it has to be done using the CLI tools. This request will return a 403 Forbidden.
#### DeleteObject
Implemented.
#### DeleteObjects
Implemented.
2021-05-31 15:23:35 +00:00
#### GetBucketLocation
Implemented.
#### GetBucketVersioning
Stub implementation (Garage does not yet support versionning so this always returns
"versionning not enabled").
2021-02-19 18:10:23 +00:00
#### GetObject
Implemented.
#### HeadBucket
Implemented.
#### HeadObject
Implemented.
2021-05-31 15:23:35 +00:00
#### ListBuckets
Implemented.
2021-02-19 18:10:23 +00:00
#### 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.
#### ListObjectsV2
Implemented.
#### PutObject
Implemented.
#### UploadPart
Implemented.