Skip to main content
Storage • 2 mins read

S3 Compatibility Matrix

S3 Compatibility Matrix

Hippius S3 is a drop-in replacement for Amazon S3 with a focused feature set. If you already have code that works with AWS S3, you only need to change three things: endpoint URL, region, and credentials. Everything else stays the same.

This page lists every S3 API operation and whether we support it.

Connection Parameters

ParameterValue
Endpointhttps://s3.hippius.com
Regiondecentralized
SignatureAWS Signature V4
AddressingPath-style (s3.hippius.com/bucket/key)
Pick the closest region for best performance

Hippius S3 is served through regional caches. For lower latency, point your client at the endpoint closest to you:

  • Europe: https://eu-central-1.hippius.com (the default https://s3.hippius.com also resolves here)
  • US: https://us-east-1.hippius.com

All regions serve the same data — just swap the endpoint in your client config.

Bucket Operations

OperationStatusNotes
CreateBucket✅ Supported
DeleteBucket✅ SupportedMust be empty
HeadBucket✅ Supported
ListBuckets✅ Supported
GetBucketLocation✅ SupportedReturns decentralized
PutBucketAcl✅ Supportedprivate, public-read, public-read-write, authenticated-read
GetBucketAcl✅ Supported
PutBucketPolicy✅ SupportedJSON IAM-style policies
GetBucketPolicy✅ Supported
DeleteBucketPolicy✅ Supported
PutBucketTagging✅ Supported
GetBucketTagging✅ Supported
DeleteBucketTagging✅ Supported
PutBucketLifecycleConfiguration⚠️ PartialBasic expiration rules only
GetBucketLifecycleConfiguration⚠️ Partial
PutBucketVersioning⚠️ PartialEnabled only — Suspended returns 501
GetBucketVersioning✅ SupportedOmits Status when versioning was never enabled
PutObjectLockConfiguration✅ SupportedBucket default retention, Days or Years. Requires versioning — see Object Lock
GetObjectLockConfiguration✅ Supported404 ObjectLockConfigurationNotFoundError when unset
PutBucketCors❌ Not supportedCORS is handled at the gateway level
PutBucketNotificationConfiguration❌ Not supported
PutBucketReplication❌ Not supportedData is replicated by the network automatically
PutBucketLogging❌ Not supported

Object Operations

OperationStatusNotes
PutObject✅ SupportedUp to ~5 TiB via multipart
GetObject✅ SupportedRange requests supported (video streaming)
HeadObject✅ Supported
DeleteObject✅ Supported
DeleteObjects✅ SupportedBulk delete
CopyObject✅ Supported
ListObjectsV2✅ SupportedPagination, prefix, delimiter
ListObjects✅ SupportedV1 — prefer ListObjectsV2
PutObjectAcl✅ SupportedPer-object ACLs
GetObjectAcl✅ Supported
PutObjectTagging✅ Supported
GetObjectTagging✅ Supported
DeleteObjectTagging✅ Supported
ListObjectVersions✅ SupportedVersions and delete markers; prefix, delimiter, paging
PutObjectRetention✅ SupportedPer version. Extend allowed, shorten refused — see Object Lock
GetObjectRetention✅ Supported
PutObjectLegalHold✅ SupportedIndefinite lock, independent of retention
GetObjectLegalHold✅ Supported
SelectObjectContent❌ Not supportedS3 Select
PostObject❌ Not supportedBrowser form uploads — use a presigned PutObject

Versioning and Object Lock

Both are supported. Object Lock gives you write-once-read-many (WORM) retention with GOVERNANCE and COMPLIANCE modes, legal holds, and bucket-wide default retention — enforced below the API, so a locked version cannot be permanently deleted by anyone until it expires.

CapabilityStatusNotes
Bucket versioning✅ SupportedEnabled only; Suspended returns 501
Object Lock — GOVERNANCE✅ SupportedBucket owner can bypass with an explicit header
Object Lock — COMPLIANCE✅ SupportedCannot be shortened, cleared, or bypassed by anyone
Legal holds✅ SupportedIndefinite; independent of retention
Bucket default retention✅ SupportedDays or Years; applies to PUT, multipart and copy
Enable Object Lock on an existing bucket✅ SupportedRequires versioning first; no x-amz-bucket-object-lock-token needed
Lock headers on CompleteMultipartUpload❌ Not supportedSet them on CreateMultipartUpload instead
Lock headers on GetObject responses❌ Not supportedUse HeadObject
S3 Batch Operations❌ Not supportedApply locks per object
Replicating lock state❌ Not supportedSet the lock on the destination

→ Full guide with examples: Object Lock (WORM)

Multipart Upload

OperationStatusNotes
CreateMultipartUpload✅ SupportedAccepts x-amz-object-lock-* headers
UploadPart✅ Supported
CompleteMultipartUpload✅ Supported
AbortMultipartUpload✅ Supported
ListMultipartUploads✅ Supported
ListParts✅ Supported

Presigned URLs

OperationStatusNotes
Presigned GET✅ SupportedMax expiry: 7 days
Presigned PUT✅ SupportedMax expiry: 7 days
Presigned DELETE✅ Supported

What's Different from AWS S3

Hippius S3 is S3-compatible but not an AWS clone. Here's what to keep in mind:

  • Path-style only. Virtual-hosted style (bucket.s3.hippius.com) is not supported. Always use forcePathStyle: true or addressing_style: "path".
  • Single region. There's no multi-region setup. The region is always decentralized.
  • Versioning cannot be suspended. You can enable it, but Suspended returns 501. Enable it deliberately — on a bucket with Object Lock, AWS does not allow suspending it either.
  • Object Lock bypass is owner-only. AWS gates BypassGovernanceRetention on IAM; Hippius has no IAM, so the bucket owner is the only identity that can bypass a GOVERNANCE retention.
  • No S3 Select. You can't query inside objects. Download the object and process it locally.
  • No event notifications. There's no equivalent of S3 Event Notifications or Lambda triggers.
  • Replication is automatic. The Hippius network handles data replication across miners. You don't need to configure cross-region replication.

Tested Clients

These S3 clients are tested and confirmed to work with Hippius S3:

ClientLanguageGuide
boto3PythonPython guide
minio-pyPythonPython guide
@aws-sdk/client-s3JavaScriptJavaScript guide
minio-jsJavaScriptJavaScript guide
AWS CLICLIAWS CLI guide
rcloneCLIrclone guide

Further Reading