Управляемое S3-совместимое хранилище подходит для файлов приложений, медиаконтента, архивов, аналитических наборов и резервных копий. Это руководство помогает выбрать сервис по рабочему сценарию, рассчитать полную стоимость и проверить совместимость до переноса данных.
Содержание
- Критерии выбора хранилища
- Что означает совместимость с S3
- Сравнение подтверждённых российских вариантов
- Полезные сценарии
- Расчёт полной стоимости
- Юридические и операционные ограничения
- Базовая проверка через AWS CLI
- Расширенная проверка совместимости
- Защита данных и выход из сервиса
- Финальный чеклист
Критерии выбора хранилища
Выбирайте кандидатов по задаче и месту расположения основной инфраструктуры:
- для сайта или приложения оцените задержку, стоимость исходящего трафика, методы API и интеграцию с вычислительными сервисами;
- для резервных копий сравните холодные классы, стоимость чтения, минимальный срок хранения и цену полной выгрузки;
- для регулируемых данных проверьте размещение, шифрование, управление доступом, журналирование и договорные документы;
- для международной раздачи измерьте доступность endpoint и объектов из сетей реальных пользователей;
- для переноса существующего приложения заранее составьте список используемых методов S3 API.
Что означает совместимость с S3
Amazon S3 — объектное хранилище и набор API, ставший отраслевым стандартом. Данные размещаются как объекты внутри бакетов. У каждого объекта есть ключ, содержимое и метаданные.
S3-совместимые сервисы можно подключать к AWS CLI, SDK и приложениям, которые позволяют задать собственный endpoint. Совместимость не гарантирует поддержку каждой функции Amazon S3. Отдельно проверяйте политики доступа, CORS, правила жизненного цикла (lifecycle), версионирование, неизменяемость объектов (Object Lock), события бакета и варианты многочастичной загрузки (multipart upload).
До сравнения зафиксируйте:
- объём и средний размер объектов;
- число операций записи и чтения в месяц;
- объём выдачи в интернет;
- срок хранения и частоту удаления;
- обязательные методы API;
- требования к региону и локализации данных;
- целевые точки восстановления (RPO) и время восстановления (RTO) для резервных копий;
- способ и допустимое время массовой выгрузки.
Сравнение подтверждённых российских вариантов
Свежие приложенные источники охватывают три сервиса. Таблица служит отправной точкой для тестирования, а не рейтингом.
| Сервис | Подтверждённые возможности | Что учитывать | Что проверить |
| Selectel | Amazon S3 API, IAM, автоматическое масштабирование, три копии объектов, стандартный, холодный и ледяной классы, выделенное S3 от 1 ПБ | У ледяного и холодного классов хранение дешевле, а запросы и трафик дороже. Для ледяного класса заявлен Erasure Coding. Входящий трафик и трафик между S3 и другими продуктами Selectel, кроме CDN, не тарифицируются на стороне S3 | Доступный регион и пул, цену хранения, запросов и внешнего трафика, нужные методы API |
| Yandex Object Storage | Amazon S3 API, репликация в нескольких зонах, шифрование, SLA 99,98%, классы Standard, Cold, Ice и Intelligent Tiering | На момент проверки 12 сентября 2026 года на странице указаны 2,376 ₽/ГБ в месяц в Standard, 1,267 ₽/ГБ в месяц в Cold и 0,633 ₽/ГБ в месяц в Ice. Страница указывает, что цены включают НДС. Для Ice указан минимальный срок хранения один год. Операции тарифицируются отдельно | Класс, lifecycle, стоимость операций и выдачи, роли сервисного аккаунта и статические ключи |
| Timeweb Cloud S3 | S3-совместимый API, веб-интерфейс, стандартный, холодный и премиальный классы, тройная репликация, SLA 99,98% | Для S3 указана локация в Санкт-Петербурге. Бесплатный лимит исходящего трафика составляет 100 ГБ в месяц на аккаунт, для Prime — 1000 ГБ; превышение тарифицируется по 1,3 ₽/ГБ. На странице также описан автоматический переход на более высокий тариф при превышении объёма хранения | Подходящий тариф, размер бакета, автоапгрейд, endpoint, подпись запросов и работу используемого клиента |
Зарубежные варианты можно оценивать по той же методике, но текущий набор источников не подтверждает их тарифы, доступность регистрации, оплату и сетевую доступность. Эти параметры нельзя переносить из старого сравнения без свежей проверки официальных страниц.
Полезные сценарии
Файлы сайта или приложения
Исходное условие: приложение регулярно записывает объекты и часто отдаёт их пользователям. Разместите тестовый набор файлов, подключите приложение через отдельные ключи и измерьте задержку, скорость, число ошибок и стоимость выдачи.
Результат проверки: приложение выполняет нужные операции, подписанные ссылки открываются из целевых сетей, а расчётный месячный счёт укладывается в бюджет. Холодный класс здесь может оказаться невыгодным из-за более дорогих запросов и трафика.
Резервные копии и архив
Исходное условие: данные редко читаются, но должны восстанавливаться за заданное время. Сравните цену хранения с платой за операции, чтение и полную выгрузку. Для Yandex Ice учитывайте минимальный срок хранения один год.
Результат проверки: тестовая копия создаётся по расписанию, выбранная политика удаления применяется в заявленный срок, а полное восстановление укладывается в RTO. Хранилище не подходит как единственная копия критичных данных.
Датасеты и аналитика
Исходное условие: вычисления читают крупные наборы объектов из облачной инфраструктуры. Проверьте стоимость внутреннего трафика, параллельного чтения и операций со списками объектов. Selectel указывает, что трафик между S3 и другими продуктами Selectel, кроме CDN, не тарифицируется на стороне S3; применимость правила к вашей архитектуре нужно подтвердить расчётом.
Результат проверки: тестовая задача читает данные с приемлемой скоростью, результаты совпадают по контрольным суммам, а сетевые расходы понятны до промышленной загрузки.
Расчёт полной стоимости
Используйте одинаковый профиль нагрузки для всех кандидатов:
Стоимость месяца = хранение
+ операции записи и чтения
+ исходящий трафик
+ извлечение из холодного класса
+ раннее удаление
+ старые версии объектов
+ минимальный платёж или пакетный тарифПример профиля для предварительного расчёта:
- среднее хранение: 2 ТБ;
- выдача в интернет: 300 ГБ в месяц;
- 500 000 операций записи;
- 5 млн операций чтения;
- 10% объектов обновляются или удаляются ежемесячно;
- крупный файл для проверки многочастичной загрузки (
multipart upload); - полное восстановление: один раз в год.
| Строка расчёта | Что подставить |
| Хранение | 2 048 ГБ × цена выбранного класса |
| Операции | 500 000 операций записи и 5 млн операций чтения по правилам тарификации провайдера |
| Выдача | 300 ГБ минус применимая бесплатная квота |
| Извлечение | Объём чтения из холодного класса × тариф извлечения |
| Раннее удаление | Обновляемый объём × плата за оставшийся минимальный срок |
| Аварийное восстановление | Стоимость и ожидаемое время полной выгрузки 2 ТБ |
Запишите две суммы: обычный месяц и месяц полного восстановления. Для резервной копии второй расчёт часто важнее стоимости спокойного хранения.
Юридические и операционные ограничения
Указание на соответствие 152-ФЗ или отраслевым стандартам на странице продукта не заменяет проверку конкретной архитектуры и договора. Для регулируемых данных определите:
- кто является оператором данных;
- где выполняются первичная запись и хранение;
- допустима ли трансграничная передача;
- какие данные шифруются до отправки;
- кто имеет доступ к ключам расшифровки;
- распространяются ли требования на резервные копии и журналы;
- какие документы и уровни защиты относятся к выбранной конфигурации.
До переноса создайте тестовый аккаунт, проверьте допустимый способ оплаты и получение документов, загрузите небольшой объект и скачайте его через сеть реального пользователя. Публичная страница продукта не подтверждает доступность всего маршрута для конкретного клиента.
Базовая проверка через AWS CLI
Проверка охватывает PutObject, HeadObject, GetObject, подписанную ссылку, целостность и удаление. Бакет создайте заранее. Используйте отдельный профиль и тестовые ключи с минимальными правами.
export AWS_PROFILE="s3-test"
export S3_ENDPOINT="https://s3.example-provider.ru"
export S3_REGION="provider-region"
export S3_BUCKET="s3-compatibility-test"
aws configure --profile "$AWS_PROFILE"В aws configure укажите тестовые Access Key ID и Secret Access Key, затем регион из документации провайдера. Если сервис требует path-style addressing, включайте его только по официальной инструкции выбранного endpoint.
Создайте и загрузите файл:
printf "s3 compatibility test\n" > healthcheck.txt
aws s3api put-object \
--profile "$AWS_PROFILE" \
--region "$S3_REGION" \
--endpoint-url "$S3_ENDPOINT" \
--bucket "$S3_BUCKET" \
--key "checks/healthcheck.txt" \
--body "./healthcheck.txt"Проверьте метаданные и скачайте объект:
aws s3api head-object \
--profile "$AWS_PROFILE" \
--region "$S3_REGION" \
--endpoint-url "$S3_ENDPOINT" \
--bucket "$S3_BUCKET" \
--key "checks/healthcheck.txt"
aws s3api get-object \
--profile "$AWS_PROFILE" \
--region "$S3_REGION" \
--endpoint-url "$S3_ENDPOINT" \
--bucket "$S3_BUCKET" \
--key "checks/healthcheck.txt" \
downloaded-healthcheck.txt
cmp healthcheck.txt downloaded-healthcheck.txt && echo "download OK"Создайте подписанную ссылку и проверьте её из другой сети:
S3_URL="$(aws s3 presign \
"s3://$S3_BUCKET/checks/healthcheck.txt" \
--profile "$AWS_PROFILE" \
--region "$S3_REGION" \
--endpoint-url "$S3_ENDPOINT" \
--expires-in 300)"
curl -fL "$S3_URL" -o presigned-healthcheck.txt
cmp healthcheck.txt presigned-healthcheck.txt && echo "presigned URL OK"Удалите тестовый объект:
aws s3api delete-object \
--profile "$AWS_PROFILE" \
--region "$S3_REGION" \
--endpoint-url "$S3_ENDPOINT" \
--bucket "$S3_BUCKET" \
--key "checks/healthcheck.txt"
rm -f healthcheck.txt downloaded-healthcheck.txt presigned-healthcheck.txtПризнак успеха: обе команды cmp завершаются без расхождений, подписанная ссылка открывается из нужной сети, а тестовый объект удаляется без ошибки. Команды в рамках подготовки этого материала не запускались.
Расширенная проверка совместимости
Базовая проверка не подтверждает полную совместимость. Проверяйте функции, которые использует ваш продукт.
| Функция | Как проверить | Признак успеха |
Многочастичная загрузка (multipart upload) | Загрузить крупный файл с использованием multipart upload через библиотеку SDK или клиент | Загрузка возобновляется после обрыва, контрольная сумма совпадает |
| Версионирование | Загрузить две версии одного ключа и восстановить первую | Обе версии доступны по идентификаторам |
| Lifecycle | Создать правило на тестовом префиксе | Правило принимается API и применяется в заявленный срок |
| CORS | Выполнить браузерную загрузку с тестового домена | Предварительный и основной запросы проходят без ошибки |
| Object Lock | Включить на отдельном бакете с коротким сроком удержания | Объект нельзя удалить до истечения срока |
| Range GET | Запросить диапазон байтов большого файла | Возвращается HTTP 206 и правильный фрагмент |
| Массовая выгрузка | Скопировать тестовый набор штатным клиентом или rclone | Совпадают число объектов, размеры и контрольные суммы |
| Сетевая доступность | Повторить чтение у нужных операторов и из серверного региона | Задержка, скорость и доля ошибок укладываются в требования |
Защита данных и выход из сервиса
Управляемое S3 не должно оставаться единственной резервной копией критичных данных. Используйте раздельные ключи, журналирование, версионирование и доступный у выбранного провайдера механизм неизменяемости. Независимую копию храните в другом контуре.
flowchart LR
A["Рабочие данные"] --> B["Основное S3"]
A --> C["Локальная или NAS-копия"]
B --> D["Независимое S3 другого провайдера"]
C --> E["Регулярный тест восстановления"]
D --> EДо запуска зафиксируйте план выхода:
- Каким инструментом выгружается весь бакет.
- Сколько стоит полный исходящий трафик.
- Сколько времени займёт перенос.
- Как сверяются число объектов, размеры и контрольные суммы.
- Как отзываются ключи после миграции.
- Как удаляются данные и подтверждается удаление.
Второй бакет в том же аккаунте не защищает от блокировки аккаунта, ошибки администратора или компрометации главного ключа.
Финальный чеклист
Следующий шаг
Правило 3-2-1: рабочая схема резервного копирования
Если вы выбираете хранилище для рабочего проекта, начните с расчёта полного восстановления и короткого теста на реальной нагрузке. Это помогает заранее обнаружить дорогой трафик, несовместимые методы API и недостижимое время восстановления.
Если захотите обсудить, как это применить у себя или в команде — пишите в Telegram @pimenov



