SDK с WebShield S3
С объектным хранилищем WebShield работает любой AWS SDK — направьте S3-клиент на endpoint WebShield и включите path-style адресацию. Как получить ключи и создать бакеты — см. Объектное хранилище.
Что понадобится
Заголовок раздела «Что понадобится»- Endpoint:
https://s3.webshield.pro - Access Key ID и Secret Access Key со страницы Хранилище S3 в личном кабинете.
- Полное имя бакета с префиксом аккаунта (например,
u42-backups).
Не вшивайте секретный ключ в исходный код — читайте его из переменной окружения или менеджера секретов.
Python (boto3)
Заголовок раздела «Python (boto3)»import boto3
s3 = boto3.client( "s3", endpoint_url="https://s3.webshield.pro", aws_access_key_id="WSS...", aws_secret_access_key="<секрет>", region_name="us-east-1", # любое значение; WebShield его не использует)
s3.upload_file("backup.tar.gz", "u42-backups", "db/backup.tar.gz")s3.download_file("u42-backups", "db/backup.tar.gz", "restored.tar.gz")
for obj in s3.list_objects_v2(Bucket="u42-backups", Prefix="db/").get("Contents", []): print(obj["Key"], obj["Size"])boto3 использует path-style адресацию по умолчанию, если задан нестандартный endpoint_url.
JavaScript (AWS SDK v3)
Заголовок раздела «JavaScript (AWS SDK v3)»import { S3Client, PutObjectCommand } from "@aws-sdk/client-s3";import { readFileSync } from "node:fs";
const s3 = new S3Client({ endpoint: "https://s3.webshield.pro", region: "us-east-1", forcePathStyle: true, credentials: { accessKeyId: "WSS...", secretAccessKey: process.env.WS_SECRET_KEY, },});
await s3.send(new PutObjectCommand({ Bucket: "u42-backups", Key: "db/backup.tar.gz", Body: readFileSync("backup.tar.gz"),}));forcePathStyle: true обязателен.
Go (aws-sdk-go-v2)
Заголовок раздела «Go (aws-sdk-go-v2)»cfg, _ := config.LoadDefaultConfig(context.TODO(), config.WithRegion("us-east-1"), config.WithCredentialsProvider(credentials.NewStaticCredentialsProvider( "WSS...", os.Getenv("WS_SECRET_KEY"), "")),)client := s3.NewFromConfig(cfg, func(o *s3.Options) { o.BaseEndpoint = aws.String("https://s3.webshield.pro") o.UsePathStyle = true})PHP (aws-sdk-php)
Заголовок раздела «PHP (aws-sdk-php)»$s3 = new Aws\S3\S3Client([ 'version' => 'latest', 'region' => 'us-east-1', 'endpoint' => 'https://s3.webshield.pro', 'use_path_style_endpoint' => true, 'credentials' => [ 'key' => 'WSS...', 'secret' => getenv('WS_SECRET_KEY'), ],]);Примечания
Заголовок раздела «Примечания»regionтребуется SDK, но WebShield его игнорирует — подойдёт любое значение.- Включайте path-style адресацию (
forcePathStyle/UsePathStyle/use_path_style_endpoint); boto3 делает это автоматически для нестандартных endpoint. - Бакеты создаются и удаляются только в личном кабинете; вызовы SDK
CreateBucket/DeleteBucketнедоступны. - При отрицательном балансе хранилище переходит в режим «только чтение»: загрузка отклоняется, скачивание работает. Пополните баланс, чтобы вернуть запись.