frostfs-s3-gw/docs/aws_s3_compat.md

244 lines
9.3 KiB
Markdown

# S3 API support
Reference:
* [AWS S3 API Reference](https://docs.aws.amazon.com/AmazonS3/latest/API/s3-api.pdf)
| | Legend |
|----|-------------------------------------------|
| šŸŸ¢ | Supported |
| šŸŸ” | Partially supported |
| šŸ”µ | 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 | |
| šŸŸ¢ | ListParts | Parts loaded with MultipartUpload |
| šŸŸ¢ | ListObjects | |
| šŸŸ¢ | ListObjectsV2 | |
| šŸŸ¢ | PutObject | Content-MD5 header deprecated |
| šŸ”µ | SelectObjectContent | Need to have some Lambda to execute SQL |
| šŸ”µ | WriteGetObjectResponse | Waiting for Lambda to be developed |
| šŸŸ¢ | GetObjectAttributes | |
## ACL
For now there are some limitations:
* [Bucket policy](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-policies.html) supports 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)
| | Method | Comments |
|----|--------------|-----------------|
| šŸŸ” | GetObjectAcl | See Limitations |
| šŸŸ” | PutObjectAcl | See Limitations |
## Locking
For now there are some limitations:
* Retention period can't be shortened, only extended.
* You can't delete locks or object with unexpired lock.
| | Method | Comments |
|-----|----------------------------|---------------------------|
| šŸŸ” | GetObjectLegalHold | |
| šŸŸ¢ | GetObjectLockConfiguration | GetBucketObjectLockConfig |
| šŸŸ” | GetObjectRetention | |
| šŸŸ” | PutObjectLegalHold | |
| šŸŸ¢ | PutObjectLockConfiguration | PutBucketObjectLockConfig |
| šŸŸ” | PutObjectRetention | |
## Multipart
Should be supported soon.
| | Method | Comments |
|----|-------------------------|----------|
| šŸŸ¢ | AbortMultipartUpload | |
| šŸŸ¢ | CompleteMultipartUpload | |
| šŸŸ¢ | CreateMultipartUpload | |
| šŸŸ¢ | ListMultipartUploads | |
| šŸŸ¢ | ListParts | |
| šŸŸ¢ | UploadPart | |
| šŸŸ¢ | UploadPartCopy | |
## Tagging
| | Method | Comments |
|----|---------------------|----------|
| šŸŸ¢ | DeleteObjectTagging | |
| šŸŸ¢ | GetObjectTagging | |
| šŸŸ¢ | PutObjectTagging | |
## Versioning
See also `GetObject` and other method parameters.
| | Method | Comments |
|----|--------------------|--------------------------|
| šŸŸ¢ | ListObjectVersions | ListBucketObjectVersions |
| šŸ”µ | RestoreObject | |
## Bucket
| | Method | Comments |
|----|----------------------|-----------|
| šŸŸ¢ | CreateBucket | PutBucket |
| šŸŸ¢ | DeleteBucket | |
| šŸŸ¢ | GetBucketLocation | |
| šŸŸ¢ | HeadBucket | |
| šŸŸ¢ | ListBuckets | |
| šŸ”µ | PutPublicAccessBlock | |
## Acceleration
| | Method | Comments |
|----|----------------------------------|---------------------|
| šŸ”“ | GetBucketAccelerateConfiguration | GetBucketAccelerate |
| šŸ”“ | PutBucketAccelerateConfiguration | |
## ACL
| | Method | Comments |
|----|--------------|---------------------|
| šŸŸ” | GetBucketAcl | See ACL limitations |
| šŸŸ” | PutBucketAcl | See ACL Limitations |
## Analytics
| | Method | Comments |
|----|------------------------------------|----------|
| šŸ”µ | DeleteBucketAnalyticsConfiguration | |
| šŸ”µ | GetBucketAnalyticsConfiguration | |
| šŸ”µ | ListBucketAnalyticsConfigurations | |
| šŸ”µ | PutBucketAnalyticsConfiguration | |
## CORS
| | Method | Comments |
|----|------------------|----------|
| šŸŸ¢ | DeleteBucketCors | |
| šŸŸ¢ | GetBucketCors | |
| šŸŸ¢ | PutBucketCors | |
## Encryption
| | Method | Comments |
|----|------------------------|----------|
| šŸ”µ | DeleteBucketEncryption | |
| šŸ”µ | GetBucketEncryption | |
| šŸ”µ | PutBucketEncryption | |
## Inventory
| | Method | Comments |
|----|------------------------------------|----------|
| šŸ”µ | DeleteBucketInventoryConfiguration | |
| šŸ”µ | GetBucketInventoryConfiguration | |
| šŸ”µ | ListBucketInventoryConfigurations | |
| šŸ”µ | PutBucketInventoryConfiguration | |
## Lifecycle
| | Method | Comments |
|----|---------------------------------|----------|
| šŸ”µ | DeleteBucketLifecycle | |
| šŸ”µ | GetBucketLifecycle | |
| šŸ”µ | GetBucketLifecycleConfiguration | |
| šŸ”µ | PutBucketLifecycle | |
| šŸ”µ | PutBucketLifecycleConfiguration | |
## Logging
| | Method | Comments |
|----|------------------|----------|
| šŸ”µ | GetBucketLogging | |
| šŸ”µ | PutBucketLogging | |
## Metrics
| | Method | Comments |
|----|----------------------------------|----------|
| šŸ”µ | DeleteBucketMetricsConfiguration | |
| šŸ”µ | GetBucketMetricsConfiguration | |
| šŸ”µ | ListBucketMetricsConfigurations | |
| šŸ”µ | PutBucketMetricsConfiguration | |
## Notifications
| | Method | Comments |
|----|------------------------------------|---------------|
| šŸ”µ | GetBucketNotification | |
| šŸ”µ | GetBucketNotificationConfiguration | |
| šŸ”µ | ListenBucketNotification | non-standard? |
| šŸ”µ | PutBucketNotification | |
| šŸ”µ | PutBucketNotificationConfiguration | |
## Ownership controls
| | Method | Comments |
|----|-------------------------------|----------|
| šŸ”µ | DeleteBucketOwnershipControls | |
| šŸ”µ | GetBucketOwnershipControls | |
| šŸ”µ | PutBucketOwnershipControls | |
## Policy and replication
| | Method | Comments |
|----|-------------------------|-----------------------------|
| šŸ”µ | DeleteBucketPolicy | |
| šŸ”µ | DeleteBucketReplication | |
| šŸ”µ | DeletePublicAccessBlock | |
| šŸŸ” | GetBucketPolicy | See ACL limitations |
| šŸ”µ | GetBucketPolicyStatus | |
| šŸ”µ | GetBucketReplication | |
| šŸŸ¢ | PostPolicyBucket | Upload file using POST form |
| šŸŸ” | PutBucketPolicy | See ACL limitations |
| šŸ”µ | PutBucketReplication | |
## Request payment
| | Method | Comments |
|----|-------------------------|----------|
| šŸ”“ | GetBucketRequestPayment | |
| šŸ”“ | PutBucketRequestPayment | |
## Tagging
| | Method | Comments |
|----|---------------------|----------|
| šŸŸ¢ | DeleteBucketTagging | |
| šŸŸ¢ | GetBucketTagging | |
| šŸŸ¢ | PutBucketTagging | |
## Tiering
| | Method | Comments |
|----|---------------------------------------------|----------|
| šŸ”µ | DeleteBucketIntelligentTieringConfiguration | |
| šŸ”µ | GetBucketIntelligentTieringConfiguration | |
| šŸ”µ | ListBucketIntelligentTieringConfigurations | |
| šŸ”µ | PutBucketIntelligentTieringConfiguration | |
## Versioning
| | Method | Comments |
|----|---------------------|----------|
| šŸŸ¢ | GetBucketVersioning | |
| šŸŸ¢ | PutBucketVersioning | |
## Website
| | Method | Comments |
|----|---------------------|----------|
| šŸ”µ | DeleteBucketWebsite | |
| šŸ”µ | GetBucketWebsite | |
| šŸ”µ | PutBucketWebsite | |