Make compatibility table more colorful

Signed-off-by: Stanislav Bogatyrev <stanislav@nspcc.ru>
This commit is contained in:
Stanislav Bogatyrev 2021-08-19 20:28:16 +03:00 committed by Stanislav Bogatyrev
parent a82e31436e
commit 1f119279e6

View file

@ -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 | |
#### Inventory ## Lifecycle
| Method | Status | | | Method | Comments |
| ---------------------------------- | ----------------------- | |----|---------------------------------|----------|
| DeleteBucketInventoryConfiguration | Unsupported | | 🔴 | DeleteBucketLifecycle | |
| GetBucketInventoryConfiguration | Unsupported | | 🔴 | GetBucketLifecycle | |
| ListBucketInventoryConfigurations | Unsupported | | 🔴 | GetBucketLifecycleConfiguration | |
| PutBucketInventoryConfiguration | Unsupported | | 🔴 | PutBucketLifecycle | |
| 🔴 | PutBucketLifecycleConfiguration | |
#### Lifecycle ## Logging
| Method | Status | | | Method | Comments |
| ------------------------------- | ----------------------- | |----|------------------|----------|
| DeleteBucketLifecycle | Unsupported | | 🔴 | GetBucketLogging | |
| GetBucketLifecycle | Unsupported | | 🔴 | PutBucketLogging | |
| GetBucketLifecycleConfiguration | Unsupported |
| PutBucketLifecycle | Unsupported |
| PutBucketLifecycleConfiguration | Unsupported |
#### Logging ## Metrics
| Method | Status | | | Method | Comments |
| ------------------------- | ----------------------- | |----|----------------------------------|----------|
| GetBucketLogging | Unsupported | | 🔴 | DeleteBucketMetricsConfiguration | |
| PutBucketLogging | Unsupported | | 🔴 | GetBucketMetricsConfiguration | |
| 🔴 | ListBucketMetricsConfigurations | |
| 🔴 | PutBucketMetricsConfiguration | |
#### Metrics ## Notifications
| Method | Status | | | Method | Comments |
| -------------------------------- | ----------------------- | |----|------------------------------------|---------------|
| DeleteBucketMetricsConfiguration | Unsupported | | 🔴 | GetBucketNotification | |
| GetBucketMetricsConfiguration | Unsupported | | 🔴 | GetBucketNotificationConfiguration | |
| ListBucketMetricsConfigurations | Unsupported | | 🔴 | ListenBucketNotification | non-standard? |
| PutBucketMetricsConfiguration | Unsupported | | 🔴 | PutBucketNotification | |
| 🔴 | PutBucketNotificationConfiguration | |
#### Notifications ## Ownership controls
| Method | Status | | | Method | Comments |
| ---------------------------------- | ----------------------- | |----|-------------------------------|----------|
| GetBucketNotification | Unsupported | | 🔴 | DeleteBucketOwnershipControls | |
| GetBucketNotificationConfiguration | Unsupported | | 🔴 | GetBucketOwnershipControls | |
| ListenBucketNotification | Unsupported, non-standard? | | 🔴 | PutBucketOwnershipControls | |
| PutBucketNotification | Unsupported |
| PutBucketNotificationConfiguration | Unsupported |
#### Ownership controls ## Policy and replication
| Method | Status | | | Method | Comments |
| ----------------------------- | ----------------------- | |----|-------------------------|---------------|
| DeleteBucketOwnershipControls | Unsupported | | 🔴 | DeleteBucketPolicy | |
| GetBucketOwnershipControls | Unsupported | | 🔴 | DeleteBucketReplication | |
| PutBucketOwnershipControls | Unsupported | | 🔴 | DeletePublicAccessBlock | |
| 🟢 | GetBucketPolicy | |
| 🔴 | GetBucketPolicyStatus | |
| 🔴 | GetBucketReplication | |
| 🔴 | PostPolicyBucket | non-standard? |
| 🟢 | PutBucketPolicy | |
| 🔴 | PutBucketReplication | |
#### Policy and replication ## Request payment
| Method | Status | | | Method | Comments |
| ----------------------- | ----------------------- | |----|-------------------------|----------|
| DeleteBucketPolicy | Unsupported | | 🔵 | GetBucketRequestPayment | |
| DeleteBucketReplication | Unsupported | | 🔵 | PutBucketRequestPayment | |
| DeletePublicAccessBlock | Unsupported |
| GetBucketPolicy | Supported |
| GetBucketPolicyStatus | Unsupported |
| GetBucketReplication | Unsupported |
| PostPolicyBucket | Unsupported, non-standard? |
| PutBucketPolicy | Supported |
| PutBucketReplication | Unsupported |
#### Request payment ## Tagging
| Method | Status | | | Method | Comments |
| ------------------------- | ----------------------- | |----|---------------------|----------|
| GetBucketRequestPayment | Unsupported | | 🔴 | DeleteBucketTagging | |
| PutBucketRequestPayment | Unsupported | | 🔴 | GetBucketTagging | |
| 🔴 | PutBucketTagging | |
#### Tagging ## Tiering
| Method | Status | | | Method | Comments |
| ----------------------- | ----------------------- | |----|---------------------------------------------|----------|
| DeleteBucketTagging | Unsupported | | 🔴 | DeleteBucketIntelligentTieringConfiguration | |
| GetBucketTagging | Unsupported | | 🔴 | GetBucketIntelligentTieringConfiguration | |
| PutBucketTagging | Unsupported | | 🔴 | ListBucketIntelligentTieringConfigurations | |
| 🟢 | PutBucketIntelligentTieringConfiguration | |
#### Tiering ## Versioning
| Method | Status | | | Method | Comments |
| ---------------------------------------------- | ----------------------- | |----|---------------------|----------|
| DeleteBucketIntelligentTieringConfiguration | Unsupported | | 🔴 | GetBucketVersioning | |
| GetBucketIntelligentTieringConfiguration | Unsupported | | 🔴 | PutBucketVersioning | |
| ListBucketIntelligentTieringConfigurations | Unsupported |
| PutBucketIntelligentTieringConfiguration | Unsupported |
#### Versioning ## Website
| Method | Status | | | Method | Comments |
| ------------------------- | ----------------------- | |----|---------------------|----------|
| GetBucketVersioning | Unsupported | | 🔴 | DeleteBucketWebsite | |
| PutBucketVersioning | Unsupported | | 🔴 | GetBucketWebsite | |
| 🔴 | PutBucketWebsite | |
#### Website
| Method | Status |
| ------------------------- | ----------------------- |
| DeleteBucketWebsite | Unsupported |
| GetBucketWebsite | Unsupported |
| PutBucketWebsite | Unsupported |