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