Как называется объект в Amazon S3?

Ответ

В 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 неизменяемы. Это, блядь, важно! Нельзя взять и дописать что-то в середину файла. Хочешь "обновить" объект? Похуй, заливай новый целиком с тем же самым ключом. Старый либо затрется (если версионирование выключено), либо станет предыдущей версией (если включено). Волнение, ебать, но так устроено. Зато надёжно, как швейцарские часы.