Documentation Menu

API keys & S3 clients

Connecting `aws` CLI, rclone, MinIO clients, anything S3.

Creating a key

/tools/cloud-storageAPI KeysCreate key.

  • Name — for your reference
  • Buckets — pick which buckets the key can access (or all)
  • Permissions — read, write, delete (combine as needed)

We show the Access Key ID + Secret Access Key once. Save them. We can't show the secret again — only revoke + reissue.

Endpoint

Use this as your S3 endpoint URL:

https://<your-account-id>.storage.suzko.net

Account ID shown on the storage dashboard.

AWS CLI

# One-time setup
aws configure --profile suzko
# Access key: <your key>
# Secret: <your secret>
# Region: auto
# Output format: json

# Use it
aws s3 ls s3://yourbucket/ \
  --endpoint-url https://<account-id>.storage.suzko.net \
  --profile suzko

aws s3 cp ./localfile.txt s3://yourbucket/ \
  --endpoint-url https://<account-id>.storage.suzko.net \
  --profile suzko

rclone

[suzko]
type = s3
provider = Other
access_key_id = <your key>
secret_access_key = <your secret>
endpoint = https://<account-id>.storage.suzko.net
region = auto

Then:

rclone copy ./mybackup suzko:yourbucket
rclone ls suzko:yourbucket

SDK examples

Node.js (@aws-sdk/client-s3):

import { S3Client, PutObjectCommand } from "@aws-sdk/client-s3";

const s3 = new S3Client({
  region: "auto",
  endpoint: "https://<account-id>.storage.suzko.net",
  credentials: {
    accessKeyId: process.env.SUZKO_ACCESS_KEY,
    secretAccessKey: process.env.SUZKO_SECRET_KEY,
  },
});

await s3.send(new PutObjectCommand({
  Bucket: "yourbucket",
  Key: "hello.txt",
  Body: "Hello world",
}));

Python (boto3):

import boto3

s3 = boto3.client(
    "s3",
    region_name="auto",
    endpoint_url="https://<account-id>.storage.suzko.net",
    aws_access_key_id="...",
    aws_secret_access_key="...",
)

s3.put_object(Bucket="yourbucket", Key="hello.txt", Body=b"Hello")

Rotating keys

API Keys → click the key → Rotate generates new credentials, the old ones stop working immediately. Update your code/CI before clicking rotate.

Best practices

  • One key per app/service. Don't share a master key.
  • Scope to the buckets the app actually needs.
  • Never check keys into git. Use env vars.
  • Rotate quarterly. Faster if a leak is suspected.