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:

Credentials Table

VariableDescription
ENDPOINTS3 API endpoint URL
EXTERNAL_URLPublic URL for accessing objects
BUCKETName of your storage bucket
REGIONS3 region (auto-configured)
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 — this is required for compatibility with the storage backend. The S3_REGION environment variable is set automatically.

Example: AWS SDK (Node.js)

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

const s3 = new S3Client({
  endpoint: process.env.S3_ENDPOINT,
  region: process.env.S3_REGION,
  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"],
    region_name=os.environ["S3_REGION"],
    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

  • The S3_REGION environment variable is set automatically — don't hardcode a region value
  • If you see region-related errors, make sure S3_REGION is included in your service's environment variables

On this page