Conjure.Storage.Tigris (Conjure v0.1.1-alpha)
View SourceFly.io Tigris object storage backend.
Tigris is Fly.io's globally-distributed, S3-compatible object storage. It automatically replicates data to regions close to your Fly Machines, providing low-latency access worldwide.
Fly.io Setup
# Create a Tigris bucket for your Fly app
fly storage create conjure-sessions
# Credentials are automatically injected as env vars:
# - AWS_ACCESS_KEY_ID
# - AWS_SECRET_ACCESS_KEY
# - AWS_ENDPOINT_URL_S3
# - BUCKET_NAMEOptions
:bucket- Bucket name (default:BUCKET_NAMEenv var):endpoint- Tigris endpoint (default:AWS_ENDPOINT_URL_S3env var):access_key_id- Access key (default:AWS_ACCESS_KEY_IDenv var):secret_access_key- Secret key (default:AWS_SECRET_ACCESS_KEYenv var):cache_path- Local cache directory (default:FLY_VOLUME_PATHor tmp_dir):region- Region hint for read affinity (default:FLY_REGIONenv var):prefix- Key prefix for objects (default:"sessions/"):async_upload- Upload asynchronously (default:false)
Usage
# On Fly.io - zero config needed
{:ok, session} = Conjure.Session.new_docker(skills,
storage: Conjure.Storage.Tigris
)
# Local development with Tigris credentials
{:ok, session} = Conjure.Session.new_docker(skills,
storage: {Conjure.Storage.Tigris,
bucket: "dev-sessions",
endpoint: "https://fly.storage.tigris.dev"
}
)Multi-Region Session Affinity
Tigris automatically serves data from the nearest region. For debugging or session routing, you can include region in the session prefix:
{:ok, session} = Conjure.Session.new_docker(skills,
storage: {Conjure.Storage.Tigris,
prefix: "sessions/#{System.get_env("FLY_REGION")}/"
}
)See Also
Conjure.Storage- Storage behaviourConjure.Storage.S3- Generic S3 storage- Tigris Object Storage
- Fly.io Tigris Integration
Summary
Types
@type t() :: %Conjure.Storage.Tigris{s3_state: Conjure.Storage.S3.t()}