В S3 object — это базовая единица хранения: файл вместе с его метаданными и уникальным ключом (именем) внутри bucket. Объект однозначно определяется парой «bucket + ключ» и может иметь размер до 5 ТБ. Объекты считаются неизменяемыми: при обновлении вы записываете новый объект (часто как новую версию), а не редактируете существующий «по месту».
В S3 объект — это то, что вы фактически загружаете и скачиваете из хранилища: отдельный файл со служебной информацией, хранящийся внутри bucket. Работа с S3 строится вокруг операций над объектами: PUT (загрузка), GET (чтение), DELETE (удаление) и т.д.
Структурно объект в S3 включает в себя несколько ключевых частей:
bucket, например logs/2024/04/app.log или images/avatar.png. Ключ логически имитирует вложенные папки, хотя физически в S3 нет настоящей файловой иерархии.Content-Type, Content-Length, дата последней модификации, ETag (хэш содержимого), а также произвольные пользовательские заголовки вроде x-amz-meta-environment=prod.bucket включено версионирование. Позволяет хранить несколько версий одного и того же ключа и откатываться к старым версиям при ошибках.Объект в S3 неизменяем на уровне байтов: вы не можете «подредактировать» середину большого файла на месте. Чтобы обновить содержимое, нужно загрузить новый объект с тем же ключом (или другим ключом, если вам нужно сохранить старый файл под старым именем). При включённом версионировании старый объект получает собственный version ID и остаётся доступным, при выключенном — перезаписывается без сохранения истории.
Доступ к объектам управляется с помощью IAM-политик, политик bucket и (опционально) ACL. Это позволяет в одном bucket иметь как полностью приватные объекты (например, бэкапы), так и объекты с публичным доступом (например, статические файлы для веб-сайта).
Для доступа к объекту используется его bucket и ключ. В S3-совместимых хранилищах это может выглядеть как обращение по HTTP(S):
При работе из приложений или через CLI чаще всего используется API S3. Пример загрузки объекта с помощью командной строки (концептуально для S3-совместимого API):
Если обобщить, объект в S3 — это файл с метаданными, однозначно идентифицируемый комбинацией bucket и ключа, который всегда читается и записывается целиком, а при необходимости может иметь несколько версий и гибко управляемый доступ.
Отметьте свой прогресс