An S3-compatible API server daemon.
- S3-compatible REST API endpoints
- AWS Signature Version 4 (SigV4) authentication support
- File-based storage backend
- Daemon mode support
- Configurable via TOML configuration file
- Logging support
cargo build --releaseCreate a configuration file (see depotd.toml.example for reference):
[server]
host = "127.0.0.1"
port = 9000
# Optional: If not provided, server runs in open mode (no authentication)
access_key = "your-access-key"
secret_key = "your-secret-key"
[storage]
root_path = "./data"
[logging]
level = "info"./target/release/depotd --config depotd.toml./target/release/depotd --config depotd.toml --daemon --pid-file /tmp/depotd.pidThe server implements the following S3-compatible endpoints:
GET /- List all bucketsPUT /:bucket- Create a bucketDELETE /:bucket- Delete a bucketGET /:bucket- List objects in a bucket (supports?prefix=query parameter)GET /:bucket/*key- Get an objectPUT /:bucket/*key- Put an objectDELETE /:bucket/*key- Delete an object
Objects are stored in the filesystem under the root_path specified in the
configuration. Each bucket is a directory, and objects are files within those
directories.
The server supports AWS Signature Version 4 (SigV4) authentication. If
access_key and secret_key are configured, all requests must be
authenticated. If not configured, the server runs in open mode without
authentication.
# Configure AWS CLI to use depotd
aws configure set endpoint-url http://127.0.0.1:9000
aws configure set aws_access_key_id your-access-key
aws configure set aws_secret_access_key your-secret-key
# Create a bucket
aws s3 mb s3://my-bucket
# Upload a file
aws s3 cp myfile.txt s3://my-bucket/
# List objects
aws s3 ls s3://my-bucket/
# Download a file
aws s3 cp s3://my-bucket/myfile.txt ./
# Delete an object
aws s3 rm s3://my-bucket/myfile.txt