Стоимость · 13 минут

Сколько стоит S3-хранилище: объём, запросы и исходящий трафик

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

Объектное хранилище Amazon S3
Amazon S3 — пример сервиса объектного хранения данных.

Что входит в счёт за 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 составьте месячный профиль нагрузки, а не сравнивайте только цену терабайта. Для сайта решающими часто становятся скачивания и кэширование; для архива — срок хранения и цена извлечения; для бэкапов — политика версий, рост объёма и стоимость полного восстановления. Сравнивайте предложения на одном сценарии, а после запуска включите уведомления о расходах и регулярно проверяйте детализацию счёта.

Сравнить провайдеров →

Частые вопросы

Оплачивается ли пустой S3-бакет?

За нулевой объём хранения обычно нет начисления по ставке за ГБ-месяц. Однако возможны минимальный платёж, платные служебные операции и дополнительные сервисы. Проверяйте конкретный тариф.

Можно ли считать стоимость только по гигабайтам?

Да, лишь для предварительной оценки почти неизменного архива с минимальными обращениями — и при условии, что остальные статьи расходов действительно малы либо включены. Для сайта и бэкапов этого недостаточно.

Какие запросы чаще всего дают большой счёт?

Для сайта — массовые GET при отсутствии кэша; для синхронизации — частые LIST и HEAD; для резервного копирования множества мелких файлов — PUT и другие операции загрузки. Реальная картина зависит от структуры тарифа и поведения приложения.

Всегда ли исходящий трафик платный?

Нет. Некоторые сервисы не тарифицируют интернет-выдачу, другие дают включённую квоту или особые условия для определённых направлений. Нужно проверить ограничения и возможную оплату со стороны CDN или другого облака.

Когда холодное хранилище выгоднее обычного?

Когда объекты живут дольше минимального оплачиваемого срока, редко читаются, а требования ко времени восстановления допускают выбранный класс. Сравнивайте полную цену жизненного цикла, включая несколько возможных восстановлений.

Удаление файла сразу уменьшит счёт?

В стандартном классе оплачиваемый объём обычно снижается по правилам учёта времени, но старые версии и части незавершённых загрузок могут сохраняться. В холодном классе возможна оплата оставшегося минимального срока.

Как посчитать цену полного восстановления бэкапов?

Умножьте восстанавливаемый объём на применимые ставки извлечения из класса хранения и передачи в нужное место, прибавьте запросы, временные копии и инфраструктуру восстановления. Затем проверьте время выполнения и целостность данных на тестовом восстановлении.