Skip to main content

Command Palette

Search for a command to run...

How S3-Compatible Storage Helps Businesses Avoid Cloud Vendor Lock-In

Updated
•7 min read•View as Markdown
How S3-Compatible Storage Helps Businesses Avoid Cloud Vendor Lock-In
T
Senior Technical Writer at NeevCloud, India’s AI First SuperCloud company. I write at the intersection of technology, cloud computing, and AI, distilling complex infrastructure into real, relatable insights for builders, startups, and enterprises. With a strong focus on tech, I simplify technical narratives and shape strategies that connect products to people. My work spans cloud-native trends, AI infra evolution, product storytelling, and actionable guides for navigating the fast-moving cloud landscape.

TL;DR

  • Lock-in gets described as a pricing problem. It is an API problem first and an egress problem second. Price is what you notice at renewal; the other two are what stop you acting on it.

  • Code written against a proprietary storage SDK has to be rewritten before any data moves. Code written against the S3 API, on S3-compatible storage, moves by changing an endpoint and a pair of keys.

  • Egress terms decide whether leaving is affordable. Read them before you store the first terabyte, not after you store a petabyte.

  • Portability is a design decision taken at the storage layer on day one, not a migration project you start when the quote arrives.

What lock-in looks like in practice

Three things hold data where it is, and only one of them is on the invoice.

The first is the API surface. If your ingest pipeline, your backup job and your training data loader all call a vendor-specific SDK, the objects are not the hard part. The code is. Every service that touches storage has to be found, rewritten and retested before anything moves.

The second is egress. Uploads are free almost everywhere. Downloads are billed per GB on the way out. That asymmetry is deliberate. The cost of leaving scales with how much you succeeded at staying.

The third is operational. Lifecycle rules, retention settings, bucket policies and access key structures get rebuilt by hand when the next platform models them differently. Teams underestimate this one because nobody bills for it.


Why the S3 API became the Portability Standard

The S3 API spread by adoption, not by committee. Enough tools were written against PutObject, GetObject, ListObjectsV2, multipart upload and SigV4 request signing that implementing the same verbs became cheaper for storage vendors than teaching the market a new interface.

The practical result: any client that speaks that dialect works against any provider that implements it, which is what S3-compatible storage means in day to day use. rclone, Cyberduck, S3 Browser, s3fs, boto3, Veeam, Commvault, MSP360 and Acronis all connect the same way, by taking an endpoint, an access key and a secret key.


How S3-compatible Storage breaks each mechanism

API lock-in. In boto3 this is one line. Set endpoint_url to your provider's service URL instead of the AWS default and the rest of the call signature is unchanged. ZATA publishes two: https://idr01.zata.ai for Central India and https://bom01.zata.ai, with the region codes listed on the ZATA service URLs and region codes page. Your application does not learn a new storage model. It learns a new hostname.

Egress lock-in. This one is commercial, not technical, so read the terms rather than the marketing. ZATA's ingress and egress policy makes uploads free and unlimited, and gives free egress equal to your active storage volume each month. A 100 TB account can pull 100 TB out in a month at no transfer cost. Beyond that the account is suspended until the plan is upgraded or the next cycle starts, which is a limit worth planning a bulk exit around.

Operational lock-in. Because the vocabulary is shared, so are the runbooks. Versioning, lifecycle rules, bucket policies, presigned URLs, subuser policies and Object Lock in governance, compliance and legal hold modes behave the way your team already expects.


A Portability checklist to run before you sign

Compatibility claims are cheap. Run these six checks against any S3-compatible storage provider, including this one, before the contract goes to signature.

