Overview
S2 Lite uses object storage as its primary durability layer through SlateDB. This guide covers setup for popular S3-compatible storage providers.AWS S3
Prerequisites
- AWS account with S3 access
- IAM credentials or EC2 instance profile
- S3 bucket created in your desired region
IAM Permissions
Create an IAM policy with the following permissions:Local Development with AWS Profile
1
Configure AWS credentials
Ensure your AWS credentials are configured:
2
Create an S3 bucket
3
Run S2 Lite with Docker
Production with IAM Roles
EC2 Instance Profile
1
Create IAM role
Create an IAM role with the S2 Lite policy and attach it to your EC2 instance.
2
Launch S2 Lite
Kubernetes with IRSA (EKS)
1
Create IAM role for service account
2
Install Helm chart with IRSA
Static Credentials (Not Recommended)
Tigris
Tigris provides globally distributed S3-compatible object storage with low latency.Setup
1
Create Tigris bucket
Sign up at tigrisdata.com and create a bucket.
2
Get credentials
Generate access credentials from the Tigris console:
- AWS Access Key ID
- AWS Secret Access Key
3
Run S2 Lite
Kubernetes Deployment
1
Create secret for credentials
2
Deploy with Helm
Cloudflare R2
Cloudflare R2 provides S3-compatible storage with zero egress fees.Setup
1
Create R2 bucket
Create a bucket in the Cloudflare dashboard under R2.
2
Generate API token
Create an R2 API token with read and write permissions:
- Access Key ID
- Secret Access Key
- Account ID (for endpoint)
3
Run S2 Lite
Public Endpoint (Optional)
Cloudflare R2 supports custom domains for public bucket access:MinIO (Self-Hosted)
MinIO is a high-performance, self-hosted S3-compatible object store.Local Development
1
Start MinIO server
2
Create bucket
Access MinIO console at http://localhost:9001 and create a bucket named
s2lite.3
Run S2 Lite
Production Deployment
For production MinIO deployments:Advanced Configuration
SlateDB Settings
Customize SlateDB behavior usingSL8_ prefixed environment variables:
Enable Pipelining (Experimental)
Enable append pipelining for improved performance:Path Organization
Use the--path flag to organize multiple S2 Lite instances in the same bucket:
Testing Your Setup
1
Check server health
200 OK.2
Configure S2 CLI
3
Create a basin
4
Test write and read
Troubleshooting
Connection Issues
Error: Failed to connect to object storage
Error: Failed to connect to object storage
- Verify bucket name is correct
- Check endpoint URL format (must include
https://orhttp://) - Ensure credentials have proper permissions
- Test connectivity:
aws s3 ls s3://your-bucket --endpoint-url $AWS_ENDPOINT_URL_S3
Error: Access Denied
Error: Access Denied
- Review IAM policy permissions
- Verify bucket exists in the specified region
- Check that credentials are not expired
- For IRSA, ensure service account annotations are correct
Error: Region mismatch
Error: Region mismatch
S2 Lite auto-detects region from AWS config. Set explicitly if needed:
Performance Issues
High latency on appends
High latency on appends
- Reduce
SL8_FLUSH_INTERVALfor faster acknowledgment (at cost of more object store writes) - Enable pipelining with
S2LITE_PIPELINE=true(experimental) - Ensure S2 Lite is deployed in the same region as your object storage
Slow startup
Slow startup
S2 Lite sleeps for one
manifest_poll_interval on startup to ensure proper fencing. This is expected behavior. Reduce interval if needed:Next Steps
Production Deployment
Deploy S2 Lite on Kubernetes with Helm
Backup & Restore
Configure backup strategies for your data