Migrate from AWS S3

Joule Cloud's Object Store is S3-API-compatible. Point your AWS SDK at our endpoint, swap your credentials, done. The hard part is the data move — we've made that easy too.

Step 1: change the endpoint

# Python (boto3)
import boto3

s3 = boto3.client(
    "s3",
    endpoint_url="https://api.greenjoules.cloud",
    aws_access_key_id="jc_…",
    aws_secret_access_key="jc_…",
    region_name="auto",
)
// Node (AWS SDK v3)
import { S3Client } from "@aws-sdk/client-s3";

const s3 = new S3Client({
  endpoint: "https://api.greenjoules.cloud",
  credentials: { accessKeyId: "jc_…", secretAccessKey: "jc_…" },
  region: "auto",
  forcePathStyle: true,
});
# Go
cfg := aws.Config{
  Region: "auto",
  Credentials: credentials.NewStaticCredentials("jc_…", "jc_…", ""),
  Endpoint: aws.String("https://api.greenjoules.cloud"),
  S3ForcePathStyle: aws.Bool(true),
}

Step 2: move the data

Use rclone, AWS CLI sync, or our jc CLI helper. For multi-TB migrations, the jc CLI parallelizes per-key and only pays the egress on the AWS side (we don't charge for ingress to the mesh).

# rclone (most flexible)
rclone copy s3:/my-bucket jc:/my-bucket --transfers 32 --checksum

# AWS CLI sync (one shot)
aws s3 sync s3://my-bucket s3://my-bucket \
  --endpoint-url https://api.greenjoules.cloud \
  --profile jc

# jc CLI (resumable, parallelized, per-object joule readout)
jc storage sync s3://my-bucket jc://my-bucket --workers 32

What's the same

S3 surfaceJoule Cloud
GetObject / PutObject / DeleteObject / HeadObjectIdentical
ListObjectsV2 + paginationIdentical
Multipart uploadIdentical
Pre-signed URLs (sigv4)Identical
Server-side encryption (SSE-S3, SSE-C)Identical
Object versioningIdentical
Object taggingIdentical

What's different

TopicHow it differs
PricingStorage in joule-GB-month, retrieval in joules per byte (see Object Store). No per-request fee.
EgressZero inter-node egress on the mesh. Free reads from Joule Cloud Compute/Functions to Joule Cloud Object Store.
RegionsOur region names map to ours (eu-fi, eu-de, us-east). The SDK's region parameter is informational.
Lifecycle (cold archive)Storage classes: Standard / Cool / Cold. Configurable as a bucket-level policy; per-object lifecycle transitions on the roadmap.
Not implemented at launchSelectObjectContent (S3 Select), CRR (replication APIs), inventory reports.

Rollback

If you want to roll back, run jc storage sync the other way (jc → s3). We don't lock your data into the mesh; the format on the wire is exactly what AWS understands.

Why bother

For the Object Store API surface in detail, see Object Store.