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 nameReturns
Boolean - true on success
S3.create_bucket("my-app-files")
S3.delete_bucket(name)
Deletes a bucket.
Parameters
name : String - Bucket nameReturns
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 namekey : String - Object key (path in bucket)body : String - Object contentoptions : 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 namekey : String - Object keyReturns
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 namekey : String - Object keyReturns
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 nameprefix : String - Optional prefix filterReturns
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")