Back

Blog details

What Is S3-Compatible Storage? How It Works and What to Test

AIOZ Network
7 min readMay 12, 2026
aioz-storages3-compatibilitystorage-apisexplainer
AIOZ Storage cover image with the headline What Is S3 Compatible Storage?

S3-compatible storage is object storage that accepts the same API requests as Amazon S3. Tools built for AWS, like the AWS CLI, boto3 and rclone, work with another provider once you change the endpoint and keys. Support differs at the edges, so test before you move data.

TL;DR:

  • S3-compatible means a provider speaks the Amazon S3 REST API: buckets, objects, keys and signed HTTPS requests.
  • Switching usually takes four settings: endpoint URL, access keys, signing region and addressing style.
  • Core calls (put, get, list, delete) match almost everywhere. Versioning, Object Lock, lifecycle rules and policies vary by provider.
  • On AIOZ Storage you use https://s3.aiozstorage.network, region us-east-1 and path-style addressing, with data spread across AIOZ DePIN nodes.

Updated Oct 19, 2026: rewritten from a general overview into a definition, a pre-migration test list and AIOZ Storage's exact settings. Corrected the encryption claim (AIOZ encrypts server-side by default), added the upload checksum setting AIOZ's endpoint needs, and added a diagram, FAQ and references.

What Does S3-Compatible Mean?

The AIOZ Storage docs define an S3-compatible service as one that "adheres to the same application programming interface (API) specifications and functionality as Amazon Simple Storage Service (S3)". Put simply, your code sends the HTTP requests it would send to AWS, and the provider answers in the same format.

Amazon S3 is the reference design: it keeps data as objects inside buckets, and each object has a key, its bytes and some metadata. If you want a refresher on that model first, start with our explainer on how S3 object storage works.

So the label describes a contract between the client on your side and the server on the provider's side. It says nothing about where your data lives, how it is protected or what it costs, since each provider decides those.

How Does S3-Compatible Storage Work?

Every S3 call is an HTTPS request to an endpoint, and the AWS SDKs and CLI sign it with your secret key using Signature Version 4 (SigV4). A compatible provider checks that signature, runs the operation on its own backend and returns the response an S3 client expects.

Diagram: the same SigV4-signed S3 request from the AWS CLI, boto3 or rclone goes either to Amazon S3 data centers or to the AIOZ Storage endpoint backed by AIOZ DePIN nodes
One request format, two backends. Only the endpoint, keys, region and addressing style change.

That is why switching rarely needs code changes, since you only edit configuration, and the table shows the four values that move.

SettingAmazon S3A typical S3-compatible provider
Endpoints3.<region>.amazonaws.com (SDK default)The provider's own URL
CredentialsIAM access key and secretKeys issued in the provider's dashboard
RegionA real AWS RegionOften a fixed value used only for signing
Addressing styleVirtual-hosted (bucket in the hostname)Often path-style (bucket in the URL path)

Addressing style trips people up most, because AWS puts the bucket in the hostname by default while path-style puts it after the endpoint, as in endpoint/bucket/key. AWS says its own path-style URLs "will be discontinued in the future". Many compatible providers still expect them, and rclone's S3 backend uses path-style unless the provider needs the other form.

Is AWS S3-Compatible Object Storage the Same as Amazon S3?

No. A compatible service matches the calls you make every day, but it doesn't have to copy every AWS feature around them, and the usual gaps fall into four areas:

The physical design can differ as well, and AWS states that S3 Standard stores objects across at least three Availability Zones in a Region. A decentralized provider spreads data over independent nodes instead, yet your client sees the same API.

Even plain uploads can differ. Recent AWS SDKs and the AWS CLI add a checksum to uploads by default and can send the body in aws-chunked encoding. Some compatible endpoints reject that, and AIOZ Storage's endpoint answered with MissingContentLength when we checked on Oct 19, 2026. One client setting fixes it, as the AIOZ section below shows.

What to Test Before You Switch

Run these checks against a test bucket before you send production traffic to a new provider. Each item below is a common reason an S3 tool that works on AWS fails on a new endpoint.

  1. Addressing style. Turn on path-style if the provider needs it: addressing_style in boto3, forcePathStyle in the JavaScript SDK, UsePathStyle in Go.
  2. Signature and region. Confirm SigV4 works and find the region string the provider expects. A wrong region tends to fail as an authorization error.
  3. Default checksums. Upload a small file with a current SDK. If it fails, set request checksum calculation to "when required" and try again.
  4. Large files. Upload a file above your SDK's multipart threshold (8 MB by default in boto3) and check that it completes. The S3 multipart upload guide explains the parts.
  5. Presigned URLs. Generate one and open it in a browser, as in presigned URLs with Python.
  6. Features you rely on. List every AWS feature your app calls, such as versioning, lifecycle rules or event notifications, and look each one up in the provider's docs.
  7. Integrity after a copy. Compare source and destination with rclone check, which matches sizes and hashes. The checksum explainer covers why that matters.
  8. Rate limits. Find the request limit and run your busiest job against it. Our AIOZ Storage rate limit guide shows one way to stay under it.

The payoff is that you keep your scripts, SDKs and backup tools, and you can leave a provider later without rewriting code. That is the main reason teams pick S3-compatible storage for backups, static assets, media libraries and datasets.

How AIOZ Storage Handles It

