demondehellis

Full-Stack Wizard, Tech Guru & Bash Evangelist.

← Назад к блогу

S3 Storage для статического сайта

Опубликовано: 20 марта 2025 г.

  • #dev
  • #blog
  • #s3
  • #cloud

Где хранить изображения и видео для блога, если ты разработчик и не хочешь заморачиваться с сервером? Немного про облачные хранилища и S3-совместимые сервисы.

У меня есть другой блог который больше про трэвел контент и он очень быстро потяжелел и начал занимать солидный гигабайт, как только я начал вставлять в посты фотографии из поездок в Таиланд. А для технического блога иногда хочется вставить гифку с экраном или что-то подобное - это тоже весит немало. Лучше бы заранее подумать, где всё это хранить, чтобы потом не мучиться с обновлением ссылок, когда окажется, что GitHub не очень-то рад моему разжиревшему статическому сайту.

AWS S3

AWS S3 - облачное файловое хранилище от Amazon, которое использует каждая вторая IT-компания. На нём построены тысячи сервисов. S3 позволяет делать публичные бакеты, то есть можно просто загрузить туда HTML-файлы и использовать как хостинг для статического сайта. Можно даже привязать свой домен и подключить SSL. Для AWS есть консольная утилита aws-cli, с которой можно заливать статику одной командой в терминале.

Идея с AWS мне кажется неплохой. S3 - это такая же базовая инфраструктурная единица, как GitHub. Amazon, как и Microsoft, имеет все шансы пережить нас всех. За S3, правда, придётся платить, но очень немного. Возможно, хватит один раз пополнить баланс на $10 и забыть. Для текстового блога с небольшим количеством изображений этого может хватить лет на сто вперёд. Для тяжелого блога размером до 100Гб - лет на пять, что в любом случае дешевле чем любой VPS или хостинг.

Проблема в том, что AWS - это не для людей. Интерфейсы, настройки разрешений, роли, политики - все это желательно понимать, чтобы не накосячить. С S3 не так всё страшно, конечно, но даже при настройке доступа к файлам уже возникают вопросы, особенно если ты не варишься в этом каждый день. Плюс - у них куча типов хранилищ с разной стоимостью и скоростью доступа, и в этом тоже надо разобраться. В общем, вариант рабочий, но не самый дружелюбный.

Цены: aws.amazon.com/ru/s3/pricing

S3-совместимые хранилища

Протокол, по которому работает Amazon S3, стал настолько популярен, что многие другие компании начали делать совместимые с ним сервисы. Часто даже aws-cli работает с этими хранилищами без проблем. Более того, клиенты и SDK для AWS S3 есть под все платформы на всех языках, и они тоже будут совместимы или частично совместимы.

Из тех, что я пробовал - Cloudflare и… Яндекс. Да, обе компании развивают свои облачные платформы по образу и подобию AWS. У Яндекса это называется Object Storage, у Cloudflare - R2.

Но учти: S3 - это не файловая система. Если, например, переименовать папку с кучей файлов, то под капотом это будет копирование и удаление файлов а не просто смена пути. Я как-то встрял с этим: переименовал папку с сотнями файлов и клиент просто завис на пару часов.

На маке настроил Mountain Duck и Commander One для подключения к бакетам и заливки фоток по протоколу S3. Хотя чаще я делаю это из терминала, но большинству людей наверное будет удобно через UI.

Есть и другие хранилища. У Google, например, есть Google Cloud Storage - у него свой протокол, но принцип тот же: бакеты, политики, дешёвое хранение объектов.

Cloudflare R2

У Cloudflare - одна из самых приятных админок среди всех провайдеров. А еще, Cloudflare R2 не берёт деньги за исходящий трафик - уже киллер-фича для хранения файлов. Это суперудобно для изображений и видео в блоге: можно не бояться, что внезапная популярность обернётся счётом на $300.

Плюс - free tier: можно хранить до 10 ГБ в месяц бесплатно.

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

Цены: developers.cloudflare.com/r2/pricing

Yandex Object Storage

По сути, всё то же, что у Amazon: бакеты, возможность опубликовать как веб-сайт. Из плюсов для русскоязычных ресурсов - оплата в рублях и серверы в РФ, что удобно.

Из минусов - встречаются проблемы с совместимостью. В доке Яндекса пишут, что можно использовать AWS CLI, потому что протокол совместим. Но на деле, например, команда sync не работала на момент когда я тестировал сервис.

Однажды я наткнулся на другую проблему: AWS CLI в свежей версии использует по умолчанию протокол S3v4, а у Яндекса тогда поддерживался только S3v3 из-за чего я получал странные ошибки при попытке что-то залить или прочитать. Решалось понижением версии в конфиге, но в доке про это ничего не было. Позже они обновили версию своего протокола, конечно, но на тот момент мне пришлось повозиться с этой проблемой, что было неприятно. В общем, сервис в целом норм, но нюансы есть.

Цены: yandex.cloud/ru/docs/storage/pricing


Есть и другие сервисы, их полно, выбирай по своим предпочтениям и задачам. AWS я бы выбирал только в том случае, если у тебя уже есть опыт работы с ним и какая-то другая инфраструктура в нем. Cloudflare хорош для большинства людей: удобный и с бесплатными квотами. А Яндекс только для русскоязычных проектов.