forked from TrueCloudLab/frostfs-s3-gw
Move S3 compatibility docs to a separate file
Signed-off-by: Stanislav Bogatyrev <stanislav@nspcc.ru>
This commit is contained in:
parent
1548809b7d
commit
a82e31436e
2 changed files with 241 additions and 240 deletions
241
README.md
241
README.md
|
@ -58,244 +58,5 @@ $ S3_GW_PEERS_0_ADDRESS=grpcs://192.168.130.72:8080 \
|
|||
- [Configuration](./docs/configuration.md)
|
||||
- [NeoFS AuthMate](./docs/authmate.md)
|
||||
- [AWS CLI basic usage](./docs/aws_cli.md)
|
||||
- [AWS S3 API compatibility](./docs/aws_s3_compat.md)
|
||||
|
||||
## S3 API supported
|
||||
|
||||
Reference:
|
||||
* [AWS S3 API Reference](https://docs.aws.amazon.com/AmazonS3/latest/API/s3-api.pdf)
|
||||
|
||||
### Limitations
|
||||
#### ACL
|
||||
For now there are some restrictions:
|
||||
* [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)
|
||||
* 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 | Status |
|
||||
| ------------------------- | ----------------------- |
|
||||
| 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 | Status |
|
||||
| ------------------------- | ----------------------- |
|
||||
| GetObjectAcl | Supported |
|
||||
| PutObjectAcl | Supported |
|
||||
|
||||
#### Locking
|
||||
|
||||
| Method | Status |
|
||||
| ------------------------- | ----------------------- |
|
||||
| GetObjectLegalHold | Unsupported |
|
||||
| GetObjectLockConfiguration| Unsupported, aka GetBucketObjectLockConfig |
|
||||
| GetObjectRetention | Unsupported |
|
||||
| PutObjectLegalHold | Unsupported |
|
||||
| PutObjectLockConfiguration| Unsupported, aka PutBucketObjectLockConfig |
|
||||
| PutObjectRetention | Unsupported |
|
||||
|
||||
#### Multipart
|
||||
|
||||
Should be supported eventually.
|
||||
|
||||
| Method | Status |
|
||||
| ------------------------- | ----------------------- |
|
||||
| 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.
|
||||
|
||||
| Method | Status |
|
||||
| ------------------------- | ----------------------- |
|
||||
| ListObjectVersions | Supported (null-versioning), aka ListBucketObjectVersions |
|
||||
| RestoreObject | Unsupported |
|
||||
|
||||
### Bucket
|
||||
|
||||
| Method | Status |
|
||||
| ------------------------- | ----------------------- |
|
||||
| CreateBucket | Supported, aka PutBucket |
|
||||
| DeleteBucket | Supported |
|
||||
| GetBucketLocation | Unsupported |
|
||||
| HeadBucket | Supported |
|
||||
| ListBuckets | Supported |
|
||||
| PutPublicAccessBlock | Unsupported |
|
||||
|
||||
#### Acceleration
|
||||
|
||||
| Method | Status |
|
||||
| ---------------------------------- | ----------------------- |
|
||||
| GetBucketAccelerateConfiguration | Unsupported, aka GetBucketAccelerate |
|
||||
| PutBucketAccelerateConfiguration | Unsupported |
|
||||
|
||||
#### ACL
|
||||
|
||||
| Method | Status |
|
||||
| ------------------------- | ----------------------- |
|
||||
| GetBucketAcl | Supported |
|
||||
| PutBucketAcl | Supported |
|
||||
|
||||
#### Analytics
|
||||
|
||||
| Method | Status |
|
||||
| ---------------------------------- | ----------------------- |
|
||||
| DeleteBucketAnalyticsConfiguration | Unsupported |
|
||||
| GetBucketAnalyticsConfiguration | Unsupported |
|
||||
| ListBucketAnalyticsConfigurations | Unsupported |
|
||||
| PutBucketAnalyticsConfiguration | Unsupported |
|
||||
|
||||
|
||||
#### Cors
|
||||
|
||||
| Method | Status |
|
||||
| ------------------------- | ----------------------- |
|
||||
| DeleteBucketCors | Unsupported |
|
||||
| GetBucketCors | Unsupported |
|
||||
| PutBucketCors | Unsupported |
|
||||
|
||||
|
||||
#### Encryption
|
||||
|
||||
| Method | Status |
|
||||
| ------------------------- | ----------------------- |
|
||||
| DeleteBucketEncryption | Unsupported |
|
||||
| GetBucketEncryption | Unsupported |
|
||||
| PutBucketEncryption | Unsupported |
|
||||
|
||||
#### Inventory
|
||||
|
||||
| Method | Status |
|
||||
| ---------------------------------- | ----------------------- |
|
||||
| DeleteBucketInventoryConfiguration | Unsupported |
|
||||
| GetBucketInventoryConfiguration | Unsupported |
|
||||
| ListBucketInventoryConfigurations | Unsupported |
|
||||
| PutBucketInventoryConfiguration | Unsupported |
|
||||
|
||||
#### Lifecycle
|
||||
|
||||
| Method | Status |
|
||||
| ------------------------------- | ----------------------- |
|
||||
| DeleteBucketLifecycle | Unsupported |
|
||||
| GetBucketLifecycle | Unsupported |
|
||||
| GetBucketLifecycleConfiguration | Unsupported |
|
||||
| PutBucketLifecycle | Unsupported |
|
||||
| PutBucketLifecycleConfiguration | Unsupported |
|
||||
|
||||
#### Logging
|
||||
|
||||
| Method | Status |
|
||||
| ------------------------- | ----------------------- |
|
||||
| GetBucketLogging | Unsupported |
|
||||
| PutBucketLogging | Unsupported |
|
||||
|
||||
#### Metrics
|
||||
|
||||
| Method | Status |
|
||||
| -------------------------------- | ----------------------- |
|
||||
| DeleteBucketMetricsConfiguration | Unsupported |
|
||||
| GetBucketMetricsConfiguration | Unsupported |
|
||||
| ListBucketMetricsConfigurations | Unsupported |
|
||||
| PutBucketMetricsConfiguration | Unsupported |
|
||||
|
||||
#### Notifications
|
||||
|
||||
| Method | Status |
|
||||
| ---------------------------------- | ----------------------- |
|
||||
| GetBucketNotification | Unsupported |
|
||||
| GetBucketNotificationConfiguration | Unsupported |
|
||||
| ListenBucketNotification | Unsupported, non-standard? |
|
||||
| PutBucketNotification | Unsupported |
|
||||
| PutBucketNotificationConfiguration | Unsupported |
|
||||
|
||||
#### Ownership controls
|
||||
|
||||
| Method | Status |
|
||||
| ----------------------------- | ----------------------- |
|
||||
| DeleteBucketOwnershipControls | Unsupported |
|
||||
| GetBucketOwnershipControls | Unsupported |
|
||||
| PutBucketOwnershipControls | Unsupported |
|
||||
|
||||
#### Policy and replication
|
||||
|
||||
| Method | Status |
|
||||
| ----------------------- | ----------------------- |
|
||||
| DeleteBucketPolicy | Unsupported |
|
||||
| DeleteBucketReplication | Unsupported |
|
||||
| DeletePublicAccessBlock | Unsupported |
|
||||
| GetBucketPolicy | Supported |
|
||||
| GetBucketPolicyStatus | Unsupported |
|
||||
| GetBucketReplication | Unsupported |
|
||||
| PostPolicyBucket | Unsupported, non-standard? |
|
||||
| PutBucketPolicy | Supported |
|
||||
| PutBucketReplication | Unsupported |
|
||||
|
||||
#### Request payment
|
||||
|
||||
| Method | Status |
|
||||
| ------------------------- | ----------------------- |
|
||||
| GetBucketRequestPayment | Unsupported |
|
||||
| PutBucketRequestPayment | Unsupported |
|
||||
|
||||
#### Tagging
|
||||
|
||||
| Method | Status |
|
||||
| ----------------------- | ----------------------- |
|
||||
| DeleteBucketTagging | Unsupported |
|
||||
| GetBucketTagging | Unsupported |
|
||||
| PutBucketTagging | Unsupported |
|
||||
|
||||
#### Tiering
|
||||
|
||||
| Method | Status |
|
||||
| ---------------------------------------------- | ----------------------- |
|
||||
| DeleteBucketIntelligentTieringConfiguration | Unsupported |
|
||||
| GetBucketIntelligentTieringConfiguration | Unsupported |
|
||||
| ListBucketIntelligentTieringConfigurations | Unsupported |
|
||||
| PutBucketIntelligentTieringConfiguration | Unsupported |
|
||||
|
||||
#### Versioning
|
||||
|
||||
| Method | Status |
|
||||
| ------------------------- | ----------------------- |
|
||||
| GetBucketVersioning | Unsupported |
|
||||
| PutBucketVersioning | Unsupported |
|
||||
|
||||
#### Website
|
||||
|
||||
| Method | Status |
|
||||
| ------------------------- | ----------------------- |
|
||||
| DeleteBucketWebsite | Unsupported |
|
||||
| GetBucketWebsite | Unsupported |
|
||||
| PutBucketWebsite | Unsupported |
|
||||
|
|
240
docs/aws_s3_compat.md
Normal file
240
docs/aws_s3_compat.md
Normal file
|
@ -0,0 +1,240 @@
|
|||
## S3 API support
|
||||
|
||||
Reference:
|
||||
* [AWS S3 API Reference](https://docs.aws.amazon.com/AmazonS3/latest/API/s3-api.pdf)
|
||||
|
||||
### Limitations
|
||||
#### ACL
|
||||
For now there are some restrictions:
|
||||
* [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)
|
||||
* 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 | Status |
|
||||
| ------------------------- | ----------------------- |
|
||||
| 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 | Status |
|
||||
| ------------------------- | ----------------------- |
|
||||
| GetObjectAcl | Supported |
|
||||
| PutObjectAcl | Supported |
|
||||
|
||||
#### Locking
|
||||
|
||||
| Method | Status |
|
||||
| ------------------------- | ----------------------- |
|
||||
| GetObjectLegalHold | Unsupported |
|
||||
| GetObjectLockConfiguration | Unsupported, aka GetBucketObjectLockConfig |
|
||||
| GetObjectRetention | Unsupported |
|
||||
| PutObjectLegalHold | Unsupported |
|
||||
| PutObjectLockConfiguration | Unsupported, aka PutBucketObjectLockConfig |
|
||||
| PutObjectRetention | Unsupported |
|
||||
|
||||
#### Multipart
|
||||
|
||||
Should be supported eventually.
|
||||
|
||||
| Method | Status |
|
||||
| ------------------------- | ----------------------- |
|
||||
| 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.
|
||||
|
||||
| Method | Status |
|
||||
| ------------------------- | ----------------------- |
|
||||
| ListObjectVersions | Supported (null-versioning), aka ListBucketObjectVersions |
|
||||
| RestoreObject | Unsupported |
|
||||
|
||||
### Bucket
|
||||
|
||||
| Method | Status |
|
||||
| ------------------------- | ----------------------- |
|
||||
| CreateBucket | Supported, aka PutBucket |
|
||||
| DeleteBucket | Supported |
|
||||
| GetBucketLocation | Unsupported |
|
||||
| HeadBucket | Supported |
|
||||
| ListBuckets | Supported |
|
||||
| PutPublicAccessBlock | Unsupported |
|
||||
|
||||
#### Acceleration
|
||||
|
||||
| Method | Status |
|
||||
| ---------------------------------- | ----------------------- |
|
||||
| GetBucketAccelerateConfiguration | Unsupported, aka GetBucketAccelerate |
|
||||
| PutBucketAccelerateConfiguration | Unsupported |
|
||||
|
||||
#### ACL
|
||||
|
||||
| Method | Status |
|
||||
| ------------------------- | ----------------------- |
|
||||
| GetBucketAcl | Supported |
|
||||
| PutBucketAcl | Supported |
|
||||
|
||||
#### Analytics
|
||||
|
||||
| Method | Status |
|
||||
| ---------------------------------- | ----------------------- |
|
||||
| DeleteBucketAnalyticsConfiguration | Unsupported |
|
||||
| GetBucketAnalyticsConfiguration | Unsupported |
|
||||
| ListBucketAnalyticsConfigurations | Unsupported |
|
||||
| PutBucketAnalyticsConfiguration | Unsupported |
|
||||
|
||||
|
||||
#### CORS
|
||||
|
||||
| Method | Status |
|
||||
| ------------------------- | ----------------------- |
|
||||
| DeleteBucketCors | Unsupported |
|
||||
| GetBucketCors | Unsupported |
|
||||
| PutBucketCors | Unsupported |
|
||||
|
||||
|
||||
#### Encryption
|
||||
|
||||
| Method | Status |
|
||||
| ------------------------- | ----------------------- |
|
||||
| DeleteBucketEncryption | Unsupported |
|
||||
| GetBucketEncryption | Unsupported |
|
||||
| PutBucketEncryption | Unsupported |
|
||||
|
||||
#### Inventory
|
||||
|
||||
| Method | Status |
|
||||
| ---------------------------------- | ----------------------- |
|
||||
| DeleteBucketInventoryConfiguration | Unsupported |
|
||||
| GetBucketInventoryConfiguration | Unsupported |
|
||||
| ListBucketInventoryConfigurations | Unsupported |
|
||||
| PutBucketInventoryConfiguration | Unsupported |
|
||||
|
||||
#### Lifecycle
|
||||
|
||||
| Method | Status |
|
||||
| ------------------------------- | ----------------------- |
|
||||
| DeleteBucketLifecycle | Unsupported |
|
||||
| GetBucketLifecycle | Unsupported |
|
||||
| GetBucketLifecycleConfiguration | Unsupported |
|
||||
| PutBucketLifecycle | Unsupported |
|
||||
| PutBucketLifecycleConfiguration | Unsupported |
|
||||
|
||||
#### Logging
|
||||
|
||||
| Method | Status |
|
||||
| ------------------------- | ----------------------- |
|
||||
| GetBucketLogging | Unsupported |
|
||||
| PutBucketLogging | Unsupported |
|
||||
|
||||
#### Metrics
|
||||
|
||||
| Method | Status |
|
||||
| -------------------------------- | ----------------------- |
|
||||
| DeleteBucketMetricsConfiguration | Unsupported |
|
||||
| GetBucketMetricsConfiguration | Unsupported |
|
||||
| ListBucketMetricsConfigurations | Unsupported |
|
||||
| PutBucketMetricsConfiguration | Unsupported |
|
||||
|
||||
#### Notifications
|
||||
|
||||
| Method | Status |
|
||||
| ---------------------------------- | ----------------------- |
|
||||
| GetBucketNotification | Unsupported |
|
||||
| GetBucketNotificationConfiguration | Unsupported |
|
||||
| ListenBucketNotification | Unsupported, non-standard? |
|
||||
| PutBucketNotification | Unsupported |
|
||||
| PutBucketNotificationConfiguration | Unsupported |
|
||||
|
||||
#### Ownership controls
|
||||
|
||||
| Method | Status |
|
||||
| ----------------------------- | ----------------------- |
|
||||
| DeleteBucketOwnershipControls | Unsupported |
|
||||
| GetBucketOwnershipControls | Unsupported |
|
||||
| PutBucketOwnershipControls | Unsupported |
|
||||
|
||||
#### Policy and replication
|
||||
|
||||
| Method | Status |
|
||||
| ----------------------- | ----------------------- |
|
||||
| DeleteBucketPolicy | Unsupported |
|
||||
| DeleteBucketReplication | Unsupported |
|
||||
| DeletePublicAccessBlock | Unsupported |
|
||||
| GetBucketPolicy | Supported |
|
||||
| GetBucketPolicyStatus | Unsupported |
|
||||
| GetBucketReplication | Unsupported |
|
||||
| PostPolicyBucket | Unsupported, non-standard? |
|
||||
| PutBucketPolicy | Supported |
|
||||
| PutBucketReplication | Unsupported |
|
||||
|
||||
#### Request payment
|
||||
|
||||
| Method | Status |
|
||||
| ------------------------- | ----------------------- |
|
||||
| GetBucketRequestPayment | Unsupported |
|
||||
| PutBucketRequestPayment | Unsupported |
|
||||
|
||||
#### Tagging
|
||||
|
||||
| Method | Status |
|
||||
| ----------------------- | ----------------------- |
|
||||
| DeleteBucketTagging | Unsupported |
|
||||
| GetBucketTagging | Unsupported |
|
||||
| PutBucketTagging | Unsupported |
|
||||
|
||||
#### Tiering
|
||||
|
||||
| Method | Status |
|
||||
| ---------------------------------------------- | ----------------------- |
|
||||
| DeleteBucketIntelligentTieringConfiguration | Unsupported |
|
||||
| GetBucketIntelligentTieringConfiguration | Unsupported |
|
||||
| ListBucketIntelligentTieringConfigurations | Unsupported |
|
||||
| PutBucketIntelligentTieringConfiguration | Unsupported |
|
||||
|
||||
#### Versioning
|
||||
|
||||
| Method | Status |
|
||||
| ------------------------- | ----------------------- |
|
||||
| GetBucketVersioning | Unsupported |
|
||||
| PutBucketVersioning | Unsupported |
|
||||
|
||||
#### Website
|
||||
|
||||
| Method | Status |
|
||||
| ------------------------- | ----------------------- |
|
||||
| DeleteBucketWebsite | Unsupported |
|
||||
| GetBucketWebsite | Unsupported |
|
||||
| PutBucketWebsite | Unsupported |
|
Loading…
Reference in a new issue