diff --git a/Supported-APIs-vs-Minio.md b/Supported-APIs-vs-Minio.md index 1dcc534..cd7957a 100644 --- a/Supported-APIs-vs-Minio.md +++ b/Supported-APIs-vs-Minio.md @@ -17,7 +17,10 @@ This page compares the S3 API implementation in SeaweedFS with MinIO. | **Bucket Policy** | ✅ Full | ✅ Full | | | **Lifecycle** | ✅ Full | ✅ Full | | | **Versioning** | ✅ Full | ✅ Full | | -| **ACLs** | ✅ Full | ⚠️ Partial | MinIO has dummy handlers for some ACLs | +| **ACLs** | ✅ Full | ⚠️ Dummy | MinIO accepts but does not enforce bucket and object ACL requests | +| **Bucket Notifications** | ❌ No | ✅ Full | `GetBucketNotification`, `PutBucketNotification`, `ListenBucketNotification` | +| **Bucket Replication** | ❌ No | ✅ Full | `Get/Put/DeleteBucketReplication` plus metrics and reset extensions | +| **Bucket Policy Status** | ❌ No | ✅ Full | `GetBucketPolicyStatus` | | **S3 Tables** | ✅ Full | ❌ No | SeaweedFS supports Iceberg via S3 Tables | | **Object Select** | ❌ No | ✅ Yes | `SelectObjectContent` | | **Object Attributes**| ✅ Yes | ✅ Yes | `GetObjectAttributes` | @@ -29,7 +32,7 @@ This page compares the S3 API implementation in SeaweedFS with MinIO. - **Service Operations**: `ListBuckets` - **Bucket Operations**: `HeadBucket`, `PutBucket`, `DeleteBucket`, `ListObjectsV1`, `ListObjectsV2`, `ListObjectVersions`, `GetBucketAcl`, `PutBucketAcl`, `GetBucketPolicy`, `PutBucketPolicy`, `DeleteBucketPolicy`, `GetBucketCors`, `PutBucketCors`, `DeleteBucketCors`, `GetBucketLifecycle`, `PutBucketLifecycle`, `DeleteBucketLifecycle`, `GetBucketLocation`, `GetBucketVersioning`, `PutBucketVersioning`, `GetBucketObjectLockConfiguration`, `PutBucketObjectLockConfiguration`, `GetBucketTagging`, `PutBucketTagging`, `DeleteBucketTagging`, `GetBucketEncryption`, `PutBucketEncryption`, `DeleteBucketEncryption` -- **Object Operations**: `HeadObject`, `GetObject`, `PutObject`, `DeleteObject`, `CopyObject`, `DeleteMultipleObjects`, `GetObjectAttributes`, `GetObjectTagging`, `PutObjectTagging`, `DeleteObjectTagging`, `GetObjectAcl`, `PutObjectAcl`, `GetObjectRetention`, `PutObjectRetention`, `GetObjectLegalHold`, `PutObjectLegalHold` +- **Object Operations**: `HeadObject`, `GetObject`, `PutObject`, `PostObject` (browser form upload), `DeleteObject`, `CopyObject`, `DeleteMultipleObjects`, `GetObjectAttributes`, `GetObjectTagging`, `PutObjectTagging`, `DeleteObjectTagging`, `GetObjectAcl`, `PutObjectAcl`, `GetObjectRetention`, `PutObjectRetention`, `GetObjectLegalHold`, `PutObjectLegalHold` - **Multipart Upload**: `CreateMultipartUpload`, `AbortMultipartUpload`, `CompleteMultipartUpload`, `UploadPart`, `CopyObjectPart`, `ListMultipartUploads`, `ListParts` ## SeaweedFS Specific / Better Implemented @@ -41,8 +44,11 @@ This page compares the S3 API implementation in SeaweedFS with MinIO. ## MinIO Specific / Not in SeaweedFS - **Advanced Object Querying**: `SelectObjectContent`. -- **Extensions**: `GetObjectLambda`, `PostRestoreObject`, `Snowball Extract`. -- **Replication**: MinIO has more native S3 replication APIs. +- **Extensions**: `GetObjectLambda`, `PostRestoreObject`, `PutObjectExtract` (Snowball auto-extract). +- **Bucket Notifications**: `GetBucketNotification`, `PutBucketNotification`, plus MinIO's `ListenBucketNotification` SSE-style event stream. +- **Bucket Replication**: `GetBucketReplication`, `PutBucketReplication`, `DeleteBucketReplication`, replication metrics (v1/v2), `ResetBucketReplicationStart`, `ResetBucketReplicationStatus`, `ValidateBucketReplicationCreds`. +- **Bucket Policy Status**: `GetBucketPolicyStatus`. +- **Dummy bucket configs** (accepted, not enforced): `GetBucketWebsite`/`DeleteBucketWebsite`, `GetBucketLogging`, `GetBucketAccelerate`. ## STS API Comparison @@ -84,6 +90,17 @@ This page compares the S3 API implementation in SeaweedFS with MinIO. | `s3:GetBucketTagging` | ✅ | ✅ | | `s3:PutBucketOwnershipControls` | ✅ | ❌ (Rejected) | | `s3:GetPublicAccessBlock` | ✅ | ❌ (Rejected) | +| `s3:GetBucketNotification` | ❌ | ✅ | +| `s3:PutBucketNotification` | ❌ | ✅ | +| `s3:GetBucketReplication` | ❌ | ✅ | +| `s3:PutBucketReplication` | ❌ | ✅ | +| `s3:DeleteBucketReplication` | ❌ | ✅ | +| `s3:GetBucketPolicyStatus` | ❌ | ✅ | +| `s3:GetBucketWebsite` | ❌ | ⚠️ (Dummy) | +| `s3:GetBucketLogging` | ❌ | ⚠️ (Dummy) | +| `s3:GetBucketAccelerate` | ❌ | ⚠️ (Dummy) | +| `s3:GetObjectACL` | ✅ | ⚠️ (Dummy) | +| `s3:PutObjectACL` | ✅ | ⚠️ (Dummy) | ## IAM API Comparison @@ -129,6 +146,13 @@ For group management specifically, MinIO supports broadly similar administration | `iam:GetGroupPolicy` | ✅ | ❌ | | | `iam:DeleteGroupPolicy` | ✅ | ❌ | | | `iam:ListGroupPolicies` | ✅ | ❌ | | +| `iam:GetPolicyVersion` | ✅ | ❌ | Managed policy version read; no MinIO equivalent | +| `iam:ListPolicyVersions` | ✅ | ❌ | Managed policy version list; no MinIO equivalent | +| `iam:CreateServiceAccount` | ✅ | ⚠️ Proprietary | MinIO: `mc admin user svcacct add` | +| `iam:DeleteServiceAccount` | ✅ | ⚠️ Proprietary | MinIO: `mc admin user svcacct rm` | +| `iam:GetServiceAccount` | ✅ | ⚠️ Proprietary | MinIO: `mc admin user svcacct info` | +| `iam:ListServiceAccounts` | ✅ | ⚠️ Proprietary | MinIO: `mc admin user svcacct ls` | +| `iam:UpdateServiceAccount` | ✅ | ⚠️ Proprietary | MinIO: `mc admin user svcacct edit` | | `iam:GetAccessKeyLastUsed` | 📋 Planned | ❌ | Return when an access key was last used | | `iam:TagUser` | 📋 Planned | ❌ | Add tags to a user | | `iam:UntagUser` | 📋 Planned | ❌ | Remove tags from a user |