Object storage · Mumbai
S3, minus the exit fee.
S3-compatible buckets behind one endpoint. Anything that speaks S3 — the aws CLI, boto3,
the AWS SDKs, rclone, MinIO mc — works unchanged. Storage is
₹1.30/GiB-month, metered hourly, and moving data in or out
costs ₹0. Both directions.
endpoint https://buckets.excloud.dev · SigV4 · path-style
$ exc buckets create my-bucket
$ exc buckets keys create laptop
# secret shown exactly once — save it
$ aws --endpoint-url https://buckets.excloud.dev \
s3 cp ./photo.jpg s3://my-bucket/photo.jpg
upload: ./photo.jpg to s3://my-bucket/photo.jpg The rate readout
Five line items. Two of them are zero.
Storage is metered hourly, so you pay for what you actually hold — not the high-water mark. Transfer is free in both directions today; we record usage anyway, so if transparent egress pricing ever arrives, it arrives with history instead of surprises.
Full object storage pricing| Item | What it covers | Rate |
|---|---|---|
| Storage | metered hourly — pay for what you actually hold | ₹1.30/GiB-mo |
| Class A requests | writes: PUT, COPY, POST, LIST | ₹390/million |
| Class B requests | reads: GET, HEAD | ₹31/million |
| Ingress | data in | ₹0 |
| Egress | data out | ₹0 |
| Storage | 100 GiB held for the month | ₹130 |
| Class A | 2M writes | ₹780 |
| Class B | 10M reads | ₹310 |
| Transfer | in + out | ₹0 |
| Total | one month | ₹1,220 |
s3 = boto3.client(
"s3",
endpoint_url="https://buckets.excloud.dev",
region_name="auto",
aws_access_key_id="EXC...",
aws_secret_access_key="...",
config=Config(s3={"addressing_style": "path"}),
) Drop-in S3
Change the endpoint. Keep the code.
Standard SigV4 signatures, path-style addressing only (forcePathStyle: true
in the JS SDK, addressing_style: "path" in boto3). The region value can be
anything; we recommend "auto". Access key IDs are prefixed
EXC, not AKIA — and the secret is shown exactly once, at
creation.
Bucket names are unique within your org, not globally — the org is resolved from your
access key, not the URL, so nobody has squatted my-bucket before you. The
CLI covers the rest: exc buckets list / get / update / delete / usage,
exc buckets objects upload / download / list / presign / share, and
exc buckets keys configure EXC... --profile excloud to wire up an AWS
profile.
What's in the bucket
The S3 you actually use.
-
Multipart, range, conditional copy
Multipart uploads for the big objects, range reads for the partial ones, and CopyObject with conditional source headers for the careful ones.
-
Presigned URLs
Hand out time-limited GET and HEAD links to objects without handing out credentials. One command: exc buckets objects presign.
-
Encrypted at rest, by default
Server-side encryption at rest is on by default. Not a checkbox you find after the audit — the starting state.
-
Public buckets
Flip a bucket public and its objects serve from https://<org-id>.objects.excloud.dev/public/<bucket>/<key>. Flip it back with exc buckets update --public false.
Not there yet
What we don't do — yet.
There is no object versioning yet. Also missing: lifecycle policies, object lock, replication, event notifications, and presigned PUT — presigned URLs are GET and HEAD only. One region: Mumbai. If your workload depends on any of those today, check the compatibility matrix before you migrate, not after.
Point your tools at Mumbai.
One bucket, one key, one aws s3 cp — and your egress line item retires.