# Tigris vs AWS S3

Both Tigris and Amazon S3 are S3-compatible object storage services. They share core capabilities: strong read-after-write consistency, IAM policies, bucket policies, ACLs, presigned URLs, multipart uploads, and lifecycle rules. Your existing AWS SDKs, CLI commands, and Terraform configs work with both.

The key differences come down to how each handles global distribution, pricing, and operational complexity.

## Global distribution[​](#global-distribution "Direct link to Global distribution")

### AWS S3[​](#aws-s3 "Direct link to AWS S3")

Every S3 bucket lives in a single AWS region. To serve users globally, you set up Cross-Region Replication (CRR) rules for each bucket, configure Multi-Region Access Points, and manage replication lag. Each replicated copy incurs storage and transfer costs.

### Tigris[​](#tigris "Direct link to Tigris")

Every Tigris bucket is global from the start. Data automatically moves to the regions where it's accessed through Dynamic Data Placement — no replication rules, no access points, no region selection when creating a bucket.

## Pricing[​](#pricing "Direct link to Pricing")

### AWS S3[​](#aws-s3-1 "Direct link to AWS S3")

S3 charges for storage, requests, and data transfer. Egress costs $0.09/GB in standard regions and increases for cross-region traffic. For read-heavy workloads — serving model weights, distributing assets, streaming training data — egress adds up quickly.

### Tigris[​](#tigris-1 "Direct link to Tigris")

Tigris charges for storage and requests. Egress is free, always. There are no data transfer fees regardless of where data is read from.

## Storage tiers[​](#storage-tiers "Direct link to Storage tiers")

### AWS S3[​](#aws-s3-2 "Direct link to AWS S3")

S3 offers six storage classes: Standard, Intelligent-Tiering, Standard-IA, One Zone-IA, Glacier, and Glacier Deep Archive. Each has different pricing, retrieval times, and minimum storage durations. Intelligent-Tiering adds automatic movement between tiers for a per-object monitoring fee.

### Tigris[​](#tigris-2 "Direct link to Tigris")

Tigris offers four tiers: Standard, Infrequent Access, Archive, and Archive with Instant Retrieval. Fewer tiers means fewer decisions, simpler lifecycle rules, and no per-object monitoring fees.

## Multi-tenancy[​](#multi-tenancy "Direct link to Multi-tenancy")

### AWS S3[​](#aws-s3-3 "Direct link to AWS S3")

Building multi-tenant storage means assembling bucket policies, IAM roles, and S3 Access Points. Isolating tenants requires careful policy management, and per-tenant usage tracking is your responsibility.

### Tigris[​](#tigris-3 "Direct link to Tigris")

Tigris offers a [Partner Integration API](/docs/partner-integrations/.md) that provisions isolated tenant organizations in a single API call — each with their own buckets, credentials, and usage tracking built in.

## Snapshots and forks[​](#snapshots-and-forks "Direct link to Snapshots and forks")

### AWS S3[​](#aws-s3-4 "Direct link to AWS S3")

S3 has object versioning, but no native snapshot or fork primitive. Creating a point-in-time copy means copying every object to a new bucket.

### Tigris[​](#tigris-4 "Direct link to Tigris")

Tigris lets you snapshot a bucket's state and fork it into independent copy-on-write clones — instant, no data copying. Useful for ML experiment branching, safe migrations, and dev/staging environments.

## Where AWS S3 fits better[​](#where-aws-s3-fits-better "Direct link to Where AWS S3 fits better")

* **Deep AWS ecosystem integration** — Lambda triggers, Athena queries, EMR, CloudFront, and other services that expect native S3 buckets
* **Compliance certifications** — AWS has a broader set of certifications (FedRAMP, HIPAA BAA) for regulated industries
* **Glacier Deep Archive** — for extremely cold data at very low per-GB rates
* **S3 Select / S3 Object Lambda** — server-side processing features that Tigris doesn't offer

## Summary[​](#summary "Direct link to Summary")

|                          | **Tigris**                                       | **AWS S3**                                            |
| ------------------------ | ------------------------------------------------ | ----------------------------------------------------- |
| **Global distribution**  | Automatic — data moves to where it's accessed    | Manual — requires Cross-Region Replication per bucket |
| **Egress fees**          | Free                                             | $0.09/GB (varies by region)                           |
| **Region selection**     | Not required — single global endpoint            | Required — you choose a region per bucket             |
| **Multi-region**         | Built-in, every bucket is global                 | Requires Multi-Region Access Points + CRR             |
| **S3 API compatibility** | Full — same SDKs, CLI, tools                     | Native                                                |
| **Consistency**          | Strong read-after-write                          | Strong read-after-write                               |
| **Storage tiers**        | Standard, IA, Archive, Archive Instant Retrieval | Standard, IA, One Zone-IA, Glacier, Deep Archive      |
| **Snapshots & forks**    | Native — zero-copy clones                        | No equivalent (versioning + copy)                     |
| **Custom domains**       | Supported                                        | Supported (via CloudFront or S3 website hosting)      |
| **IAM**                  | IAM policies, bucket policies, ACLs              | IAM policies, bucket policies, ACLs                   |

## Migration[​](#migration "Direct link to Migration")

Switching from AWS S3 to Tigris is straightforward — change your endpoint URL and credentials. Your existing code works as-is. For existing data, use the [data migration guide](/docs/migration/aws-s3/.md) to move objects without downtime.