Criterion Why it matters What to verify
S3 API coverage Compatibility is a spectrum, not a yes or no Run your own client against a trial bucket: multipart upload, versioning, ListObjectsV2 pagination, presigned URLs
Egress terms This is the price of your exit The included allowance, the per GB rate beyond it, and what happens when you exceed it
Credential model Determines how many services you touch to rotate out SigV4 signing, per-workload access keys, subuser policies and roles
Immutability Locked objects cannot simply be copied out Which Object Lock modes are supported, and that Object Lock is set at bucket creation
Region and residency Contractual and DPDP exposure Named region codes and endpoints written into the agreement, not implied by a map
Exit mechanics An untested exit is not an exit That a full copy out runs with rclone or equivalent, and how long it takes at your volume

What moving the data actually involves

Less than most teams expect when both ends are S3-compatible storage. You configure two rclone remotes, one for the source and one for the destination, choosing the generic S3 compatible provider and supplying the target endpoint. Then you copy:

rclone copy AWS:<source_bucket> zata:<destination_bucket> --s3-region ap-south-1 --progress

The full procedure, including bucket policy and IAM setup on the source side, is documented for migrating from AWS S3 to ZATA. The work that takes time is verification: object counts, checksums, permissions and anything that was public by accident.


Where S3 compatibility is not enough

It does not cover everything. Less common surfaces differ between implementations, including event notifications, cross-region replication APIs and server-side query. Object Lock has to be enabled when the bucket is created and permanently turns on versioning, so a bucket built without it cannot be retrofitted on either platform. And compatibility does nothing about data gravity. If your GPUs sit in one provider and your objects sit in another, you pay for that distance in latency and transfer every training run, whichever API you used.

Portability is what keeps the option open. It does not make the move free.


Start with an exit you have tested

Nobody picks a provider intending to leave. The question is what it costs if you have to, and that number is set by decisions made on the first day, not the last. S3-compatible storage, held under terms you have read, with an exit you have run once, stays a choice rather than a dependency.

Create a trial bucket on ZATA, connect your existing S3 client to idr01.zata.ai or bom01.zata.ai, and run compatibility tests before moving production data. If you’re planning to migrate from AWS S3 or another storage provider, connect with the ZATA team to plan a migration based on your data volume and requirements.


FAQs

How do I avoid cloud vendor lock-in with object storage?

Write against the S3 API rather than a proprietary SDK, keep the endpoint in configuration instead of hardcoded, and check the egress terms before you commit volume. Then test the exit once, on a real bucket, so you know what a full copy out costs and how long it takes.

Is S3-compatible object storage the same as AWS S3?

No. It implements the same API so the same clients and calls work, but feature coverage varies by provider. Core operations are dependable. Less common services are where implementations diverge, which is why testing your own workload against a trial bucket matters more than a compatibility claim.

What are egress fees and why do they cause lock-in?

Egress is data leaving the provider's network, usually billed per GB outbound while inbound is free. Because the charge scales with stored volume, the cost of leaving grows the longer you stay. That turns a technical decision into a budget approval, which is how lock-in works in practice.

Does switching object storage providers require code changes?

If the application uses the S3 API, usually only configuration: endpoint, region and credentials. Rewriting starts when code calls provider-specific services around storage, such as native event triggers or serverless functions wired directly to bucket events.

How long does migrating from AWS S3 to another S3-compatible provider take?

The copy itself is bandwidth-bound and can run with rclone while both sides stay live. Planning and verification take longer than the transfer for most teams: mapping bucket policies, reissuing keys, updating clients and confirming object counts and checksums at the destination.

S3 Object Storage

Part 6 of 6

S3-compatible object storage has become the industry standard for scalable cloud storage and application integration. This series explores S3 APIs, cloud object storage workflows, storage buckets, integrations, and scalable storage architectures for developers and enterprises. Powered by ZATA, this series covers S3-compatible storage for AI workloads, backups, media storage, cloud-native applications, and enterprise-scale data management.

Start from the beginning

Introducing ZATA Mumbai Region: Resilient Object Storage for Western India

TL;DR: ZATA now runs a Mumbai region for object storage, extending beyond Indore into Western India. The region is built on a high availability architecture with Tier IV certified infrastructure and