Сколько стоит S3-хранилище: объём, запросы и исходящий трафик
Стоимость S3-хранилища рассчитывают по среднему объёму данных, количеству операций и исходящему трафику за расчётный период. Для архива и резервных копий дополнительно учитывают класс хранения, минимальный оплачиваемый срок и стоимость восстановления. Поэтому 500 ГБ фотографий на сайте и 500 ГБ архивов могут стоить по-разному, даже если занимают одинаковое место. Ниже — формула, разбор тарифных строк и расчёты для трёх типичных задач.
Опубликовано: · Обновлено:

Что входит в счёт за S3-хранилище
Amazon Simple Storage Service (S3) — объектное хранилище и широко используемый программный интерфейс (API) для работы с файлами как с объектами внутри бакетов — контейнеров хранения. S3-совместимые сервисы поддерживают похожие операции, но их тарифы, классы хранения, ограничения и набор функций различаются. Совместимость API не означает одинаковый счёт.
В большинстве моделей тарификации важны три базовые величины: гигабайт-месяцы хранения, число обращений к API и объём передачи данных из хранилища. У отдельных провайдеров запросы или интернет-трафик включены в тариф, действуют квоты или минимальный платёж. Выясняйте это до расчёта, а не после него.
Таблица показывает, какие строки искать в прайсе. Приведённые ниже ставки в примерах — учебные, не коммерческое предложение какого-либо провайдера.
| Составляющая | Как считают | Что проверить |
|---|---|---|
| Хранение | Средние ГБ-месяцы × ставка | Класс, версии, округление |
| Запись (PUT) | Число операций / пакет × цена | Multipart, копирование |
| Чтение (GET/HEAD) | Число обращений / пакет × цена | Кэш, повторные запросы |
| Перечисление (LIST) | Число вызовов / пакет × цена | Частота синхронизации |
| Исходящий трафик | ГБ передачи × ставка | Интернет, регионы, квоты |
| Холодное извлечение | ГБ и запросы восстановления | Скорость, временная копия |
| Версии и репликация | Дополнительные ГБ, операции, передача | Сроки и направления |
Хранение: объём за время, а не размер бакета
Обычно оплачивается фактически занятый объём с учётом времени. Если в течение условного 30-дневного месяца 100 ГБ лежали постоянно, получилось 100 ГБ-месяцев. Если ещё 100 ГБ добавили ровно посередине периода, результат — 150 ГБ-месяцев. Пустой бакет сам по себе не обязательно создаёт плату за хранение, но сервис может устанавливать минимальный платёж.
Смотрите на единицы прайса: GB и GiB могут означать десятичные гигабайты и двоичные гибибайты; TB и TiB тоже различаются. Amazon S3, например, использует двоичную основу для расчёта хранения. Для точного бюджета переводите показания метрик в единицу тарифа. Уточняйте также округление счётчиков: по часам, дням, объектам либо расчётным единицам.
Количество объектов важно независимо от их суммарного размера. Миллион маленьких файлов создаёт больше метаданных, запросов и потенциальных переходов между классами, чем один крупный архив. Некоторые архивные классы учитывают минимальный оплачиваемый размер объекта и дополнительный объём метаданных.
Запросы: PUT, GET, LIST и другие операции
PUT загружает или заменяет объект, GET скачивает его содержимое, HEAD получает метаданные, LIST перечисляет объекты. DELETE удаляет объект либо создаёт маркер удаления при включённых версиях. У разных сервисов команды объединяются в ценовые группы по-разному: запись и перечисление нередко дороже чтения. Иногда определённые операции бесплатны, но это свойство конкретного тарифа.
Цена обычно указана за тысячу или миллион запросов. Для расчёта важно умножить именно число операций, а не количество уникальных файлов. Если одну картинку скачали 100 тысяч раз, это может означать около 100 тысяч GET, если кэш не перехватил обращения. Повторные попытки, проверки существования объектов, синхронизация и листинг тоже влияют на счёт.
Большой файл может загружаться по частям — multipart upload. Такая загрузка использует несколько обращений к API. Неоконченную загрузку следует завершить или отменить: её части способны продолжать занимать оплачиваемое место. Политика очистки незавершённых загрузок помогает ограничить расход.
Исходящий трафик: сколько данных забрали из облака
Исходящий трафик, или egress, — передача данных из хранилища наружу: пользователю сайта, приложению на другом сервере, в иной регион либо провайдеру. Он измеряется в ГБ, а не в числе запросов. Десять загрузок по 1 ГБ дают приблизительно 10 ГБ исходящего трафика независимо от малого числа GET.
Провайдер может отдельно тарифицировать интернет-выдачу, межрегиональную передачу и обмен внутри своей облачной сети. Бесплатный входящий трафик не означает бесплатное скачивание. Например, у Cloudflare R2 в актуальном прайсе передача данных в интернет не тарифицируется, но оплачиваются хранение и определённые операции, а для редко используемого класса — извлечение. У других сервисов бесплатный egress может ограничиваться квотой, пропорцией к объёму хранения или маршрутом передачи.
Для сайта важна точка, где заканчивается кэш сети доставки контента (CDN). Передача файла из CDN посетителю не всегда создаёт GET и трафик из S3: при попадании в кэш исходное хранилище не читается. Но у CDN могут быть собственные сборы за выдачу, запросы и очистку кэша.
Формула полной стоимости на месяц
Базовая формула: стоимость = хранение + запросы + исходящий трафик + дополнительные операции и услуги − включённые лимиты или скидки. Каждый компонент сначала рассчитывайте в его собственной единице и валюте. При сравнении тарифов учитывайте налоги и способ округления. Не складывайте доллары с рублями и не пересчитывайте по выдуманному курсу.
Хранение = оплачиваемые ГБ-месяцы × ставка за ГБ-месяц. Запросы = число запросов / тарифный пакет (например, 1000) × цена пакета. Исходящий трафик = оплачиваемые ГБ передачи × ставка за ГБ. Если тариф ступенчатый, отдельно рассчитайте расход в каждой ступени.
Учебные ставки для расчётов
Для всех трёх сценариев ниже примем условный стандартный класс: хранение — 1,50 ₽ за ГБ-месяц; запись и перечисление (PUT/LIST) — 0,20 ₽ за 1000 операций; чтение (GET/HEAD) — 0,05 ₽ за 1000 операций; исходящий интернет-трафик — 1,00 ₽ за ГБ. Нет включённых лимитов, налогов, минимального платежа и округления до целых пакетов. Это специально придуманные учебные значения, не действующий прайс какого-либо сервиса.
Сценарий: файлы небольшого сайта
Допустим, интернет-магазин хранит в S3 изображения товаров: средний объём — 200 ГБ, в месяц — 50 тысяч записей и перечислений, 2 миллиона чтений и 600 ГБ выдачи из S3. Расчёт: хранение 200 × 1,50 = 300 ₽; операции записи 50 000 / 1000 × 0,20 = 10 ₽; чтение 2 000 000 / 1000 × 0,05 = 100 ₽; трафик 600 × 1,00 = 600 ₽. Итого — 1010 ₽ в месяц.
Главный расход здесь — выдача файлов, а не хранение. Если настроить CDN и снизить чтение из исходного S3 до 300 тысяч обращений, а исходящий трафик до 120 ГБ, расчёт за сам S3 станет 300 + 10 + 15 + 120 = 445 ₽. Но нужно прибавить стоимость CDN: экономия в бакете ещё не равна экономии всей инфраструктуры. Для сайта с малоизменяемыми файлами кэш может быть выгоден; для приватных загрузок с коротким сроком жизни выгода зависит от модели доступа.
Сценарий: архив документов
Организация держит 2 ТБ документов, редко что-либо читает. Для наглядности используем 2000 ГБ в тарифных единицах, 10 тысяч операций записи/перечисления, 20 тысяч чтений и 10 ГБ внешних скачиваний ежемесячно. По учебным стандартным ставкам: хранение 2000 × 1,50 = 3000 ₽; запись — 2 ₽; чтение — 1 ₽; трафик — 10 ₽. Итого 3013 ₽.
Для архива возникает соблазн выбрать более дешёвый холодный класс. Пусть учебная ставка хранения холодного класса равна 0,60 ₽ за ГБ-месяц, а отдельная плата за извлечение — 2 ₽ за каждый восстановленный ГБ. Только хранение 2000 ГБ будет стоить 1200 ₽ в месяц; при однократном извлечении всех 2000 ГБ появится ещё 4000 ₽ за извлечение, до оплаты запросов, выдачи и возможной временной копии. Итого такой месяц окажется дороже, хотя обычный месяц дешевле. Перед архивированием оцените не только частоту запросов, но и максимально допустимое время получения данных.
Сценарий: резервные копии сервера
Представим сервер приложения с 4 виртуальными центральными процессорами (vCPU), 8 ГБ оперативной памяти и базой данных: это лишь пример конфигурации, не универсальный минимум. Бэкап-программа хранит в S3 500 ГБ текущих и старых резервных копий, выполняет 300 тысяч операций записи/перечисления, 50 тысяч чтений для проверок и ежемесячно скачивает 30 ГБ при тестовом восстановлении.
По учебному тарифу хранение стоит 500 × 1,50 = 750 ₽, запись — 60 ₽, чтение — 2,50 ₽, исходящий трафик — 30 ₽. Итого 842,50 ₽ за обычный месяц. Если потребуется полное восстановление 500 ГБ за пределы облака, вместо 30 ГБ выдачи получим 500 ГБ; при неизменных остальных условиях месяц обойдётся в 1312,50 ₽. Стоимость вычислений, нового сервера и загрузки резервных копий сюда не включена.
Для резервирования важнее не только обычный платёж, но и стоимость аварии. Заранее посчитайте восстановление всей цепочки, проверьте, может ли бэкап-программа прочитать объекты без дополнительной распаковки, и выполните пробное восстановление. Считайте на фактическом размере хранения после сжатия и дедупликации, а не на суммарном размере дисков сервера.
Холодное хранение и скрытые условия
Минимальный срок хранения и раннее удаление
Дешёвые классы могут требовать оплату минимального срока жизни объекта, даже если он удалён или переведён раньше. Например, для Amazon S3 Standard-Infrequent Access минимальный срок составляет 30 дней, для S3 Glacier Flexible Retrieval и Glacier Instant Retrieval — 90 дней, для Glacier Deep Archive — 180 дней. У Cloudflare R2 Infrequent Access минимум составляет 30 дней. Эти сроки не следует переносить на другие сервисы без проверки.
Учебный пример: объект размером 100 ГБ хранился 10 дней, но тариф подразумевает минимум 30 дней. По условной ставке 0,60 ₽ за ГБ-месяц итог за такой объект будет близок к 60 ₽, а не к 20 ₽ за треть месяца. Конкретный порядок начисления и переходов между классами смотрите в правилах провайдера.
Восстановление и скорость доступа
У холодных и архивных классов могут отдельно тарифицироваться запрос на восстановление, объём извлечённых данных и временная восстановленная копия. Некоторые классы доступны для прямого чтения, другие требуют сначала оформить восстановление и дождаться результата. Для аварийного бэкапа время извлечения критично: дешёвый архив, который нельзя быстро открыть, не заменит оперативную резервную копию.
Важно отличать извлечение из архивного класса от передачи данных по сети. Эти платежи способны возникнуть одновременно: сначала сервис начисляет плату за получение данных из холодного уровня, затем — за пересылку восстановленного файла в интернет. В примере с архивом выше эти две статьи намеренно не объединены.
Версии объектов, удаления и жизненный цикл
Versioning сохраняет предыдущие версии объекта при перезаписи. Если файл весит 5 ГБ и его обновляют десять раз, оплачиваемый объём может заметно превысить 5 ГБ. Удаление текущего объекта в версионированном бакете не всегда удаляет его старые версии: может появиться маркер удаления, а прежние данные останутся в хранилище.
Для контроля затрат задайте правила жизненного цикла (lifecycle): сколько хранить прошлые версии, когда удалять устаревшие файлы, когда переводить объекты в другой класс, через какое время очищать незавершённые многокомпонентные загрузки. Сам переход между классами иногда оплачивается как отдельная операция. Перед запуском массового переноса проверьте минимальные размеры объектов и накладные расходы на архивные метаданные.
Репликация и дополнительные услуги
Репликация создаёт дополнительную копию объектов в другом бакете, зоне или регионе. Стоимость обычно включает хранение целевой копии, операции записи и, если применимо, межрегиональную передачу. Репликация не равна резервному копированию: ошибочное удаление или изменение может распространиться на реплику в зависимости от настройки. Для защиты нужны отдельные политики сохранения, права доступа и тест восстановления.
Дополнительно могут оплачиваться межрегиональные запросы, шифрование с внешним управлением ключами, аудит и журналирование, метрики, отдельные сервисы резервного копирования, CDN, публичные IP-адреса либо работа серверов, которые обрабатывают файлы. Набор строк зависит от архитектуры; включайте только то, что действительно используется.
Как оценить расход до переноса данных
Начните с инвентаризации: сколько данных сейчас хранится, каков месячный прирост, сколько объектов добавляют или заменяют, сколько раз их читают и какой объём скачивают наружу. Отдельно измерьте максимальное одновременное использование, объём прошлых версий и незавершённых загрузок. Для старого проекта данные можно получить из логов приложения, CDN и текущего файлового сервера; их оценку затем сверяют с биллингом пилотного периода.
- Разделите файлы по профилю: публичная статика, пользовательские вложения, редко используемые документы, резервные копии.
- Для каждого типа оцените ГБ-месяцы, PUT/LIST, GET/HEAD и исходящий трафик; учтите сезонные пики.
- Выберите подходящий класс хранения и проверьте минимальный срок, задержку восстановления, минимальный размер объекта и цену извлечения.
- Добавьте версии, репликацию, удаление старых объектов, переходы между классами, временные копии и накладные расходы.
- Рассчитайте обычный месяц, месяц пикового трафика и сценарий полного восстановления.
- Проверьте в личном кабинете текущую структуру тарифов, ограничения бесплатных квот, налоги, минимальные платежи и округление.
Для сравнения двух предложений используйте одинаковые исходные ГБ, одинаковый объём скачивания и одну валюту. Самый дешёвый ГБ-месяц не всегда означает самый дешёвый месяц работы. Облачный провайдер может давать выгодную передачу внутри своей сети, а отдельный сервис — более предсказуемую интернет-выдачу; проверяйте путь данных от клиента до конечного получателя.
Итог
Перед выбором S3 составьте месячный профиль нагрузки, а не сравнивайте только цену терабайта. Для сайта решающими часто становятся скачивания и кэширование; для архива — срок хранения и цена извлечения; для бэкапов — политика версий, рост объёма и стоимость полного восстановления. Сравнивайте предложения на одном сценарии, а после запуска включите уведомления о расходах и регулярно проверяйте детализацию счёта.