forked from TrueCloudLab/frostfs-s3-gw
Make compatibility table more colorful
Signed-off-by: Stanislav Bogatyrev <stanislav@nspcc.ru>
This commit is contained in:
parent
a82e31436e
commit
1f119279e6
1 changed files with 185 additions and 187 deletions
|
@ -1,240 +1,238 @@
|
||||||
## S3 API support
|
# S3 API support
|
||||||
|
|
||||||
Reference:
|
Reference:
|
||||||
* [AWS S3 API Reference](https://docs.aws.amazon.com/AmazonS3/latest/API/s3-api.pdf)
|
* [AWS S3 API Reference](https://docs.aws.amazon.com/AmazonS3/latest/API/s3-api.pdf)
|
||||||
|
|
||||||
### Limitations
|
| | Legend |
|
||||||
#### ACL
|
|----|-------------------------------------------|
|
||||||
For now there are some restrictions:
|
| 🟢 | Supported |
|
||||||
* [Bucket policy](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-policies.html)
|
| 🟡 | Partially supported |
|
||||||
support only one `Principal` (type `AWS`) per `Statement`. To refer all users use `"AWS": "*"`
|
| 🔴 | Not supported yet, but will be in future |
|
||||||
|
| 🔵 | Not applicable or will never be supported |
|
||||||
|
|
||||||
|
## Object
|
||||||
|
|
||||||
|
| | Method | Comments |
|
||||||
|
|----|------------------------|-----------------------------------------|
|
||||||
|
| 🟢 | CopyObject | Done on gateway side |
|
||||||
|
| 🟢 | DeleteObject | |
|
||||||
|
| 🟢 | DeleteObjects | aka DeleteMultipleObjects |
|
||||||
|
| 🟢 | GetObject | |
|
||||||
|
| 🔵 | GetObjectTorrent | We don't plan implementing BT gateway |
|
||||||
|
| 🟢 | HeadObject | |
|
||||||
|
| 🔴 | ListObjectParts | |
|
||||||
|
| 🟢 | ListObjects | |
|
||||||
|
| 🟢 | ListObjectsV2 | |
|
||||||
|
| 🟢 | PutObject | Content-MD5 header deprecated |
|
||||||
|
| 🔴 | SelectObjectContent | Need to have some Lambda to execute SQL |
|
||||||
|
| 🔴 | WriteGetObjectResponse | Waiting for Lambda to be developed |
|
||||||
|
|
||||||
|
## ACL
|
||||||
|
|
||||||
|
For now there are some limitations:
|
||||||
|
* [Bucket policy](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-policies.html) support only one `Principal` (type `AWS`) per `Statement`. To refer all users use `"AWS": "*"`
|
||||||
* AWS conditions and wildcard are not supported in [resources](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-arn-format.html)
|
* AWS conditions and wildcard are not supported in [resources](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-arn-format.html)
|
||||||
* Only `CanonicalUser` (with hex encoded public key) and `All Users Group` are supported in [ACL](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html)
|
* Only `CanonicalUser` (with hex encoded public key) and `All Users Group` are supported in [ACL](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html)
|
||||||
|
|
||||||
### Object
|
| | Method | Comments |
|
||||||
|
|----|--------------|-----------------|
|
||||||
|
| 🟡 | GetObjectAcl | See Limitations |
|
||||||
|
| 🟡 | PutObjectAcl | See Limitations |
|
||||||
|
|
||||||
| Method | Status |
|
## Locking
|
||||||
| ------------------------- | ----------------------- |
|
|
||||||
| CopyObject | Supported |
|
|
||||||
| DeleteObject | Supported |
|
|
||||||
| DeleteObjects | Supported, aka DeleteMultipleObjects |
|
|
||||||
| GetObject | Supported |
|
|
||||||
| GetObjectTorrent | Unsupported, won't be |
|
|
||||||
| HeadObject | Supported |
|
|
||||||
| ListObjectParts | Unsupported |
|
|
||||||
| ListObjects | Supported |
|
|
||||||
| ListObjectsV2 | Supported |
|
|
||||||
| PutObject | Supported (Content-MD5 option is not supported) |
|
|
||||||
| SelectObjectContent | Unsupported |
|
|
||||||
| WriteGetObjectResponse | Unsupported |
|
|
||||||
|
|
||||||
#### ACL
|
| | Method | Comments |
|
||||||
|
|----|----------------------------|---------------------------|
|
||||||
|
| 🔴 | GetObjectLegalHold | |
|
||||||
|
| 🔴 | GetObjectLockConfiguration | GetBucketObjectLockConfig |
|
||||||
|
| 🔴 | GetObjectRetention | |
|
||||||
|
| 🔴 | PutObjectLegalHold | |
|
||||||
|
| 🔴 | PutObjectLockConfiguration | PutBucketObjectLockConfig |
|
||||||
|
| 🔴 | PutObjectRetention | |
|
||||||
|
|
||||||
| Method | Status |
|
## Multipart
|
||||||
| ------------------------- | ----------------------- |
|
|
||||||
| GetObjectAcl | Supported |
|
|
||||||
| PutObjectAcl | Supported |
|
|
||||||
|
|
||||||
#### Locking
|
Should be supported soon.
|
||||||
|
|
||||||
| Method | Status |
|
| | Method | Comments |
|
||||||
| ------------------------- | ----------------------- |
|
|----|-------------------------|------------------------------------------------|
|
||||||
| GetObjectLegalHold | Unsupported |
|
| 🔴 | AbortMultipartUpload | |
|
||||||
| GetObjectLockConfiguration | Unsupported, aka GetBucketObjectLockConfig |
|
| 🔴 | CompleteMultipartUpload | |
|
||||||
| GetObjectRetention | Unsupported |
|
| 🔴 | CreateMultipartUpload | InitiateMultipartUpload and NewMultipartUpload |
|
||||||
| PutObjectLegalHold | Unsupported |
|
| 🔴 | ListMultipartUploads | |
|
||||||
| PutObjectLockConfiguration | Unsupported, aka PutBucketObjectLockConfig |
|
| 🔴 | ListParts | |
|
||||||
| PutObjectRetention | Unsupported |
|
| 🔴 | UploadPart | PutObjectPart |
|
||||||
|
| 🔴 | UploadPartCopy | CopyObjectPart |
|
||||||
|
|
||||||
#### Multipart
|
## Tagging
|
||||||
|
|
||||||
Should be supported eventually.
|
| | Method | Comments |
|
||||||
|
|----|---------------------|----------|
|
||||||
|
| 🔴 | DeleteObjectTagging | |
|
||||||
|
| 🔴 | GetObjectTagging | |
|
||||||
|
| 🔴 | PutObjectTagging | |
|
||||||
|
|
||||||
| Method | Status |
|
## Versioning
|
||||||
| ------------------------- | ----------------------- |
|
|
||||||
| AbortMultipartUpload | Unsupported |
|
|
||||||
| CompleteMultipartUpload | Unsupported |
|
|
||||||
| CreateMultipartUpload | Unsupported, aka InitiateMultipartUpload and NewMultipartUpload |
|
|
||||||
| ListMultipartUploads | Unsupported |
|
|
||||||
| ListParts | Unsupported |
|
|
||||||
| UploadPart | Unsupported, aka PutObjectPart |
|
|
||||||
| UploadPartCopy | Unsupported, aka CopyObjectPart |
|
|
||||||
|
|
||||||
#### Tagging
|
|
||||||
|
|
||||||
Also passed in `PutObject` parameters. We can support adding via `PutObject`
|
|
||||||
and getting via `GetBucketTagging`, but deleting and putting can't be
|
|
||||||
supported normally.
|
|
||||||
|
|
||||||
| Method | Status |
|
|
||||||
| ------------------------- | ----------------------- |
|
|
||||||
| DeleteObjectTagging | Unsupported |
|
|
||||||
| GetObjectTagging | Unsupported |
|
|
||||||
| PutObjectTagging | Unsupported |
|
|
||||||
|
|
||||||
#### Versioning
|
|
||||||
|
|
||||||
See also `GetObject` and other method parameters.
|
See also `GetObject` and other method parameters.
|
||||||
|
|
||||||
| Method | Status |
|
| | Method | Comments |
|
||||||
| ------------------------- | ----------------------- |
|
|----|--------------------|--------------------------|
|
||||||
| ListObjectVersions | Supported (null-versioning), aka ListBucketObjectVersions |
|
| 🟢 | ListObjectVersions | ListBucketObjectVersions |
|
||||||
| RestoreObject | Unsupported |
|
| 🔴 | RestoreObject | |
|
||||||
|
|
||||||
### Bucket
|
## Bucket
|
||||||
|
|
||||||
| Method | Status |
|
| | Method | Comments |
|
||||||
| ------------------------- | ----------------------- |
|
|----|----------------------|-----------|
|
||||||
| CreateBucket | Supported, aka PutBucket |
|
| 🟢 | CreateBucket | PutBucket |
|
||||||
| DeleteBucket | Supported |
|
| 🟢 | DeleteBucket | |
|
||||||
| GetBucketLocation | Unsupported |
|
| 🔴 | GetBucketLocation | |
|
||||||
| HeadBucket | Supported |
|
| 🟢 | HeadBucket | |
|
||||||
| ListBuckets | Supported |
|
| 🟢 | ListBuckets | |
|
||||||
| PutPublicAccessBlock | Unsupported |
|
| 🔴 | PutPublicAccessBlock | |
|
||||||
|
|
||||||
#### Acceleration
|
## Acceleration
|
||||||
|
|
||||||
| Method | Status |
|
| | Method | Comments |
|
||||||
| ---------------------------------- | ----------------------- |
|
|----|----------------------------------|---------------------|
|
||||||
| GetBucketAccelerateConfiguration | Unsupported, aka GetBucketAccelerate |
|
| 🔵 | GetBucketAccelerateConfiguration | GetBucketAccelerate |
|
||||||
| PutBucketAccelerateConfiguration | Unsupported |
|
| 🔵 | PutBucketAccelerateConfiguration | |
|
||||||
|
|
||||||
#### ACL
|
## ACL
|
||||||
|
|
||||||
| Method | Status |
|
| | Method | Comments |
|
||||||
| ------------------------- | ----------------------- |
|
|----|--------------|-----------|
|
||||||
| GetBucketAcl | Supported |
|
| 🟢 | GetBucketAcl | Supported |
|
||||||
| PutBucketAcl | Supported |
|
| 🟢 | PutBucketAcl | Supported |
|
||||||
|
|
||||||
#### Analytics
|
## Analytics
|
||||||
|
|
||||||
| Method | Status |
|
| | Method | Comments |
|
||||||
| ---------------------------------- | ----------------------- |
|
|----|------------------------------------|----------|
|
||||||
| DeleteBucketAnalyticsConfiguration | Unsupported |
|
| 🔴 | DeleteBucketAnalyticsConfiguration | |
|
||||||
| GetBucketAnalyticsConfiguration | Unsupported |
|
| 🔴 | GetBucketAnalyticsConfiguration | |
|
||||||
| ListBucketAnalyticsConfigurations | Unsupported |
|
| 🔴 | ListBucketAnalyticsConfigurations | |
|
||||||
| PutBucketAnalyticsConfiguration | Unsupported |
|
| 🔴 | PutBucketAnalyticsConfiguration | |
|
||||||
|
|
||||||
|
## CORS
|
||||||
|
|
||||||
#### CORS
|
| | Method | Comments |
|
||||||
|
|----|------------------|----------|
|
||||||
|
| 🔴 | DeleteBucketCors | |
|
||||||
|
| 🔴 | GetBucketCors | |
|
||||||
|
| 🔴 | PutBucketCors | |
|
||||||
|
|
||||||
| Method | Status |
|
## Encryption
|
||||||
| ------------------------- | ----------------------- |
|
|
||||||
| DeleteBucketCors | Unsupported |
|
|
||||||
| GetBucketCors | Unsupported |
|
|
||||||
| PutBucketCors | Unsupported |
|
|
||||||
|
|
||||||
|
| | Method | Comments |
|
||||||
|
|----|------------------------|----------|
|
||||||
|
| 🔴 | DeleteBucketEncryption | |
|
||||||
|
| 🔴 | GetBucketEncryption | |
|
||||||
|
| 🔴 | PutBucketEncryption | |
|
||||||
|
|
||||||
#### Encryption
|
## Inventory
|
||||||
|
|
||||||
| Method | Status |
|
| | Method | Comments |
|
||||||
| ------------------------- | ----------------------- |
|
|----|------------------------------------|----------|
|
||||||
| DeleteBucketEncryption | Unsupported |
|
| 🔴 | DeleteBucketInventoryConfiguration | |
|
||||||
| GetBucketEncryption | Unsupported |
|
| 🔴 | GetBucketInventoryConfiguration | |
|
||||||
| PutBucketEncryption | Unsupported |
|
| 🔴 | ListBucketInventoryConfigurations | |
|
||||||
|
| 🔴 | PutBucketInventoryConfiguration | |
|
||||||
|
|
||||||
|
## Lifecycle
|
||||||
|
|
||||||
#### Inventory
|
| | Method | Comments |
|
||||||
|
|----|---------------------------------|----------|
|
||||||
|
| 🔴 | DeleteBucketLifecycle | |
|
||||||
|
| 🔴 | GetBucketLifecycle | |
|
||||||
|
| 🔴 | GetBucketLifecycleConfiguration | |
|
||||||
|
| 🔴 | PutBucketLifecycle | |
|
||||||
|
| 🔴 | PutBucketLifecycleConfiguration | |
|
||||||
|
|
||||||
| Method | Status |
|
## Logging
|
||||||
| ---------------------------------- | ----------------------- |
|
|
||||||
| DeleteBucketInventoryConfiguration | Unsupported |
|
|
||||||
| GetBucketInventoryConfiguration | Unsupported |
|
|
||||||
| ListBucketInventoryConfigurations | Unsupported |
|
|
||||||
| PutBucketInventoryConfiguration | Unsupported |
|
|
||||||
|
|
||||||
#### Lifecycle
|
| | Method | Comments |
|
||||||
|
|----|------------------|----------|
|
||||||
|
| 🔴 | GetBucketLogging | |
|
||||||
|
| 🔴 | PutBucketLogging | |
|
||||||
|
|
||||||
| Method | Status |
|
## Metrics
|
||||||
| ------------------------------- | ----------------------- |
|
|
||||||
| DeleteBucketLifecycle | Unsupported |
|
|
||||||
| GetBucketLifecycle | Unsupported |
|
|
||||||
| GetBucketLifecycleConfiguration | Unsupported |
|
|
||||||
| PutBucketLifecycle | Unsupported |
|
|
||||||
| PutBucketLifecycleConfiguration | Unsupported |
|
|
||||||
|
|
||||||
#### Logging
|
| | Method | Comments |
|
||||||
|
|----|----------------------------------|----------|
|
||||||
|
| 🔴 | DeleteBucketMetricsConfiguration | |
|
||||||
|
| 🔴 | GetBucketMetricsConfiguration | |
|
||||||
|
| 🔴 | ListBucketMetricsConfigurations | |
|
||||||
|
| 🔴 | PutBucketMetricsConfiguration | |
|
||||||
|
|
||||||
| Method | Status |
|
## Notifications
|
||||||
| ------------------------- | ----------------------- |
|
|
||||||
| GetBucketLogging | Unsupported |
|
|
||||||
| PutBucketLogging | Unsupported |
|
|
||||||
|
|
||||||
#### Metrics
|
| | Method | Comments |
|
||||||
|
|----|------------------------------------|---------------|
|
||||||
|
| 🔴 | GetBucketNotification | |
|
||||||
|
| 🔴 | GetBucketNotificationConfiguration | |
|
||||||
|
| 🔴 | ListenBucketNotification | non-standard? |
|
||||||
|
| 🔴 | PutBucketNotification | |
|
||||||
|
| 🔴 | PutBucketNotificationConfiguration | |
|
||||||
|
|
||||||
| Method | Status |
|
## Ownership controls
|
||||||
| -------------------------------- | ----------------------- |
|
|
||||||
| DeleteBucketMetricsConfiguration | Unsupported |
|
|
||||||
| GetBucketMetricsConfiguration | Unsupported |
|
|
||||||
| ListBucketMetricsConfigurations | Unsupported |
|
|
||||||
| PutBucketMetricsConfiguration | Unsupported |
|
|
||||||
|
|
||||||
#### Notifications
|
| | Method | Comments |
|
||||||
|
|----|-------------------------------|----------|
|
||||||
|
| 🔴 | DeleteBucketOwnershipControls | |
|
||||||
|
| 🔴 | GetBucketOwnershipControls | |
|
||||||
|
| 🔴 | PutBucketOwnershipControls | |
|
||||||
|
|
||||||
| Method | Status |
|
## Policy and replication
|
||||||
| ---------------------------------- | ----------------------- |
|
|
||||||
| GetBucketNotification | Unsupported |
|
|
||||||
| GetBucketNotificationConfiguration | Unsupported |
|
|
||||||
| ListenBucketNotification | Unsupported, non-standard? |
|
|
||||||
| PutBucketNotification | Unsupported |
|
|
||||||
| PutBucketNotificationConfiguration | Unsupported |
|
|
||||||
|
|
||||||
#### Ownership controls
|
| | Method | Comments |
|
||||||
|
|----|-------------------------|---------------|
|
||||||
|
| 🔴 | DeleteBucketPolicy | |
|
||||||
|
| 🔴 | DeleteBucketReplication | |
|
||||||
|
| 🔴 | DeletePublicAccessBlock | |
|
||||||
|
| 🟢 | GetBucketPolicy | |
|
||||||
|
| 🔴 | GetBucketPolicyStatus | |
|
||||||
|
| 🔴 | GetBucketReplication | |
|
||||||
|
| 🔴 | PostPolicyBucket | non-standard? |
|
||||||
|
| 🟢 | PutBucketPolicy | |
|
||||||
|
| 🔴 | PutBucketReplication | |
|
||||||
|
|
||||||
| Method | Status |
|
## Request payment
|
||||||
| ----------------------------- | ----------------------- |
|
|
||||||
| DeleteBucketOwnershipControls | Unsupported |
|
|
||||||
| GetBucketOwnershipControls | Unsupported |
|
|
||||||
| PutBucketOwnershipControls | Unsupported |
|
|
||||||
|
|
||||||
#### Policy and replication
|
| | Method | Comments |
|
||||||
|
|----|-------------------------|----------|
|
||||||
|
| 🔵 | GetBucketRequestPayment | |
|
||||||
|
| 🔵 | PutBucketRequestPayment | |
|
||||||
|
|
||||||
| Method | Status |
|
## Tagging
|
||||||
| ----------------------- | ----------------------- |
|
|
||||||
| DeleteBucketPolicy | Unsupported |
|
|
||||||
| DeleteBucketReplication | Unsupported |
|
|
||||||
| DeletePublicAccessBlock | Unsupported |
|
|
||||||
| GetBucketPolicy | Supported |
|
|
||||||
| GetBucketPolicyStatus | Unsupported |
|
|
||||||
| GetBucketReplication | Unsupported |
|
|
||||||
| PostPolicyBucket | Unsupported, non-standard? |
|
|
||||||
| PutBucketPolicy | Supported |
|
|
||||||
| PutBucketReplication | Unsupported |
|
|
||||||
|
|
||||||
#### Request payment
|
| | Method | Comments |
|
||||||
|
|----|---------------------|----------|
|
||||||
|
| 🔴 | DeleteBucketTagging | |
|
||||||
|
| 🔴 | GetBucketTagging | |
|
||||||
|
| 🔴 | PutBucketTagging | |
|
||||||
|
|
||||||
| Method | Status |
|
## Tiering
|
||||||
| ------------------------- | ----------------------- |
|
|
||||||
| GetBucketRequestPayment | Unsupported |
|
|
||||||
| PutBucketRequestPayment | Unsupported |
|
|
||||||
|
|
||||||
#### Tagging
|
| | Method | Comments |
|
||||||
|
|----|---------------------------------------------|----------|
|
||||||
|
| 🔴 | DeleteBucketIntelligentTieringConfiguration | |
|
||||||
|
| 🔴 | GetBucketIntelligentTieringConfiguration | |
|
||||||
|
| 🔴 | ListBucketIntelligentTieringConfigurations | |
|
||||||
|
| 🟢 | PutBucketIntelligentTieringConfiguration | |
|
||||||
|
|
||||||
| Method | Status |
|
## Versioning
|
||||||
| ----------------------- | ----------------------- |
|
|
||||||
| DeleteBucketTagging | Unsupported |
|
|
||||||
| GetBucketTagging | Unsupported |
|
|
||||||
| PutBucketTagging | Unsupported |
|
|
||||||
|
|
||||||
#### Tiering
|
| | Method | Comments |
|
||||||
|
|----|---------------------|----------|
|
||||||
|
| 🔴 | GetBucketVersioning | |
|
||||||
|
| 🔴 | PutBucketVersioning | |
|
||||||
|
|
||||||
| Method | Status |
|
## Website
|
||||||
| ---------------------------------------------- | ----------------------- |
|
|
||||||
| DeleteBucketIntelligentTieringConfiguration | Unsupported |
|
|
||||||
| GetBucketIntelligentTieringConfiguration | Unsupported |
|
|
||||||
| ListBucketIntelligentTieringConfigurations | Unsupported |
|
|
||||||
| PutBucketIntelligentTieringConfiguration | Unsupported |
|
|
||||||
|
|
||||||
#### Versioning
|
| | Method | Comments |
|
||||||
|
|----|---------------------|----------|
|
||||||
| Method | Status |
|
| 🔴 | DeleteBucketWebsite | |
|
||||||
| ------------------------- | ----------------------- |
|
| 🔴 | GetBucketWebsite | |
|
||||||
| GetBucketVersioning | Unsupported |
|
| 🔴 | PutBucketWebsite | |
|
||||||
| PutBucketVersioning | Unsupported |
|
|
||||||
|
|
||||||
#### Website
|
|
||||||
|
|
||||||
| Method | Status |
|
|
||||||
| ------------------------- | ----------------------- |
|
|
||||||
| DeleteBucketWebsite | Unsupported |
|
|
||||||
| GetBucketWebsite | Unsupported |
|
|
||||||
| PutBucketWebsite | Unsupported |
|
|
||||||
|
|
Loading…
Reference in a new issue