Облачное хранилище объектов: сравнение S3-провайдеров
Объектное хранилище (Object Storage) — оптимальный способ хранить статику, медиафайлы, бэкапы и ML-датасеты. Все провайдеры используют совместимый с S3 API, что упрощает смену провайдера.
Сравнение S3-провайдеров
| Провайдер | Цена (GB/мес) | Трафик исходящий | Регион |
|---|---|---|---|
| Hetzner Object Storage | €0.0049 | €0.010/GB (первые 1TB бесплатно) | Германия, Финляндия |
| Backblaze B2 | $0.006 | $0.01/GB | США, ЕС |
| Cloudflare R2 | $0.015 | БЕСПЛАТНО | Глобально |
| DigitalOcean Spaces | $0.020 | $0.01/GB (первые 1TB бесплатно) | США, ЕС, Азия |
| AWS S3 | $0.023 | $0.09/GB | Глобально |
Cloudflare R2: бесплатный исходящий трафик
# R2 через rclone
[cloudflare-r2]
type = s3
provider = Cloudflare
access_key_id = YOUR_R2_ACCESS_KEY
secret_access_key = YOUR_R2_SECRET_KEY
endpoint = https://ACCOUNT_ID.r2.cloudflarestorage.com
region = autoПодключение к WordPress (WP Offload Media)
# wp-config.php
define('AS3CF_SETTINGS', serialize([
'provider' => 's3',
'access-key-id' => 'YOUR_KEY',
'secret-access-key' => 'YOUR_SECRET',
'bucket' => 'my-wp-media',
'region' => 'eu-central-1',
'domain' => 'path', // или custom domain через CDN
]));PHP: загрузка файлов в S3
use Aws\S3\S3Client;
$s3 = new S3Client([
'version' => 'latest',
'region' => 'eu-central-1',
'endpoint' => 'https://YOUR_ENDPOINT',
'credentials' => ['key' => 'KEY', 'secret' => 'SECRET'],
'use_path_style_endpoint' => true,
]);
// Загрузить файл
$s3->putObject([
'Bucket' => 'my-bucket',
'Key' => 'uploads/' . basename($_FILES['file']['name']),
'SourceFile' => $_FILES['file']['tmp_name'],
'ACL' => 'public-read',
'ContentType' => $_FILES['file']['type'],
]);
// Получить публичный URL
$url = $s3->getObjectUrl('my-bucket', 'uploads/photo.jpg');Рекомендация: Для европейских клиентов используйте Hetzner Object Storage (дешевле всего при хранении) или Cloudflare R2 (если важен исходящий трафик). Оба совместимы с AWS S3 SDK.