Объект

Объекты размещаются в бакетах и содержат пользовательские данные произвольного формата в том виде, в котором они были загружены.

Идентификатор объекта — строковый ключ.

Вместе с объектом Object Storage хранит пользовательские и системные метаданные.

Object Storage позволяет сохранять объекты в Стандартном и Холодном хранилищах. Подробнее читайте в разделе Класс хранилища.

Object Storage поддерживает следующие операции с объектами:

  • Загрузка объекта в хранилище.
  • Скачивание объекта из хранилища.
  • Копирование объекта внутри хранилища, например, из бакета в бакет.

Все остальные операции, которые можно выполнить с помощью инструментов, являются комбинациями из указанных выше.

Для объекта в бакете можно настроить:

Object Storage накладывает ограничения на размеры объектов и их метаданных. Подробнее смотрите в разделе Квоты и лимиты).

Ключ

Ключ — это идентификатор объекта в бакете.

Структура хранения объектов плоская, хотя инструменты с графическим интерфейсом предлагают работать с Object Storage как с иерархической файловой системой. Видимость иерархического хранилища достигается за счет того, что ключи можно записывать как пути в файловой системе, например, top_level_prefix/subprefix/text_data.txt. В консоли управления Яндекс.Облака префиксы называются папками.

Ключ должен:

  • иметь кодировку UTF-8;
  • быть меньше 1024 байт;
  • не содержать символов : * ? " < > | !.

Для использования в ключе безопасны следующие символы: [a-zA-Z0-9], -, _, /, \. Другие символы могут вызвать различные проблемы при использовании Object Storage.

Папка

В Object Storage нет папок, однако графические файловые менеджеры, например, CyberDuck или интерфейс к Object Storage в консоли управления Яндекс.Облака имитируют папки. В роли папки выступает объект с нулевым размером, ключ которого входит в ключи других объектов как префикс. Например, объект с ключом x и размером 0 в консоли управления будет папкой, а объект с ключом x/y.txt — объектом y.txt, лежащим в папке x.

Каждый из инструментов управляет объектами и папками согласно своей логике, которая описана в документации на каждый из них.

Примечание

Удаление папки с объектами — асинхронная операция. В начале операции Object Storage готовит список объектов для удаления, затем удаляет их. Если в процессе удаления в Object Storage загрузить объект, который должен лежать в той папке, которая удаляется в текущий момент времени, то объект успешно загрузится. После завершения обеих операций в Object Storage останется папка, которая должна была быть удалена, с новым загруженным объектом.

URL объекта

URL объекта может иметь одну из следующих форм.

  • https://storage.yandexcloud.net/<bucket>/<key>?<parameters>
  • https://<bucket>.storage.yandexcloud.net/<key>?<parameters>

Метаданные

С объектом хранятся метаданные в виде пар имя-значение.

Метаданные могут быть системными и пользовательскими.

Системные метаданные

Системные метаданные определяются Object Storage.

Имя Описание
Date Дата и время отправки запроса на загрузку объекта в Object Storage.
Content-Length Размер объекта в байтах.
Last-Modified Дата создания или последнего изменения объекта.
Content-MD5 MD5 хэш объекта, закодированный в base64.
Cache-Control Значение HTTP заголовка Cache-Control, который клиент передает при сохранении объекта в бакет. В дальнейшем, Object Storage возвращает этот заголовок клиентам при ответе на запрос объекта или его метаданных.

Например, заголовок Cache-Control: max-age=200 обозначает, что объект устаревает через 200 секунд после того, как клиент получил его. Подробнее о заголовке читайте в RFC 7234.
Expires Значение HTTP заголовка Expires, который клиент передает при сохранении объекта в бакет. В дальнейшем, Object Storage возвращает этот заголовок клиентам при ответе на запрос объекта или его метаданных.

Например, заголовок Expires: Thu, 15 Apr 2020 20:00:00 GMT обозначает, что объект устаревает 15 апреля 2020 года в 20:00:00 по Гринвичу. Подробнее о заголовке читайте в RFC 7234.

Пользовательские метаданные

При загрузке объекта в Object Storage, вместе с ним можно передать набор метаданных в виде пар имя-значение.

В HTTP API, совместимом с Amazon S3, метаданные передаются в виде HTTP-заголовков. Имя заголовка должно начинаться с x-amz-meta-. При запросе объекта через HTTP API Object Storage возвращает метаданные в виде HTTP-заголовков с этим же префиксом.

Имена метаданных должны соответствовать правилам для HTTP-заголовков, кроме того, они должны быть в нижнем регистре.

Примечание

Заголовок PUT-запроса не должен превышать 8KB. Размер пользовательских метаданных в этом заголовке не должен превышать 2KB.