frostfs-s3-gw/docs/aws_s3_compat.md

245 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:
| | Method | Comments |
|-----|--------------|-----------------------------------|
| šŸŸ¢ | GetObjectAcl | Objects can have only private acl |
| šŸ”“ | PutObjectAcl | Use PutBucketPolicy instead |
## 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 | aka GetBucketObjectLockConfig |
| šŸŸ” | GetObjectRetention | |
| šŸŸ” | PutObjectLegalHold | |
| šŸŸ¢ | PutObjectLockConfiguration | aka PutBucketObjectLockConfig |
| šŸŸ” | PutObjectRetention | |
## Multipart
CompleteMultipartUpload operations may take long time to complete. Gateway
sends whitespace characters to keep connection with the client alive. In this
case, gateway is unable to set proper HTTP headers like `X-Amz-Version-Id`.
| | 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 | Only canned acl is supported |
| šŸŸ” | PutBucketAcl | Only canned acl is supported |
## 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 | |
| šŸ”µ | GetBucketPolicyStatus | |
| šŸ”µ | GetBucketReplication | |
| šŸŸ¢ | PostPolicyBucket | Upload file using POST form |
| šŸŸ” | PutBucketPolicy | Conditions are not supported |
| šŸ”µ | 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 | |