Объекты вместо файлов и папок
Файловая система организует данные в дерево каталогов с блочным доступом. Объектное хранилище устроено иначе: это плоское пространство, где каждый объект имеет уникальный ключ, содержимое и набор метаданных. Объекты собирают в бакеты, а «папки» в интерфейсе — лишь префиксы в имени, например photos/2025/img1.jpg.
Название S3 пришло от сервиса Simple Storage Service компании Amazon. Его интерфейс стал де-факто стандартом, и многие провайдеры предлагают совместимый программный интерфейс.
Метаданные бывают системными, вроде типа содержимого и даты изменения, и пользовательскими: произвольные пары ключ-значение, по которым удобно искать и классифицировать объекты.
Такая простота позволяет хранилищу масштабироваться почти неограниченно: объекты распределяются по множеству серверов, а поиск нужного идёт по ключу, а не перебором каталогов.
Доступ через HTTP
К объектам обращаются по HTTP: запрос PUT загружает, GET читает, DELETE удаляет. Каждый запрос подписывается ключами доступа, состоящими из идентификатора и секрета. Для временного доступа выдают подписанные ссылки, действующие ограниченное время.
Диск нельзя просто смонтировать как обычную файловую систему без дополнительных средств. Существуют программы-обёртки, но производительность и семантика отличаются, и для случайной записи мелких блоков объектное хранилище не подходит.
Права доступа задаются политиками и списками управления, причём на уровне отдельных объектов, бакетов и учётных записей, и правило запрета имеет приоритет над разрешением.
Неизменяемость и версии
Объект нельзя изменить частично: чтобы обновить, его записывают заново целиком. Зато можно включить версионирование: старые версии сохраняются и доступны для восстановления после случайной перезаписи или удаления. Правила жизненного цикла автоматически переводят старые объекты в более дешёвые классы хранения или удаляют.
Для защиты от шифровальщиков применяют защиту объектов от изменений, запрещающую удаление в течение заданного срока.
Дополнительно доступны политики хранения: например, объекты старше заданного срока автоматически переносятся в архивный класс, где чтение медленнее, но хранение заметно экономичнее. Полезно для журналов и старых копий.
Надёжность и применение
Данные обычно реплицируются между несколькими серверами и стойками, а иногда между площадками, поэтому декларируемая надёжность хранения высокая. Это не отменяет резервных копий: удалённый по ошибке объект пропадёт из всех реплик.
Типичные задачи: хранение изображений и видео для сайтов, архивы, резервные копии, данные аналитики, статические сайты. Часто перед хранилищем ставят CDN для быстрой раздачи.
Обратите внимание, что проверка целостности возможна по контрольной сумме: при загрузке можно передать хеш, и хранилище сверит его с полученными данными.
Отдельный сценарий — хостинг статического сайта прямо из бакета: файлы отдаются по HTTP, а динамическая часть выносится в отдельные сервисы.
Права и заблуждения
Самая опасная ошибка — публично открытый бакет. Утечки данных из-за неверных прав случаются регулярно, и причина в конфигурации, а не во взломе. Проверяйте политики доступа и блокируйте публичный доступ по умолчанию.
Заблуждение: S3 — это диск. Нет, это сервис по API, и задержка выше, чем у локального диска. Чтобы посмотреть свой бакет, используйте официальный консольный клиент провайдера или утилиты, поддерживающие S3, и проверьте права доступа и версионирование.
Типичный рабочий процесс
Работа с хранилищем начинается с создания бакета и ключей доступа с ограниченными правами: отдельный ключ для приложения, который может писать в один бакет, безопаснее общего административного. Затем данные загружают через консоль, командную утилиту или библиотеку для языка программирования.
Для больших файлов используется многочастная загрузка: файл делится на части, которые передаются параллельно, а при обрыве повторяется только неудавшаяся часть. Это ускоряет передачу и повышает устойчивость.
Чтение можно ускорить кэшированием и раздачей через CDN, а приватные объекты отдаются по временным подписанным ссылкам. Для аудита включают журналы доступа, показывающие, кто и когда обращался к данным.