S3: бакеты и объекты

Знакомимся с S3 — «бесконечной» кладовкой для файлов в облаке.

S3 (Simple Storage Service) — объектное хранилище: файлы (объекты) лежат в контейнерах (бакетах) и доступны по уникальному ключу через HTTP.

Зачем нужен S3

S3 — место, куда складывают любые файлы: картинки, бэкапы, логи, видео, дистрибутивы. Хранилище практически безгранично, надёжно (данные дублируются по нескольким AZ) и доступно по сети из любой точки. Это рабочая лошадка почти каждого приложения на AWS.

Бакеты и объекты

Файлы хранятся не в папках, а в бакетах — контейнерах верхнего уровня. Имя бакета глобально уникально на весь AWS: если кто-то занял <my-photos>, вам нужно другое имя. Внутри бакета лежат объекты — это файл плюс метаданные плюс уникальный ключ (key), который выглядит как путь.

Бакет: my-app-assets
  объект key = images/logo.png
  объект key = backups/2026-06-22.zip
  объект key = docs/manual.pdf

"Папки" — это иллюзия: слеши в ключе просто часть имени

Загрузка и скачивание

Через AWS CLI работа с S3 максимально простая:

# создать бакет
aws s3 mb s3://my-app-assets

# загрузить файл
aws s3 cp logo.png s3://my-app-assets/images/logo.png

# посмотреть содержимое
aws s3 ls s3://my-app-assets/images/

Вывод:

upload: ./logo.png to s3://my-app-assets/images/logo.png
2026-06-22 14:03:11      18241 logo.png

Как работает под капотом

S3 — это не файловая система, а распределённое хранилище типа «ключ — значение». Нет настоящих директорий: ключ images/logo.png — это просто длинное имя, а слеши консоль рисует как папки для удобства. Каждый объект автоматически реплицируется на несколько устройств в разных зонах доступности, что даёт очень высокую сохранность данных. Поэтому S3 отлично масштабируется на миллиарды объектов, но плохо подходит для частого изменения кусочка файла — объект заменяется целиком, а не правится на месте.

Частые ошибки

  • Думать, что в S3 есть папки. Это плоское хранилище; «папки» — лишь префиксы в ключе.
  • Использовать S3 как диск для частой записи кусками. Объект перезаписывается целиком; для такого нужны EBS или базы данных.
  • Брать занятое имя бакета. Имя глобально уникально на весь AWS, а не только в вашем аккаунте.

Итог

  • S3 — объектное хранилище: объекты лежат в бакетах и адресуются по ключу.
  • Имя бакета глобально уникально; «папки» — это лишь префиксы в ключе.
  • Данные дублируются по зонам доступности; объект заменяется целиком, а не правится по кусочкам.
Проверьте себя
1. Что такое объект в S3?
AВиртуальная машина
BФайл вместе с метаданными и уникальным ключом
CРегион AWS
DТип сети
2. Насколько уникально имя бакета S3?
AУникально только внутри вашего аккаунта
BУникально глобально на весь AWS
CМожет повторяться сколько угодно
DУникально в пределах региона