Skip to content

Object Storage (S3) ​

S3-compatible object storage for files, backups, media, and application data — with per-bucket access policies, CORS and lifecycle rules, and unlimited scalability.

What it is ​

Object Storage in WAYSCloud provides S3-compatible storage that works with any existing S3 client, SDK, or tool. Store and retrieve any amount of data with fine-grained access control.

Every request is served through the WAYSCloud endpoint storage.wayscloud.services; the underlying storage platform is fully managed and never exposed to your clients. Use it for application assets, backups, media hosting, or as a data lake.

When to use ​

Use this when you need:

  • Application file storage (uploads, media, documents)
  • Backup and archival storage for databases and VPS snapshots
  • Static asset hosting for web applications
  • S3-compatible integration with existing tools and workflows

When NOT to use:

How it works ​

Object Storage organizes data into buckets under your account.

  1. Create a bucket in the dashboard or with POST /v1/storage/buckets (region no).
  2. Create one or more access keys and grant exactly the S3 actions each key needs — per bucket or account-wide.
  3. Point any S3 client at https://storage.wayscloud.services with the key's access key and secret.
  4. Optionally configure public read access, CORS rules and a lifecycle policy per bucket.

Versioning is enabled platform-wide and Object Lock runs in Governance mode, so retention never blocks the platform from cleaning up after a delete.

Features ​

WAYSCloud Object Storage is designed for simplicity, compatibility, and security.

S3 Compatibility ​

  • Works with AWS SDKs, boto3, s3cmd, and any S3 client
  • Standard S3 API operations (multipart upload, presigned URLs)
  • Per-bucket CORS rules for browser access
  • Per-bucket lifecycle rules that expire objects and noncurrent versions

Access control ​

  • Private and public bucket visibility
  • Unlimited access keys with fine-grained S3 action grants per bucket
  • The gateway enforces every granted action on the S3 protocol

Data protection ​

  • Versioning enabled platform-wide
  • Object Lock in Governance mode with default retention
  • Encryption at rest

Management ​

  • Dashboard file browser with upload/download
  • Bucket settings (CORS, lifecycle) in the dashboard and API
  • Usage metrics and storage monitoring

Getting started ​

Using the dashboard ​

  1. Navigate to Object Storage (S3) in your WAYSCloud dashboard

  2. Click 'Create' to open the creation form

  3. Fill in the required fields

  4. Optionally configure

    • bucket_name — Bucket name (lowercase, alphanumeric and hyphens only)
    • region — Storage region (fixed: 'no' - Norway; the legacy 'no-oslo-1' spelling is accepted and normalized)
    • tier — Storage tier: 'standard' or 'enterprise' (dedicated infrastructure, enhanced performance)
    • is_public — Whether the bucket allows anonymous read access (public)
  5. Submit to create your resource

Using the API ​

All Object Storage (S3) functionality is available via the WAYSCloud API.

Create bucket ​

Create a new bucket. Names: 3-63 chars, lowercase/numbers/hyphens, globally unique, cannot be reused after deletion.

Storage Tiers:

  • standard (default): Reliable storage for general use
  • enterprise: High-performance storage with dedicated infrastructure and enhanced durability
bash
curl -X POST https://api.wayscloud.services/v1/storage/buckets \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{...}'

Create bucket key ​

Create an additional access key scoped to this bucket. Without actions the key keeps full access to the bucket (legacy default); with actions it is limited to the fine-grained S3 actions listed by GET /v1/storage/actions.

Note: secret_key is only returned once. Save it immediately!

bash
curl -X POST https://api.wayscloud.services/v1/storage/buckets/{bucket_name}/keys \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Backup Script Key",
  "actions": [
    "s3:GetObject",
    "s3:PutObject"
  ]
}'

Create access key ​

Create an account-level key from a policy document. Each grant names a bucket (or *) and the fine-grained S3 actions on it.

Note: secret_key is only returned once. Save it immediately!

bash
curl -X POST https://api.wayscloud.services/v1/storage/keys \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "backup-script",
  "grants": [
    {
      "bucket": "company-assets",
      "actions": [
        "s3:GetObject"
      ]
    }
  ]
}'

List buckets ​

Get all storage buckets with name, creation date, and usage statistics. The response is an array; it is empty when you have no buckets.

bash
curl https://api.wayscloud.services/v1/storage/buckets \
  -H "X-API-Key: YOUR_API_KEY"

List bucket keys ​

List the access keys that can reach this bucket. Secrets are never returned.

bash
curl https://api.wayscloud.services/v1/storage/buckets/{bucket_name}/keys \
  -H "X-API-Key: YOUR_API_KEY"

See all 25 endpoints in the Storage API reference.

Limits and quotas ​

  • Bucket name: lowercase letters, digits and hyphens, 3–63 characters.
  • Region: no only; other regions are rejected with a 400.
  • Object size: up to 5 TB via multipart upload (single PUT up to 5 GB through the gateway).
  • CORS: up to 100 rules per bucket, 100 origins per rule, max_age_seconds up to 86400. Subdomain wildcards are not supported.
  • Lifecycle: up to 1000 rules per bucket; transitions and tag filters are not supported.
  • Keys: unlimited per account; lifecycle/CORS actions are governed by the same key policy model.

Open Object Storage (S3) in dashboard