diff --git a/docs/design/AWS_API_Compatibility.md b/docs/design/AWS_API_Compatibility.md index 1dd3c0f394..db7009e199 100644 --- a/docs/design/AWS_API_Compatibility.md +++ b/docs/design/AWS_API_Compatibility.md @@ -3,7 +3,12 @@ # AWS APIs Compatibility Table The chart below strives to provide an up-to-date overview of which AWS API calls are supported by NooBaa, and to what extent. Actions that are absent from the table are entirely unsupported*. -*Note that it is also possible for actions to be supported but absent because the table was not updated. +The table is split into categories, each containing a list of features and their corresponding API actions. +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. +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. +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). + +_* Note that it is also possible for actions to be supported but absent because the table was not updated._ | Category | Feature | API Action | Backingstore | NSFS | NS AWS | NS Azure | Comments | |:---------------------:|:-------------------------------:|:---------------------------------:|:-------------:|:------:|:-------:|:----------:|-------------------------------------------------------------------------| @@ -20,7 +25,7 @@ Actions that are absent from the table are entirely unsupported*. | | Object | ListObjects | ✅ | ✅ | ✅ | ✅ | | | | Object | ListObjectsV2 | ✅ | ✅ | ✅ | ✅ | | | | Object | CopyObject | ✅ | ✅ | ✅ | ✅ | | -| | Object | GetObjectAttributes | ❌ | ✅ | ✅ | ❌ | | +| | Object | GetObjectAttributes | ❌ | ✅* | ✅ | ❌ | *Partially implemented | | | Multipart Upload | CreateMultipartUpload | ✅ | ✅ | ✅ | ✅ | | | | Multipart Upload | CompleteMultipartUpload | ✅ | ✅ | ✅ | ✅ | | | | Multipart Upload | AbortMultipartUpload | ✅ | ✅ | ✅ | ✅* | *Azure does not support aborting uploads, so the operation is ignored and Azure will clean up the parts after 7 days | @@ -42,35 +47,37 @@ Actions that are absent from the table are entirely unsupported*. | | Bucket Policy | GetBucketPolicyStatus | ✅ | ✅ | ❌ | ❌ | | | | Bucket Policy | PutBucketPolicy | ✅ | ✅ | ❌ | ❌ | | | | Bucket Policy | DeleteBucketPolicy | ✅ | ✅ | ❌ | ❌ | | -| **Data Protection** | Versioning | GetBucketVersioning | ✅ | ✅ | ❌ | ❌ | | +| **Data Protection** | Versioning | GetBucketVersioning | ✅ | ✅ | ❌ | ❌ | | | | Versioning | PutBucketVersioning | ✅ | ✅ | ❌ | ❌ | | | | Versioning | ListObjectVersions | ✅ | ✅ | ✅ | ❌ | | -| **Monitoring** | Notifications | GetBucketNotification | ❌ | ❌ | ❌ | ❌ | DEPRECATED API: use NotificationConfiguration instead | +| **Monitoring** | Notifications | GetBucketNotification | ❌ | ❌ | ❌ | ❌ | DEPRECATED API: use NotificationConfiguration instead | | | Notifications | PutBucketNotification | ❌ | ❌ | ❌ | ❌ | DEPRECATED API: use NotificationConfiguration instead | -| | Notifications | GetBucketNotificationConfiguration | ❌ | ✅ | ❌ | ❌ | | -| | Notifications | PutBucketNotificationConfiguration | ❌ | ✅ | ❌ | ❌ | | +| | Notifications | GetBucketNotificationConfiguration| ❌ | ✅ | ❌ | ❌ | | +| | Notifications | PutBucketNotificationConfiguration| ❌ | ✅ | ❌ | ❌ | | | | Logging | GetBucketLogging | ✅ | ✅ | ❌ | ❌ | | | | Logging | PutBucketLogging | ✅ | ✅ | ❌ | ❌ | | -| **Tiering** | Lifecycle | GetBucketLifecycle | ❌ | ❌ | ❌ | ❌ | DEPRECATED API: use LifecycleConfiguration instead | +| **Tiering** | Lifecycle | GetBucketLifecycle | ❌ | ❌ | ❌ | ❌ | DEPRECATED API: use LifecycleConfiguration instead | | | Lifecycle | PutBucketLifecycle | ❌ | ❌ | ❌ | ❌ | DEPRECATED API: use LifecycleConfiguration instead | | | Lifecycle | GetBucketLifecycleConfiguration | ✅ | ✅ | ❌ | ❌ | | -| | Lifecycle | PutBucketLifecycleConfiguration | ✅* | ✅* | ❌ | ❌ | * Partial (no storage-class Transitions). ** Additional automation setup is needed | +| | Lifecycle | PutBucketLifecycleConfiguration | ✅* | ✅* | ❌ | ❌ | *Partial (no storage-class Transitions). ** Additional automation setup is needed | | | Lifecycle | DeleteBucketLifecycle | ✅ | ✅ | ❌ | ❌ | | | | Glacier | RestoreObject | ❌ | ✅* | ❌ | ❌ | *Additional automation setup is needed (provided by IBM Deep Archive) | -| **Web Hosting** | Website | GetBucketWebsite | ✅ | ✅ | ❌ | ❌ | | +| **Web Hosting** | Website | GetBucketWebsite | ✅ | ✅ | ❌ | ❌ | | | | Website | PutBucketWebsite | ✅ | ✅ | ❌ | ❌ | | | | Website | DeleteBucketWebsite | ✅ | ✅ | ❌ | ❌ | | -| **Security** | Encryption | GetBucketEncryption | ✅ | ✅ | ❌ | ❌ | | +| **Security** | Encryption | GetBucketEncryption | ✅ | ✅ | ❌ | ❌ | | | | Encryption | PutBucketEncryption | ✅ | ✅* | ❌ | ❌ | *Additional automation setup is needed (NooBaa only verifies that the FS encryption matches the bucket configuration | | | Encryption | DeleteBucketEncryption | ✅ | ✅ | ❌ | ❌ | | -| **STS API** | Session Tokens | AssumeRole | ✅ | ✅ | ❌ | ❌ | | -| **IAM API** | Users | GetUser | ❌ | ✅ | ❌ | ❌ | | +| **STS API** | Session Tokens | AssumeRole | ✅ | ✅ | ❌ | ❌ | | +| **IAM API*** | Users | GetUser | ❌ | ✅ | ❌ | ❌ | | | | Users | CreateUser | ❌ | ✅ | ❌ | ❌ | | | | Users | UpdateUser | ❌ | ✅ | ❌ | ❌ | | | | Users | DeleteUser | ❌ | ✅ | ❌ | ❌ | | -| | Users | ListUsers | ❌ | ✅ | ❌ | ❌ | | -| | Access Keys | GetAccessKeyLastUsed | ❌ | ✅ | ❌ | ❌ | | +| | Users | ListUsers | ❌ | ✅* | ❌ | ❌ | *No pagination support | +| | Access Keys | GetAccessKeyLastUsed | ❌ | ✅* | ❌ | ❌ | *Partially implemented | | | Access Keys | CreateAccessKey | ❌ | ✅ | ❌ | ❌ | | | | Access Keys | UpdateAccessKey | ❌ | ✅ | ❌ | ❌ | | | | Access Keys | DeleteAccessKey | ❌ | ✅ | ❌ | ❌ | | -| | Access Keys | ListAccessKeys | ❌ | ✅ | ❌ | ❌ | | +| | Access Keys | ListAccessKeys | ❌ | ✅* | ❌ | ❌ | *No pagination support | + +_* IAM API uses a different port than the S3 API, and needs to be manually enabled prior to use._ \ No newline at end of file