Skip to content

Commit 6639c90

Browse files
authored
Merge pull request #8529 from Neon-White/s3-compatibility-table
Add AWS API compatibility table
2 parents 7f418e7 + dccc9da commit 6639c90

File tree

1 file changed

+83
-0
lines changed

1 file changed

+83
-0
lines changed

docs/design/AWS_API_Compatibility.md

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
[NooBaa Operator](../README.md) /
2+
3+
# AWS APIs Compatibility Table
4+
The chart below strives to provide an up-to-date overview of which AWS API calls are supported by NooBaa, and to what extent.
5+
Actions that are absent from the table are entirely unsupported*.
6+
The table is split into categories, each containing a list of features and their corresponding API actions.
7+
NooBaa utilizes different implementations of API calls for different storage providers, so the table is split into columns for each provider to indicate whether it's supported or not.
8+
The store types currently included in the table are backingstore (regardless of storage provider), namespace filesystem (NSFS), namespace for Amazon Web Services, and namespace for Microsoft Azure.
9+
For more information, see [S3 Compatibility](https://github.com/noobaa/noobaa-operator/tree/master/doc/s3-compatibility.md), [Bucket Types](https://github.com/noobaa/noobaa-operator/tree/master/doc/bucket-types.md), [Backingstore CRD](https://github.com/noobaa/noobaa-operator/blob/master/doc/backing-store-crd.md) and [Namespacestore CRD](https://github.com/noobaa/noobaa-operator/blob/master/doc/namespace-store-crd.md).
10+
11+
_* Note that it is also possible for actions to be supported but absent because the table was not updated._
12+
13+
| Category | Feature | API Action | Backingstore | NSFS | NS AWS | NS Azure | Comments |
14+
|:---------------------:|:-------------------------------:|:---------------------------------:|:-------------:|:------:|:-------:|:----------:|-------------------------------------------------------------------------|
15+
| **Basic** | Bucket | HeadBucket ||||| |
16+
| | Bucket | CreateBucket ||||| |
17+
| | Bucket | DeleteBucket ||||| |
18+
| | Bucket | ListBuckets ||||| |
19+
| | Bucket | GetBucketLocation |||* |* | *Always returns an empty string |
20+
| | Object | HeadObject ||||| |
21+
| | Object | GetObject ||||| |
22+
| | Object | PutObject ||||| |
23+
| | Object | DeleteObject ||||| |
24+
| | Object | DeleteObjects ||||| |
25+
| | Object | ListObjects ||||| |
26+
| | Object | ListObjectsV2 ||||| |
27+
| | Object | CopyObject ||||| |
28+
| | Object | GetObjectAttributes |* |* ||* | *Partially implemented |
29+
| | Multipart Upload | CreateMultipartUpload ||||| |
30+
| | Multipart Upload | CompleteMultipartUpload ||||| |
31+
| | Multipart Upload | AbortMultipartUpload ||||* | *Azure does not support aborting uploads, so the operation is ignored and Azure will clean up the parts after 7 days |
32+
| | Multipart Upload | ListMultipartUploads ||||| |
33+
| | Multipart Upload | ListParts ||||| |
34+
| | Multipart Upload | UploadPart ||||| |
35+
| | Multipart Upload | UploadPartCopy ||||| |
36+
| | Tagging | GetObjectTagging ||||| |
37+
| | Tagging | PutObjectTagging ||||| |
38+
| | Tagging | DeleteObjectTagging ||||| |
39+
| | Tagging | GetBucketTagging ||||| |
40+
| | Tagging | PutBucketTagging ||||| |
41+
| | Tagging | DeleteBucketTagging ||||| |
42+
| **Permissions** | ACL | GetBucketAcl ||||| DEPRECATED API: use BucketPolicy instead |
43+
| | ACL | PutBucketAcl ||||| DEPRECATED API: use BucketPolicy instead |
44+
| | ACL | GetObjectAcl ||||| DEPRECATED API: use BucketPolicy instead |
45+
| | ACL | PutObjectAcl ||||| DEPRECATED API: use BucketPolicy instead |
46+
| | Bucket Policy | GetBucketPolicy ||||| |
47+
| | Bucket Policy | GetBucketPolicyStatus ||||| |
48+
| | Bucket Policy | PutBucketPolicy ||||| |
49+
| | Bucket Policy | DeleteBucketPolicy ||||| |
50+
| **Data Protection** | Versioning | GetBucketVersioning ||||| |
51+
| | Versioning | PutBucketVersioning ||||| |
52+
| | Versioning | ListObjectVersions ||||| |
53+
| **Monitoring** | Notifications | GetBucketNotification ||||| DEPRECATED API: use NotificationConfiguration instead |
54+
| | Notifications | PutBucketNotification ||||| DEPRECATED API: use NotificationConfiguration instead |
55+
| | Notifications | GetBucketNotificationConfiguration||||| |
56+
| | Notifications | PutBucketNotificationConfiguration||||| |
57+
| | Logging | GetBucketLogging ||||| |
58+
| | Logging | PutBucketLogging ||||| |
59+
| **Tiering** | Lifecycle | GetBucketLifecycle ||||| DEPRECATED API: use LifecycleConfiguration instead |
60+
| | Lifecycle | PutBucketLifecycle ||||| DEPRECATED API: use LifecycleConfiguration instead |
61+
| | Lifecycle | GetBucketLifecycleConfiguration ||||| |
62+
| | Lifecycle | PutBucketLifecycleConfiguration |* |* ||| *Partial (no storage-class Transitions). ** Additional automation setup is needed |
63+
| | Lifecycle | DeleteBucketLifecycle ||||| |
64+
| | Glacier | RestoreObject ||* ||| *Additional automation setup is needed (provided by IBM Deep Archive) |
65+
| **Web Hosting** | Website | GetBucketWebsite ||||| |
66+
| | Website | PutBucketWebsite ||||| |
67+
| | Website | DeleteBucketWebsite ||||| |
68+
| **Security** | Encryption | GetBucketEncryption ||||| |
69+
| | Encryption | PutBucketEncryption ||* ||| *Additional automation setup is needed (NooBaa only verifies that the FS encryption matches the bucket configuration |
70+
| | Encryption | DeleteBucketEncryption ||||| |
71+
| **STS API** | Session Tokens | AssumeRole ||||| |
72+
| **IAM API*** | Users | GetUser ||||| |
73+
| | Users | CreateUser ||||| |
74+
| | Users | UpdateUser ||||| |
75+
| | Users | DeleteUser ||||| |
76+
| | Users | ListUsers ||* ||| *No pagination support |
77+
| | Access Keys | GetAccessKeyLastUsed ||* ||| *Partially implemented |
78+
| | Access Keys | CreateAccessKey ||||| |
79+
| | Access Keys | UpdateAccessKey ||||| |
80+
| | Access Keys | DeleteAccessKey ||||| |
81+
| | Access Keys | ListAccessKeys ||* ||| *No pagination support |
82+
83+
_* IAM API uses a different port than the S3 API, and needs to be manually enabled prior to use._

0 commit comments

Comments
 (0)