Управление метаданными объектов
Ко всем объектам, помещаемым в Object Storage, можно добавлять метаданные — дополнительную информацию об объекте, описывающую его свойства.
Все метаданные подразделяются на системные (задаются на стороне Object Storage) и пользовательские (определяются пользователем).
Метаданные определяются в виде пар “ключ – значение” и передаются в HTTP-заголовках.
Cистемные метаданные
Заголовок раздела «Cистемные метаданные»Системные метаданные — это дополнительная служебная информация о свойствах объекта, которую добавляет storage. Например, когда вы загружаете объект, к нему автоматически добавляется информация о дате и времени загрузки.
Системными метаданными можно управлять ограниченно: не всю информацию о свойствах объекта можно изменять.
| Заголовок | Описание | Может ли пользователь изменять значение? |
|---|---|---|
Date | Дата и время загрузки объекта | Нет |
Content-Length | Размер объекта в байтах | Нет |
Last-Modified | Дата создания или последнего изменения объекта | Нет |
Cache-Control | HTTP-заголовок, содержащий директивы по управлению кешем. Клиент передает директивы в заголовке Cache-Control при загрузке объекта в бакет. Затем этот заголовок возвращается в ответе на запрос объекта или его метаданных. Подробнее о заголовке Cache-Control и управлении кешированием см. в RFC 7234. | Да |
Content-Type | Тип объекта | Да |
Expires | Дата и время, при наступлении которых объект считается устаревшим. Клиент передает их при в заголовке Expires при загрузке объекта в бакет. Затем этот заголовок возвращается в ответе на запрос объекта или его метаданных. | Да |
x-amz-storage-class | Класс хранения объекта | Да |
x-amz-version-id | Идентификатор версии объекта | Нет |
x-amz-delete-marker | Указывает, является ли объект маркером удаления | Нет |
Пользовательские метаданные
Заголовок раздела «Пользовательские метаданные»При загрузке объекта вы можете добавить к нему любую дополнительную информацию, актуальную в контексте ваших сервисов и приложений. Пользовательские метаданные передаются в специальных заголовках, которые Object Storage возвращает в ответ на запросы к объекту.
Особенности и ограничения
Заголовок раздела «Особенности и ограничения»- В метаданных должны использовать только допустимые символы UTF-8.
- Ключ пользовательских метаданных обязательно должен начинаться с символов
x-amz-meta-, напримерx-amz-meta-user-idилиx-amz-meta-user-type. - Максимальный размер пользовательских метаданных ограничен.
Загрузить объект с метаданными
Заголовок раздела «Загрузить объект с метаданными»- AWS CLI
- Python
- Go
aws s3api put-object \ --bucket <имя бакета> \ --key <ключ объекта> \ --body <путь к локальному файлу \ --metadata "<ключ 1>"="<значение 1>","<ключ 2>"="<значение 2>"Получить метаданные объекта
Заголовок раздела «Получить метаданные объекта»- AWS CLI
- Python
- Go
aws s3api head-object \ --bucket <имя_бакета> \ --key <ключ_объекта> \Если команда выполнена успешно, вы получите JSON-объект, содержащий метаданные объекта:
{ "AcceptRanges": "bytes", "LastModified": "2024-12-02T09:01:52+00:00", "ContentLength": 143, "ETag": "\"2b605dba83a2be027b3ebcee1033b950\"", "ServerSideEncryption": "AES256", "Metadata": { "x-am-meta-key2": "value2", "x-amz-meta-key1": "value1" }}Изменить метаданные объекта
Заголовок раздела «Изменить метаданные объекта»- AWS CLI
- Python
- Go
В Object Storage невозможно напрямую изменить метаданные объекта. Чтобы метаданные объекта изменились, нужно сделать копию объекта с таким же именем, но с новыми метаданными.
aws s3api copy-object \ --bucket <имя_бакета> \ --key <ключ_объекта> \ --copy-source <имя_бакета>/<ключ_объекта> \ --metadata "<ключ_1>"="<значение_1>","<ключ_2>"="<значение_2>" \ --metadata-directive REPLACE \