SDK и инструменты
Подходит всё, что умеет S3. Ниже клиенты, с которыми мы тестируем каждый релиз.
AWS CLI
aws configure set default.s3.signature_version s3v4 aws s3 mb s3://media --endpoint-url https://api.objectbasin.com aws s3 sync ./assets s3://media/2026 --endpoint-url https://api.objectbasin.com
Python (boto3)
import boto3
s3 = boto3.client("s3", endpoint_url="https://api.objectbasin.com",
aws_access_key_id=KEY, aws_secret_access_key=SECRET)
s3.upload_file("hero.jpg", "media", "2026/hero.jpg",
ExtraArgs={"ContentType": "image/jpeg"})
Node.js
import { S3Client, PutObjectCommand } from "@aws-sdk/client-s3";
const s3 = new S3Client({ endpoint: "https://api.objectbasin.com", region: "eu-central-1" });
await s3.send(new PutObjectCommand({ Bucket: "media", Key: "2026/hero.jpg", Body: buf }));
rclone
rclone config create objb s3 provider Other \ endpoint https://api.objectbasin.com \ access_key_id $KEY secret_access_key $SECRET rclone check ./assets objb:media/2026 --checksum
Go и Rust
Официальные SDK работают с любым адресом API и адресацией по пути: включите UsePathStyle (Go) или force_path_style (Rust) и отключите трейлер x-amz-checksum-*, если ваша сборка старше 2024 года.
Совместимость
| Возможность | Статус |
|---|---|
| Подпись SigV4 | Поддерживается |
| Multipart-загрузка | Поддерживается (до 10 000 частей) |
| Range-запросы | Поддерживаются, включая множественные |
| Политики бакетов | Поддерживаются (JSON, синтаксис S3) |
| Object lock / WORM | Пока нет — в плане на I квартал |
| S3 Select, архивные классы | Не поддерживаются осознанно |