Configure Storage Backends
Local Filesystem (Default)
When no storage URI is provided, Apiary uses the local filesystem:
from apiary import Apiary
ap = Apiary("my_project") # Stores data at ~/.apiary/my_project/
This is suitable for solo mode on a single machine. Data lives at ~/.apiary/{name}/.
MinIO (Self-Hosted S3)
Start MinIO
docker run -d --name minio \
-p 9000:9000 -p 9001:9001 \
-e MINIO_ROOT_USER=apiary \
-e MINIO_ROOT_PASSWORD=apiary123 \
-v minio-data:/data \
minio/minio server /data --console-address ":9001"
Create a Bucket
# Using the MinIO client
docker exec -it minio mc alias set local http://localhost:9000 apiary apiary123
docker exec -it minio mc mb local/apiary-data
Or use the MinIO Console at http://localhost:9001.
Connect Apiary
export AWS_ACCESS_KEY_ID=apiary
export AWS_SECRET_ACCESS_KEY=apiary123
export AWS_ENDPOINT_URL=http://localhost:9000
from apiary import Apiary
ap = Apiary("production", storage="s3://apiary-data/prod")
ap.start()
AWS S3
Create a Bucket
aws s3 mb s3://my-apiary-bucket --region us-east-1
Configure Credentials
Option 1: Environment variables
export AWS_ACCESS_KEY_ID=AKIA...
export AWS_SECRET_ACCESS_KEY=...
export AWS_REGION=us-east-1
Option 2: AWS credentials file (~/.aws/credentials)
[default]
aws_access_key_id = AKIA...
aws_secret_access_key = ...
region = us-east-1
Option 3: IAM role (for EC2 instances or ECS tasks) -- no explicit credentials needed.
Connect Apiary
from apiary import Apiary
ap = Apiary("production", storage="s3://my-apiary-bucket/apiary")
ap.start()
With a Specific Region
ap = Apiary("production", storage="s3://my-apiary-bucket/apiary?region=eu-west-1")
Google Cloud Storage (via S3 Compatibility)
Apiary does not natively support gs:// URIs. However, GCS provides an S3-compatible endpoint that works with Apiary's S3 backend.
Create a Bucket
gsutil mb gs://my-apiary-bucket