Update Supported-APIs-vs-Minio.md

Chris Lu committed 2026-05-19 14:25:55 -07:00
1 parent 1f6601d848
commit 8088f8efb7
1 file changed
+28 -4
+28 -4
@@ -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 |