You need the exc CLI installed and authenticated. See CLI Installation if you haven’t done that yet.

1. Create a bucket

exc buckets create my-first-bucket

Bucket names are unique per org. Use lowercase letters, numbers, and hyphens — same rules as S3.

2. Generate an S3 access key

exc buckets keys create laptop

Output:

ACCESS_KEY_ID: AKIAEXCLOUDEXAMPLE
SECRET_ACCESS_KEY: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

One-time secret

The secret is shown only once. If you lose it, delete the key and create a new one. Never commit either value to git.

Set them as environment variables for the rest of this guide:

export AWS_ACCESS_KEY_ID=AKIAEXCLOUDEXAMPLE
export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
export AWS_REGION=auto

3. Upload an object

Using the AWS CLI

aws --endpoint-url https://<org-id>.buckets.excloud.in \
  s3 cp ./hello.txt s3://my-first-bucket/hello.txt

Find your <org-id> with exc me or in any exc buckets list URL.

Using the exc CLI

exc buckets objects upload my-first-bucket ./hello.txt --key hello.txt

Using boto3

import boto3

s3 = boto3.client(
    "s3",
    endpoint_url="https://<org-id>.buckets.excloud.in",
    region_name="auto",
)

s3.upload_file("hello.txt", "my-first-bucket", "hello.txt")

4. Share

For a one-off, expiring URL:

exc buckets objects presign my-first-bucket hello.txt --ttl 3600

For a public object, flip the bucket to public and request the object’s public URL:

exc buckets update my-first-bucket --public true

Public objects are reachable at https://<org-id>.buckets.excloud.in/my-first-bucket/hello.txt.

5. Clean up

exc buckets objects delete my-first-bucket hello.txt
exc buckets delete         my-first-bucket
exc buckets keys delete    $AWS_ACCESS_KEY_ID

Where next