S3 compatibility matrix
BangmodStorage implements the subset of the Amazon S3 API that matters for object-storage workloads. If you build against the operations marked supported below, your existing AWS S3 code runs unchanged against our endpoints.
Bucket operations
| Operation | Supported | Notes |
|---|
CreateBucket | ✅ | Bucket names must match our naming rules. Whitespace and special chars rejected. |
HeadBucket | ✅ | Returns 200 for owned buckets, 404 otherwise. No leakage of foreign bucket existence. |
DeleteBucket | ✅ | Must be empty. Use aws s3 rb --force equivalent only after explicit confirmation. |
ListBuckets | ✅ | Returns only buckets owned by the account associated with the access key. |
GetBucketLocation | ✅ | Returns the region string (ap-southeast-1-bkk or ap-southeast-1-sg). |
GetBucketAcl / PutBucketAcl | ⚠️ | Canned ACLs supported: private, public-read. Custom grantee lists not supported (use bucket policy). |
GetBucketPolicy / PutBucketPolicy | ✅ | AWS-style IAM policy JSON. Subset of statements supported; see API reference. |
GetBucketCors / PutBucketCors | ✅ | Standard CORS rules for browser-side uploads. |
GetBucketVersioning / PutBucketVersioning | ✅ | Enable/disable. Suspend semantics match AWS. |
GetBucketLifecycle / PutBucketLifecycle | ✅ | Object expiration and incomplete-multipart cleanup. Transitions between storage classes not yet supported. |
GetBucketLogging / PutBucketLogging | ❌ | Roadmap. Use the Usage page for request-level metrics today. |
GetBucketTagging / PutBucketTagging / DeleteBucketTagging | ✅ | Up to 50 tags per bucket. |
GetBucketReplication / PutBucketReplication | ❌ | Cross-region replication on roadmap. |
Object operations
| Operation | Supported | Notes |
|---|
PutObject | ✅ | Max 5 GB single PUT. Use multipart for larger. |
GetObject | ✅ | Range requests, conditional GETs (If-Match, If-None-Match, If-Modified-Since), and partial-content responses supported. |
HeadObject | ✅ | Metadata only. |
DeleteObject | ✅ | Soft-delete when versioning enabled (delete marker), hard-delete otherwise. |
DeleteObjects | ✅ | Batch up to 1000 keys. |
CopyObject | ✅ | Same-account copies. Metadata directive REPLACE/COPY supported. |
ListObjects (v1) | ✅ | Returns up to 1000 keys per response with paging via Marker. |
ListObjectsV2 | ✅ | Recommended. Use ContinuationToken for paging. |
ListObjectVersions | ✅ | Only meaningful when versioning is enabled. |
GetObjectTagging / PutObjectTagging | ✅ | Up to 10 tags per object. |
SelectObjectContent | ❌ | Server-side S3 Select not supported; download the object and parse client-side. |
RestoreObject | ❌ | No archive tier yet. |
Multipart upload
| Operation | Supported | Notes |
|---|
CreateMultipartUpload | ✅ | |
UploadPart | ✅ | Min 5 MB per part except the last; max 10,000 parts. |
UploadPartCopy | ✅ | |
CompleteMultipartUpload | ✅ | |
AbortMultipartUpload | ✅ | Recommend a lifecycle rule to auto-clean stale uploads. |
ListMultipartUploads | ✅ | |
ListParts | ✅ | |
Server-side encryption
| Mode | Supported | Notes |
|---|
| SSE-S3 (AES256, our keys) | ✅ | Default. Enabled at-rest for every object; transparent to clients. |
| SSE-C (customer-provided keys) | ✅ | Standard x-amz-server-side-encryption-customer-* headers. |
| SSE-KMS (managed KMS) | ❌ | Roadmap; we may integrate AWS KMS in future. |
Presigned URLs
Fully SigV4-compatible. Max expiry 7 days. See Authentication.
What we don't do (yet)
- S3 Select / GLACIER restore
- Object Lock / WORM compliance mode (roadmap; needed for some regulated workloads)
- Cross-region replication
- Server access logging (use the customer console Usage page meanwhile)
- Storage classes beyond "Standard" (no IA / Glacier tiers yet)
- Transfer Acceleration / CloudFront-style edge caching
If a missing operation blocks your migration, email roadmap@bangmod.storage with your use case; we prioritise based on customer demand.