S3 Client Usage | Tigris Object Storage Documentation
On this page
TAG works with any S3-compatible client. The only change you need to make is pointing the endpoint URL at TAG and enabling path-style addressing. Standard S3 operations work as expected — this page covers the TAG-specific setup.
Credentials by mode
In transparent proxy mode (the default), clients authenticate with their own Tigris credentials — TAG forwards the signature to Tigris and never stores client secrets. In signing mode, clients must use credentials known to TAG's credential store. See Security and Access Control for details.
AWS CLI
Pass --endpoint-url with each command, or set up a named profile so you don't have to:
aws s3 ls --endpoint-url http://localhost:8080
Named profile
Add to ~/.aws/credentials:
[tag]
aws_access_key_id = your_access_key
aws_secret_access_key = your_secret_key
endpoint_url = http://localhost:8080
Then use --profile tag or set AWS_PROFILE=tag.
Python (boto3)
The key requirement is addressing_style: 'path':
import boto3
from botocore.config import Config
s3 = boto3.client(
's3',
endpoint_url='http://localhost:8080',
aws_access_key_id='your_access_key',
aws_secret_access_key='your_secret_key',
config=Config(s3={'addressing_style': 'path'}),
)
If your credentials are already in environment variables, you can omit aws_access_key_id and aws_secret_access_key.
Streaming large files
For large files, stream instead of loading entire objects into memory:
response = s3.get_object(Bucket='my-bucket', Key='large-file.bin')
with open('local-file.bin', 'wb') as f:
for chunk in response['Body'].iter_chunks(chunk_size=1024*1024):
f.write(chunk)
For large uploads, configure multipart thresholds:
from boto3.s3.transfer import TransferConfig
s3.upload_file(
'large-file.bin',
'my-bucket',
'large-file.bin',
Config=TransferConfig(
multipart_threshold=8*1024*1024,
multipart_chunksize=8*1024*1024,
max_concurrency=10,
),
)
Verifying cache behavior
Check the X-Cache header to confirm TAG is caching. For details on cache control headers and invalidation, see Cache Control and Revalidation.
Troubleshooting
For connection errors, authentication failures, timeouts, and path-style addressing issues, see Troubleshooting in the Deployment Guide.