Use Your Existing S3 Code | Tigris Object Storage Documentation

Tigris S3 Compatibility

Tigris is fully S3-compatible. If you already have code that talks to AWS S3 or any S3-compatible service, you can switch to Tigris by changing two things:

  1. Endpoint — point to https://t3.storage.dev
  2. Credentials — use your Tigris access key and secret key

Everything else — your SDK calls, CLI scripts, libraries — stays exactly the same.

Get your credentials

Create an access key in the Tigris Console. You'll get a key pair:

Tigris authenticates using access key and secret key pairs only. AssumeRole, STS, and temporary security credentials are not supported. We recommend rotating your access keys regularly.

Configure your environment

The fastest way to get started is to set environment variables. Every AWS SDK and the AWS CLI will pick these up automatically:

export AWS_ACCESS_KEY_ID="tid_your_access_key"

export AWS_SECRET_ACCESS_KEY="tsec_your_secret_key"

export AWS_ENDPOINT_URL="https://t3.storage.dev"

export AWS_REGION="auto"

That's it. Your existing code now talks to Tigris.

Using an AWS profile

If you use Tigris alongside AWS, add a named profile to ~/.aws/credentials and ~/.aws/config:

~/.aws/credentials

[tigris]

aws_access_key_id = tid_your_access_key

aws_secret_access_key = tsec_your_secret_key

~/.aws/config

[profile tigris]

endpoint_url = https://t3.storage.dev

region = auto

Then select the profile when running commands:

export AWS_PROFILE=tigris

# Or pass it per-command

aws s3 ls --profile tigris

Quick examples

# List buckets

aws s3 ls --endpoint-url https://t3.storage.dev

# Create a bucket

aws s3 mb s3://my-bucket --endpoint-url https://t3.storage.dev

# Upload a file

aws s3 cp ./file.bin s3://my-bucket/ --endpoint-url https://t3.storage.dev

# Download a file

aws s3 cp s3://my-bucket/file.bin ./file.bin --endpoint-url https://t3.storage.dev

If you set AWS_ENDPOINT_URL in your environment, you can drop the --endpoint-url flag entirely.

import boto3

from botocore.client import Config

s3 = boto3.client(

"s3",

endpoint_url="https://t3.storage.dev",

config=Config(s3={"addressing_style": "virtual"}),

)

# List buckets

for bucket in s3.list_buckets()["Buckets"]:

print(bucket["Name"])

# Upload a file

s3.upload_file("./file.bin", "my-bucket", "file.bin")
import { S3Client, ListBucketsCommand } from "@aws-sdk/client-s3";

const s3 = new S3Client({

region: "auto",

endpoint: "https://t3.storage.dev",

});

const { Buckets } = await s3.send(new ListBucketsCommand({}));

console.log(Buckets.map((b) => b.Name));
cfg, _ := config.LoadDefaultConfig(ctx)

svc := s3.NewFromConfig(cfg, func(o *s3.Options) {

o.BaseEndpoint = aws.String("https://t3.storage.dev")

o.Region = "auto"

})

result, _ := svc.ListBuckets(ctx, &s3.ListBucketsInput{})

for _, b := range result.Buckets {

fmt.Println(*b.Name)

}
S3Client s3 = S3Client.builder()

.endpointOverride(URI.create("https://t3.storage.dev"))

.region(Region.of("auto"))

.build();

s3.listBuckets().buckets().forEach(b -> System.out.println(b.name()));

AWS SDK guides

Tigris works with the official AWS SDKs for every language. Pick your language for full setup instructions, configuration options, and examples: