ESC
Type to search...
S
Soli Docs

S3 Class

Amazon S3 and S3-compatible storage for buckets, objects, and file operations. Works with MinIO, DigitalOcean Spaces, and other S3-compatible services.

Configuration

Environment variables are loaded automatically at app startup from .env files.

Environment Variables

AWS_ACCESS_KEY_ID or S3_ACCESS_KEY

Access key

AWS_SECRET_ACCESS_KEY or S3_SECRET_KEY

Secret key

AWS_REGION or S3_REGION

Region (default: us-east-1)

S3_ENDPOINT

Custom endpoint for S3-compatible services

# Amazon S3
S3_ACCESS_KEY=your_access_key
S3_SECRET_KEY=your_secret_key
S3_REGION=us-east-1

# Or MinIO / DigitalOcean Spaces / Custom S3
# S3_ENDPOINT=http://localhost:9000

Bucket Operations

S3.list_buckets()

Lists all buckets in the S3 account.

Returns

Array of bucket names

let buckets = S3.list_buckets()
print(buckets)  # ["bucket1", "bucket2"]
S3.create_bucket(name)

Creates a new bucket.

Parameters

name : String - Bucket name

Returns

Boolean - true on success

S3.create_bucket("my-app-files")
S3.delete_bucket(name)

Deletes a bucket.

Parameters

name : String - Bucket name

Returns

Boolean - true on success

S3.delete_bucket("my-app-files")

Object Operations

S3.put_object(bucket, key, body, options?)

Uploads an object to S3.

Parameters

bucket : String - Bucket name
key : String - Object key (path in bucket)
body : String - Object content
options : Hash - Optional options (content_type)

Returns

Boolean - true on success

# Simple upload
S3.put_object("my-bucket", "hello.txt", "Hello World!")

# With content type
S3.put_object("my-bucket", "data.json", '{"key": "value"}', {
    "content_type": "application/json"
})
S3.get_object(bucket, key)

Downloads an object from S3.

Parameters

bucket : String - Bucket name
key : String - Object key

Returns

String - Object content

let content = S3.get_object("my-bucket", "hello.txt")
print(content)  # "Hello World!"
S3.delete_object(bucket, key)

Deletes an object from S3.

Parameters

bucket : String - Bucket name
key : String - Object key

Returns

Boolean - true on success

S3.delete_object("my-bucket", "hello.txt")
S3.list_objects(bucket, prefix?)

Lists objects in a bucket.

Parameters

bucket : String - Bucket name
prefix : String - Optional prefix filter

Returns

Array of object keys

# List all objects
let files = S3.list_objects("my-bucket")

# List objects with prefix
let files = S3.list_objects("my-bucket", "documents/")
S3.copy_object(source, dest)

Copies an object within S3.

Parameters

source : String - Source in format "bucket/key"
dest : String - Destination in format "bucket/key"

Returns

Boolean - true on success

S3.copy_object("source-bucket/file.txt", "dest-bucket/file.txt")