Object Storage

S3, without the S3 bill you cannot predict.

S3-compatible buckets on a prepaid tier that includes storage, egress, and requests. Your existing S3 client works unchanged, and an optional CDN puts objects at the edge when you need them there.

  • 9 regions
  • from USD 5 / month
  • S3 compatible
  • Private by default
acme-assets · eu-north-1Growth
# the client you already have$ aws s3 cp ./build s3://acme-assets/ --recursiveupload: build/app.js  →  s3://acme-assets/app.jsupload: build/app.css →  s3://acme-assets/app.css2 files uploaded# served from the edgehttps://cdn.acme.com/app.js  200  cache HIT

INCLUDED

3 allowances

Storage, egress, and requests

ENTRY TIER

USD 5/ mo

25 GB storage, 10 GB egress

CDN

USD 0.12/ GB

Opt-in add-on, toggle any time

OVERAGE

USD 0.20/ GB-mo

Storage past the plan, with an optional monthly limit

Three steps to a public URL

Nothing new to learn

A bucket here behaves like a bucket anywhere. What changes is that the allowances are prepaid, and an overage limit caps what going past them can add, so the bill is a number you chose rather than one you discover.

  1. 01

    Create a bucket on a tier

    Pick a region and a prepaid tier. The tier sets the storage, egress, and request allowances included each month.

  2. 02

    Point your S3 client at it

    Any S3-compatible SDK or tool works unchanged — the AWS CLI, boto3, the JavaScript SDK, or whatever your framework already uses.

  3. 03

    Serve it publicly, or through the CDN

    Make the bucket public for a plain HTTPS URL, then add the CDN when you want objects cached at edge locations worldwide.

What comes with a bucket

Built on S3, managed by us

The same infrastructure behind every tier. What differs is the allowance, and what Cosmoner adds around it.

S3-compatible API

Backed by AWS S3, so any S3-compatible SDK or tool talks to it unchanged. There is no client library to adopt and no dialect to learn.

aws s3 · boto3 · @aws-sdk/client-s3

Optional global CDN

Put a CloudFront distribution in front of a public bucket to cache objects at edge locations worldwide. Toggle it on or off at any time.

USD 0.12 / GB · USD 0.015 / 10K requests

Private by default

Objects are reachable only with signed credentials until you explicitly make a bucket public. Everything is encrypted at rest.

publicAccess: false

Never cut off for growing

At 80% of any allowance you get an in-app notification and an email. Past the allowance the bucket keeps working and the excess is billed as overage — up to a monthly limit you can set, which alerts you or blocks the bucket.

80% warn · overage · optional limit

CORS you control

Set the origins, methods, and headers a browser may use against the bucket, so a web app can upload directly without a proxy in between.

Per-bucket rules

Instant, prorated upgrades

Move a bucket to a larger tier the moment traffic demands it. Upgrades apply immediately and are prorated against the billing cycle.

Unblocks a bucket at its overage limit

Public access and delivery

Two URLs, and you decide which ones exist

A private bucket has no public surface at all. Making it public gives it a plain HTTPS URL; adding the CDN gives it a second, cached one.

  • Both URLs are shown on the bucket overview page as soon as they exist.
  • Serve the whole bucket or only chosen folders. On a private bucket, the CDN URL is the only way in.
  • Disabling the CDN removes its cost; the regular public URL keeps working if public access is on.
  • CORS rules are set per bucket, so browser uploads never need a proxy of your own.
PATCH /v1/projects/:projectId/storage/object-storage/:bucketId/cdn200
{  "cdnEnabled": true}
# public URL, always availablehttps://acme-assets.s3.eu-north-1.amazonaws.com/…# CDN URL, once provisionedhttps://d3k1v9m2q0abcd.cloudfront.net/…

Prepaid tiers

Pick the allowance, not the invoice

Every tier includes storage, egress, and requests together. Upgrades are instant and prorated, and the CDN is the only add-on that meters.

Starter
USD 5 / month
25 GB storage · 10 GB egress · 500K requests. Development, prototypes, and low-traffic assets.
Growth
USD 20 / month
100 GB storage · 50 GB egress · 2M requests. Production workloads with moderate traffic.
Scale
USD 75 / month
500 GB storage · 250 GB egress · 5M requests. Media-heavy apps and CDN origins.
Enterprise
USD 300 / month
2 TB storage · 1 TB egress · 20M requests. Data lakes and high-throughput APIs.

All tiers run on the same AWS S3 infrastructure — only the included allowances differ. Usage past them is billed at USD 0.20 / GB-month of storage, USD 0.12 / GB of egress and USD 0.02 / 10K requests. CDN delivery is metered separately at USD 0.12 / GB and USD 0.015 / 10K requests.

One project

What it plugs into

Buckets sit in the same project as the apps reading from them, on the same invoice and behind the same access controls.

Questions worth answering up front

Tier limits, regions, CORS, and the full API are covered in the Object Storage guide.

Which tier should I start on?
Weigh all three allowances, not just storage — a small dataset with heavy read traffic can need a larger tier than a big archive nobody touches. Starter or Growth is the right guess when you are unsure, because upgrading is instant.
What happens if I go over?
At 80% of any dimension you are warned in-app and by email. Past the allowance the bucket keeps working, and the excess is billed at USD 0.20 / GB-month of storage, USD 0.12 / GB of egress and USD 0.02 / 10K requests. You can set a monthly overage limit on each bucket that either emails you or blocks reads and writes until the next billing period.
Do I need the CDN?
Only if you serve assets to end users. It works on public and private buckets alike, can be limited to chosen folders, and delivery is metered on top of the tier. Turning it off removes the added cost.
Can I upload straight from the browser?
Yes. Set the bucket's CORS rules to allow your origin and the methods you need, and a web app can upload without routing files through your own server.
Which region should I pick?
One close to the servers doing the reading and writing — nine are available across the US, Europe, and Asia Pacific. Proximity cuts both latency and egress cost.
What happens when I delete a bucket?
The bucket and its objects are removed and the tier's subscription stops. Metered CDN usage already recorded in the period is still invoiced.

Growing into it

Room to grow, on your terms

Usage is tracked per bucket across all three dimensions and checked daily. Going past the plan never stops a bucket on its own — only a limit you set does.

80%

Early warning

An in-app notification and an email. Nothing changes on the bucket — it is a prompt to consider the next tier.

100%

Overage, not suspension

The bucket keeps serving. What it uses past the plan is billed per GB and per request, up to a monthly limit you can set to alert you or block the bucket.

Instant

Upgrade when it pays

Once a bucket is regularly past its plan, a larger tier is the cheaper choice. It applies immediately and is prorated against the current billing cycle.

Ready to get started?

Create your free account and deploy your first project in minutes.