mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2026-09-20 13:30:46 +02:00
Add S3 API Comparison page and update sidebar
@@ -0,0 +1,69 @@
|
||||
# S3 API Comparison: SeaweedFS vs MinIO
|
||||
|
||||
This page compares the S3 API implementation in SeaweedFS with MinIO.
|
||||
|
||||
## Comparison Summary
|
||||
|
||||
| Feature Area | SeaweedFS Support | MinIO Support | Notes |
|
||||
| :--- | :---: | :---: | :--- |
|
||||
| **Basic Object Ops** | ✅ Full | ✅ Full | GET, PUT, DELETE, HEAD, COPY |
|
||||
| **Bucket Ops** | ✅ Full | ✅ Full | Create, Delete, List, Head |
|
||||
| **Multipart Upload**| ✅ Full | ✅ Full | |
|
||||
| **Object Tagging** | ✅ Full | ✅ Full | |
|
||||
| **Object Lock** | ✅ Full | ✅ Full | Retention, Legal Hold |
|
||||
| **Bucket Policy** | ✅ Full | ✅ Full | |
|
||||
| **Lifecycle** | ✅ Full | ✅ Full | |
|
||||
| **Versioning** | ✅ Full | ✅ Full | |
|
||||
| **ACLs** | ✅ Full | ⚠️ Partial | MinIO has dummy handlers for some ACLs |
|
||||
| **S3 Tables** | ✅ Full | ❌ No | SeaweedFS supports Iceberg via S3 Tables |
|
||||
| **Object Select** | ❌ No | ✅ Yes | `SelectObjectContent` |
|
||||
| **Object Attributes**| ❌ No | ✅ Yes | `GetObjectAttributes` |
|
||||
| **Lambda Triggers** | ❌ No | ✅ Yes | `GetObjectLambda` |
|
||||
| **Sts** | ✅ Partial | ✅ Full | Both support AssumeRole |
|
||||
|
||||
## Implemented APIs (Both)
|
||||
|
||||
- **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`, `GetObjectTagging`, `PutObjectTagging`, `DeleteObjectTagging`, `GetObjectAcl`, `PutObjectAcl`, `GetObjectRetention`, `PutObjectRetention`, `GetObjectLegalHold`, `PutObjectLegalHold`
|
||||
- **Multipart Upload**: `CreateMultipartUpload`, `AbortMultipartUpload`, `CompleteMultipartUpload`, `UploadPart`, `CopyObjectPart`, `ListMultipartUploads`, `ListParts`
|
||||
|
||||
## SeaweedFS Specific / Better Implemented
|
||||
|
||||
- **S3 Tables API (Iceberg Support)**: Extensive support for Iceberg tables, namespaces, and buckets.
|
||||
- `CreateTableBucket`, `ListTableBuckets`, `GetTableBucket`, `DeleteTableBucket`, `CreateNamespace`, `CreateTable`, etc.
|
||||
- **Bucket Management**: SeaweedFS implements `PublicAccessBlock` and `OwnershipControls` which are rejected or labeled as dummy in some MinIO versions.
|
||||
|
||||
## MinIO Specific / Not in SeaweedFS
|
||||
|
||||
- **Advanced Object Querying**: `SelectObjectContent`, `GetObjectAttributes`.
|
||||
- **Extensions**: `GetObjectLambda`, `PostRestoreObject`, `Snowball Extract`.
|
||||
- **Replication**: MinIO has more native S3 replication APIs.
|
||||
|
||||
## Detailed Comparison Table
|
||||
|
||||
| API Action | SeaweedFS | MinIO |
|
||||
| :--- | :---: | :---: |
|
||||
| `s3:GetObject` | ✅ | ✅ |
|
||||
| `s3:PutObject` | ✅ | ✅ |
|
||||
| `s3:DeleteObject` | ✅ | ✅ |
|
||||
| `s3:CopyObject` | ✅ | ✅ |
|
||||
| `s3:SelectObjectContent` | ❌ | ✅ |
|
||||
| `s3:GetObjectAttributes` | ❌ | ✅ |
|
||||
| `s3:PostRestoreObject` | ❌ | ✅ |
|
||||
| `s3:GetBucketCORS` | ✅ | ✅ |
|
||||
| `s3:PutBucketCORS` | ✅ | ⚠️ (Dummy) |
|
||||
| `s3:GetBucketACL` | ✅ | ✅ |
|
||||
| `s3:PutBucketACL` | ✅ | ⚠️ (Dummy) |
|
||||
| `s3:GetBucketLifecycle` | ✅ | ✅ |
|
||||
| `s3:PutBucketLifecycle` | ✅ | ✅ |
|
||||
| `s3:GetBucketEncryption` | ✅ | ✅ |
|
||||
| `s3:GetBucketVersioning` | ✅ | ✅ |
|
||||
| `s3:GetBucketLocation` | ✅ | ✅ |
|
||||
| `s3:GetBucketPolicy` | ✅ | ✅ |
|
||||
| `s3:PutBucketPolicy` | ✅ | ✅ |
|
||||
| `s3:DeleteBucketPolicy` | ✅ | ✅ |
|
||||
| `s3:GetBucketObjectLockConfiguration` | ✅ | ✅ |
|
||||
| `s3:GetBucketTagging` | ✅ | ✅ |
|
||||
| `s3:PutBucketOwnershipControls` | ✅ | ❌ (Rejected) |
|
||||
| `s3:GetPublicAccessBlock` | ✅ | ❌ (Rejected) |
|
||||
+1
@@ -70,6 +70,7 @@
|
||||
|
||||
### AWS S3 API
|
||||
* [[Amazon S3 API]]
|
||||
* [[S3 API Comparison]]
|
||||
* [[S3 Conditional Operations]]
|
||||
* [[S3 CORS]]
|
||||
* [[S3 Object Lock and Retention]]
|
||||
|
||||
Reference in New Issue
Block a user