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 surface | Joule Cloud |
|---|---|
| GetObject / PutObject / DeleteObject / HeadObject | Identical |
| ListObjectsV2 + pagination | Identical |
| Multipart upload | Identical |
| Pre-signed URLs (sigv4) | Identical |
| Server-side encryption (SSE-S3, SSE-C) | Identical |
| Object versioning | Identical |
| Object tagging | Identical |
What's different
| Topic | How it differs |
|---|---|
| Pricing | Storage in joule-GB-month, retrieval in joules per byte (see Object Store). No per-request fee. |
| Egress | Zero inter-node egress on the mesh. Free reads from Joule Cloud Compute/Functions to Joule Cloud Object Store. |
| Regions | Our 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 launch | SelectObjectContent (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
- S3 Standard storage in us-east-1 costs ~$0.023 / GB-month + ~$0.09 / GB egress to internet. Our Standard tier comes out ~30% cheaper for storage and free for in-mesh transfer.
- The per-byte joule receipt is what shows up on your CSRD Scope 2 cloud-emissions filing — cleaner than AWS's aggregated estimates.
- For workloads that pair Compute + Object Store, the zero-egress economics dwarf the storage delta.
For the Object Store API surface in detail, see Object Store.