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

OperationSupportedNotes
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

OperationSupportedNotes
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

OperationSupportedNotes
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

ModeSupportedNotes
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.