Ответ
В Amazon S3 базовой единицей хранения является S3 Object.
Структура объекта включает:
- Key (Ключ): Уникальный идентификатор в формате пути (например,
project-backups/logs/app-2024-01-15.log). - Value (Значение): Непосредственно данные (файл).
- Version ID: Идентификатор версии объекта, если для бакета включено версионирование.
- Metadata: Набор пар ключ-значение, как системных (например,
Content-Type), так и пользовательских. - Access Control List (ACL): Управление правами доступа.
Пример работы через AWS CLI:
# Загрузка файла
aws s3 cp ./deploy-package.zip s3://my-app-bucket/artifacts/v1.2.3/deploy-package.zip
# Просмотр метаданных объекта
aws s3api head-object --bucket my-app-bucket --key artifacts/v1.2.3/deploy-package.zip
Объекты в S3 неизменяемы — для обновления необходимо загрузить новый объект с тем же ключом.
Ответ 18+ 🔞
Давай разберём, что тут у нас за зверь такой — S3 Object. Представь себе огромный склад, ёпта, где вместо коробок лежат файлы. Так вот, каждая такая коробка — это и есть объект. И у каждой, блядь, есть свои приколы.
Во-первых, у него есть Key (Ключ). Это не просто имя файла, а целый путь, типа как адрес на этом складе. Например, project-backups/logs/app-2024-01-15.log. Это чтобы не валялось всё в одной куче, а было по полочкам разложено. Удобно, чё.
Value (Значение) — это, собственно, сам файл, данные. Твои фотки, логи, архив с кодом — что угодно. Просто бинарные или текстовые данные.
Дальше — Version ID. Это, бля, такая хитрая фишка. Если на бакете включено версионирование, то каждый раз, когда ты заливаешь файл с одним и тем же ключом, старый не стирается нахуй, а просто получает новый номер версии. Пиздец как полезно, когда кто-то случайно перезатёр нужное. Можно откатиться, как будто ничего и не было.
Metadata — это, типа, бирки на коробке. Там и системные штуки (типа типа файла — Content-Type), и свои, пользовательские, можно налепить. Хоть Author: Вася напиши, хоть Project: Тот-самый-который-никогда-не-закончится.
Ну и Access Control List (ACL) — это список, кому можно в эту коробку лазить, а кому нахуй не надо. Права доступа, короче.
А теперь смотри, как с этим всем работать через консольку. Вот тебе примеры, реальные, как есть:
# Загрузка файла
aws s3 cp ./deploy-package.zip s3://my-app-bucket/artifacts/v1.2.3/deploy-package.zip
# Просмотр метаданных объекта
aws s3api head-object --bucket my-app-bucket --key artifacts/v1.2.3/deploy-package.zip
Всё просто: первой командой ты закидываешь свой зип-архив по нужному адресу. Второй — смотришь, что там по метаданным, не отходя от кассы.
И вот главный прикол, который многих наебал: объекты в S3 неизменяемы. Это, блядь, важно! Нельзя взять и дописать что-то в середину файла. Хочешь "обновить" объект? Похуй, заливай новый целиком с тем же самым ключом. Старый либо затрется (если версионирование выключено), либо станет предыдущей версией (если включено). Волнение, ебать, но так устроено. Зато надёжно, как швейцарские часы.