Rock8Cloud
Databases & Storage

S3 Object Storage

Deploy S3-compatible object storage for files, media, and assets

Rock8Cloud provides S3-compatible object storage that you can deploy alongside your services. Use it for file uploads, static assets, backups, or any S3-compatible workload.

Create an S3 Service

  1. Click Add Service in your project
  2. Select S3 Storage
  3. Enter a name (e.g., media-storage, uploads)
  4. Select a storage size
  5. Click Deploy S3 Storage

Rock8Cloud provisions the storage and generates access credentials automatically.


Credentials

After the S3 service is deployed, view your credentials from the service page:

VariableDescription
ENDPOINTS3 API endpoint URL
EXTERNAL_URLPublic URL for accessing objects
BUCKETName of your storage bucket
ACCESS_KEYAuthentication key for S3 API access
SECRET_KEYSecret key paired with the access key

Credentials are encrypted at rest and only decrypted when you view them.


Connecting Your Application

Add the S3 credentials as environment variables in your application service, then use any S3-compatible client library.

Use forcePathStyle: true and "garage" as the region — these are required for compatibility with the storage backend.

Example: AWS SDK (Node.js)

import { S3Client, PutObjectCommand } from "@aws-sdk/client-s3";

const s3 = new S3Client({
  endpoint: process.env.S3_ENDPOINT,
  region: "garage",
  credentials: {
    accessKeyId: process.env.S3_ACCESS_KEY,
    secretAccessKey: process.env.S3_SECRET_KEY,
  },
  forcePathStyle: true,
});

await s3.send(new PutObjectCommand({
  Bucket: process.env.S3_BUCKET,
  Key: "uploads/photo.jpg",
  Body: fileBuffer,
}));

Example: Python (boto3)

import boto3

s3 = boto3.client(
    "s3",
    endpoint_url=os.environ["S3_ENDPOINT"],
    aws_access_key_id=os.environ["S3_ACCESS_KEY"],
    aws_secret_access_key=os.environ["S3_SECRET_KEY"],
)

s3.upload_file("photo.jpg", os.environ["S3_BUCKET"], "uploads/photo.jpg")

Features

  • S3-compatible API — works with any S3 client library (AWS SDK, boto3, MinIO, etc.)
  • Network-accessible — accessible from services within your project and via the external URL
  • Persistent — data survives restarts and redeployments
  • Encrypted credentials — access keys are encrypted at rest

Deleting an S3 Service

  1. Go to your project
  2. Select the S3 service
  3. Click Delete
  4. Confirm the deletion

Deleting an S3 service removes the storage and all stored data permanently.


Troubleshooting

Access denied

  • Verify S3_ACCESS_KEY and S3_SECRET_KEY are correctly set
  • Ensure the bucket name matches S3_BUCKET

Connection issues

  • Use the internal endpoint for service-to-service access within your project
  • Use the external URL for access from outside your project
  • Ensure forcePathStyle: true is set in your client configuration

Region errors

  • Always use "garage" as the region — other values will fail

On this page