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:
- Relational data — use Managed Databases
- File sync and collaboration — use WAYSCloud Drive
- Caching layer — use Redis
How it works
Object Storage organizes data into buckets under your account.
- Create a bucket in the dashboard or with
POST /v1/storage/buckets(regionno). - Create one or more access keys and grant exactly the S3 actions each key needs — per bucket or account-wide.
- Point any S3 client at
https://storage.wayscloud.serviceswith the key's access key and secret. - 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
Navigate to Object Storage (S3) in your WAYSCloud dashboard
Click 'Create' to open the creation form
Fill in the required fields
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)
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 useenterprise: High-performance storage with dedicated infrastructure and enhanced durability
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!
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!
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.
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.
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:
noonly; 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_secondsup 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.