AIOZ Storage runs an S3-compatible API on top of AIOZ DePIN, a peer-to-peer network that the homepage puts at 191,285 edge nodes. We encrypt each object on the server side, then split it with Reed-Solomon erasure coding into data and parity pieces on different nodes. No single node holds a complete copy. The SDK and CLI examples in the docs all use the values in this table:

SettingAIOZ Storage value
Endpointhttps://s3.aiozstorage.network
Signing regionus-east-1
Addressing stylePath-style (bucket subdomains don't resolve)
Upload checksumsRequest checksum calculation set to "when required"
CredentialsAccess key and secret from an access grant in the dashboard
EncryptionServer-side by default
Limits100 requests per second, 100 buckets and 100 sub-users per account
Price0.017 USD per GB-month stored, 0.005 USD per GB downloaded

With the AWS CLI, you add one flag to the commands you already know, and this line from the CLI docs lists your buckets:

aws s3 --endpoint-url https://s3.aiozstorage.network ls

In boto3, the same settings go into the client, as in this version adapted from the Python SDK page:

import boto3
from botocore.config import Config

s3 = boto3.client(
    "s3",
    endpoint_url="https://s3.aiozstorage.network",
    region_name="us-east-1",
    aws_access_key_id="YOUR_ACCESS_KEY_ID",
    aws_secret_access_key="YOUR_SECRET_ACCESS_KEY",
    config=Config(
        request_checksum_calculation="when_required",
        response_checksum_validation="when_required",
        s3={"addressing_style": "path"},
    ),
)
print([b["Name"] for b in s3.list_buckets()["Buckets"]])

The two checksum options matter because the endpoint rejects the aws-chunked uploads that current AWS tools send by default (checked Oct 19, 2026). For CLI uploads, set the same behavior with an environment variable and turn on path-style addressing:

export AWS_REQUEST_CHECKSUM_CALCULATION=when_required
aws configure set default.s3.addressing_style path
aws s3 --endpoint-url https://s3.aiozstorage.network cp ./report.pdf s3://bucket-name/

We did not run these snippets for this article, so no output is shown. The same idea extends past files: the AIOZ Storage Vector Database speaks the AWS S3 Vectors API, so the AWS vector SDKs work against it too.

What the docs don't cover yet: support for versioning, Object Lock, lifecycle rules, bucket policies and event notifications. The docs also describe end-to-end encryption through a self-hosted gateway, but that gateway is announced and not yet available to download. Test anything on this list before your app depends on it.

Next step: read the S3 Compatibility page in the AIOZ Storage docs, create an access grant, and run the CLI line above against your account.

Frequently Asked Questions

What is S3-compatible storage in simple terms?
It is object storage from any provider that accepts Amazon S3 API calls, so tools written for S3 work after you change the endpoint and keys.

Do I need to change my code to use S3-compatible storage?
Usually you only change configuration: the endpoint URL, access keys, signing region and, for many providers, path-style addressing.

What is the difference between path-style and virtual-hosted-style requests?
Virtual-hosted style puts the bucket name in the hostname, while path-style puts it in the URL path after the endpoint. AWS defaults to virtual-hosted style, and many compatible providers expect path-style.

Can I use the AWS CLI with S3-compatible storage?
Yes, add --endpoint-url with the provider's URL to each command, or set the endpoint in your AWS CLI profile.

Does AIOZ Storage support the full Amazon S3 API?
Its docs cover bucket and object operations through the AWS CLI and the AWS SDKs for Python, JavaScript and Go. They don't list versioning, Object Lock, lifecycle rules or bucket policies, so test those first.

Is my data encrypted on AIOZ Storage?
Yes, AIOZ Storage encrypts data on the server side by default, before it is stored on AIOZ DePIN nodes.

References

We only send updates when meaningful changes ship, and you can unsubscribe anytime

Related Content

blog thumbnail

How to Create a Bucket and Upload a File on AIOZ Storage

Create a bucket and upload a file on AIOZ Storage in five steps: sign up, set a passphrase, add credits, and upload. Plus what the passphrase cannot recover.

aioz-storage
5 min readOctober 20, 2026
blog thumbnail

AIOZ Storage Rate Limit: Working Within 100 Requests/s

The AIOZ Storage rate limit is 100 requests per second. See what the docs do and don't say, and how to stay under it with boto3 retries and a limiter.

aioz-storage
7 min readOctober 16, 2026
blog thumbnail

What AIOZ Storage Erasure Coding Covers and What It Doesn't

AIOZ Storage erasure coding splits each object into pieces on DePIN nodes, so it survives node loss. See what it covers, what it doesn't, and what to back up.

aioz-storage
6 min readOctober 14, 2026
blog thumbnail

How to Rename a File in an S3 Bucket on AIOZ Storage

Rename a file in an S3 bucket on AIOZ Storage from the dashboard, then move, delete and download files, and see which actions the docs say are not supported.

aioz-storage
5 min readOctober 13, 2026
blog thumbnail

AIOZ Storage llms.txt: Docs Built for Super Intelligence

AIOZ Storage publishes llms.txt, a 46-link docs index, and llms-full.txt, all docs in one 164 KB file. See what each file contains and when to use which.

aioz-storage
6 min readOctober 09, 2026
blog thumbnail

Vector Database vs Agent Memory on AIOZ Storage: A Guide

Vector database vs agent memory on AIOZ Storage: use the vector database for control over embeddings and metadata, Memory for simple Record and Recall calls.

aioz-storage
6 min readOctober 06, 2026