Docs / Spaces
Use Spaces with the AWS CLI
5 minute read
Spaces is S3-compatible object storage in Lagos. Anything that speaks S3 works with it once you point it at https://spaces.simplicloud.ai. Your plan includes 250 GB for ₦6,750 a month across all buckets, then ₦27 per GB; downloads are free during the pilot.
1. Create a bucket and an access key
Open Spaces object storage and choose Create bucket. Pick Private (only keys can read) or Public read (anyone with the link). Bucket names are global, lowercase, and can use letters, numbers and dashes.
Then choose New key under Access keys. Copy the secret now; it won't be shown again. Keys start with SC and can read and write all buckets in the organisation.
simplicloud spaces buckets create kora-media --access privatesimplicloud spaces keys create storefront# access key SC4RVQLR37M6BQS3XC45# secret wJ8x… (shown once)
2. Configure the AWS CLI
Save the key in a named profile so it does not clash with any real AWS credentials. Use region lagos1 and path-style addressing.
aws configure --profile simplicloud# AWS Access Key ID: SC4RVQLR37M6BQS3XC45# AWS Secret Access Key: <your secret># Default region name: lagos1# Default output format: jsonaws configure set profile.simplicloud.s3.addressing_style path
--endpoint-url https://spaces.simplicloud.ai on every command. AWS CLI 2.13 and newer also accept endpoint_url = https://spaces.simplicloud.ai in the profile.3. Upload, list and download
Files over 8 MB upload in parts automatically. sync only copies what changed, which makes it a good fit for backups.
export AWS_PROFILE=simplicloudS3="aws --endpoint-url https://spaces.simplicloud.ai s3"$S3 cp ./menu.jpg s3://kora-media/menu.jpg$S3 ls s3://kora-media/$S3 sync ./uploads s3://kora-media/uploads --delete$S3 cp s3://kora-media/menu.jpg ./menu-copy.jpg
4. Share a private file for a while
A presigned link lets someone download one object from a private bucket without a key. It stops working when it expires.
aws --endpoint-url https://spaces.simplicloud.ai \s3 presign s3://kora-invoices/2026/INV-0412.pdf --expires-in 3600# https://spaces.simplicloud.ai/kora-invoices/2026/INV-0412.pdf?X-Amz-Algorithm=…
5. Use it from your code
Every S3 SDK works. Set the endpoint, the region and path-style access; keep the key in environment variables.
import { S3Client, PutObjectCommand } from "@aws-sdk/client-s3";const s3 = new S3Client({endpoint: "https://spaces.simplicloud.ai",region: "lagos1",forcePathStyle: true,credentials: {accessKeyId: process.env.SPACES_KEY,secretAccessKey: process.env.SPACES_SECRET,},});await s3.send(new PutObjectCommand({Bucket: "kora-media", Key: "products/jollof.jpg", Body: file, ContentType: "image/jpeg",}));