Быстрый старт
Руководство занимает около десяти минут. Нужны рабочее пространство и AWS CLI версии 2 или любой S3 SDK.
1. Создайте ключ доступа
В консоли откройте Ключи доступа → Новый ключ. Для этого руководства выберите область Все бакеты и набор прав Чтение и запись. Скопируйте секрет — он показывается только один раз.
2. Настройте клиент
[profile tcn]
region = fra1
endpoint_url = https://fra1.s3.tcnstorage.store
s3 =
addressing_style = virtual[tcn]
aws_access_key_id = TCNK7Q2M4X9EXAMPLE
aws_secret_access_key = <ваш секретный ключ>3. Создайте бакет и загрузите файл
# Point any S3 tool at your region endpoint
export AWS_ACCESS_KEY_ID="TCNK7Q2M4X9EXAMPLE"
export AWS_SECRET_ACCESS_KEY="<ваш секретный ключ>"
aws s3 mb s3://media-assets --endpoint-url https://fra1.s3.tcnstorage.store
aws s3 cp ./poster.jpg s3://media-assets/2026/poster.jpg \
--endpoint-url https://fra1.s3.tcnstorage.store \
--cache-control "public, max-age=86400"import boto3
s3 = boto3.client(
"s3",
endpoint_url="https://fra1.s3.tcnstorage.store",
region_name="fra1",
)
s3.upload_file("poster.jpg", "media-assets", "2026/poster.jpg",
ExtraArgs={"ContentType": "image/jpeg"})
url = s3.generate_presigned_url(
"get_object",
Params={"Bucket": "media-assets", "Key": "2026/poster.jpg"},
ExpiresIn=3600,
)
print(url)import { S3Client, PutObjectCommand } from "@aws-sdk/client-s3";
import { readFile } from "node:fs/promises";
const s3 = new S3Client({
region: "fra1",
endpoint: "https://fra1.s3.tcnstorage.store",
});
await s3.send(new PutObjectCommand({
Bucket: "media-assets",
Key: "2026/poster.jpg",
Body: await readFile("poster.jpg"),
ContentType: "image/jpeg",
}));Большие файлы — CLI и SDK автоматически переходят на multipart для файлов больше 8 МиБ и загружают части параллельно.
4. Включите edge-доставку
Edge-доставка отдаёт публичные объекты из всех точек присутствия. Включите её в консоли в разделе Бакет → Edge или через Management API:
curl
curl -X PATCH https://api.tcnstorage.store/v1/buckets/media-assets \
-H "Authorization: Bearer $TCN_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"edge":{"enabled":true,"default_ttl":86400}}'5. Проверьте
Edge-URL
# Публичные бакеты отдаются с ближайшей edge-точки
curl -I https://media-assets.cdn.tcnstorage.store/2026/poster.jpg
HTTP/2 200
content-type: image/jpeg
cache-control: public, max-age=86400
x-tcn-edge: hit
x-tcn-region: fra1Заголовок x-tcn-edge показывает miss при первом запросе к точке и hit после. Готово — бакет работает.