Управление пользовательскими метаданными объекта
При загрузке объекта в Object Storage вместе с ним вы можете передавать набор пользовательских метаданных в виде пар ключ-значение
.
Загрузить объект с метаданными
Если у вас еще нет интерфейса командной строки AWS CLI, установите и сконфигурируйте его.
В терминале выполните команду:
aws s3api put-object \
--bucket <имя_бакета> \
--key <ключ_объекта> \
--body <путь_к_локальному_файлу> \
--metadata "<ключ_1>"="<значение_1>","<ключ_2>"="<значение_2>" \
--endpoint-url=https://storage.yandexcloud.net
Где:
--bucket
— имя бакета, в который вы хотите загрузить объект.--key
— ключ объекта в бакете.--body
— путь к локальному файлу, который вы хотите загрузить в бакет.--metadata
— набор пользовательских метаданных в виде парключ-значение
, указанных через запятую. Ключи должны состоять только из ASCII-символов . Размер значения не должен превышать 2 КБ.--endpoint-url
— эндпоинт Object Storage.
Воспользуйтесь методом S3 API upload, например, с помощью утилиты curl
.
Используйте curl
версии 8.3.0
AWS_KEY_ID="<идентификатор_статического_ключа>"
AWS_SECRET_KEY="<секретный_ключ>"
LOCAL_FILE="<путь_к_локальному_файлу>"
BUCKET_NAME="<имя_бакета>"
OBJECT_PATH="<ключ_объекта>"
META_KEY_1="<ключ_1>"
META_VALUE_1="<значение_1>"
META_KEY_2="<ключ_2>"
META_VALUE_2="<значение_2>"
curl \
--request PUT \
--user "${AWS_KEY_ID}:${AWS_SECRET_KEY}" \
--aws-sigv4 "aws:amz:ru-central1:s3" \
--upload-file "${LOCAL_FILE}" \
--header "X-Amz-Meta-${META_KEY_1}: ${META_VALUE_1}" \
--header "X-Amz-Meta-${META_KEY_2}: ${META_VALUE_2}" \
--verbose \
"https://storage.yandexcloud.net/${BUCKET_NAME}/${OBJECT_PATH}"
Где:
AWS_KEY_ID
— идентификатор статического ключа доступа.AWS_SECRET_KEY
— секретный ключ.LOCAL_FILE
— путь к локальному файлу, который вы хотите загрузить в бакет.BUCKET_NAME
— имя бакета, в который вы хотите загрузить объект.OBJECT_PATH
— ключ объекта в бакете.META_KEY_1
иMETA_KEY_1
— ключи пользовательских метаданных. Ключи должны состоять только из ASCII-символов .META_VALUE_1
иMETA_VALUE_2
— значения пользовательских метаданных. Размер значения не должен превышать 2 КБ.
Получить метаданные объекта
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
-
Посмотрите описание команды CLI для получения метаданных объекта:
yc storage s3api head-object --help
-
Получите список бакетов в каталоге по умолчанию:
yc storage bucket list
Результат:
+------------------+----------------------+-------------+-----------------------+---------------------+ | NAME | FOLDER ID | MAX SIZE | DEFAULT STORAGE CLASS | CREATED AT | +------------------+----------------------+-------------+-----------------------+---------------------+ | first-bucket | b1gmit33ngp6******** | 53687091200 | STANDARD | 2022-12-16 13:58:18 | +------------------+----------------------+-------------+-----------------------+---------------------+
-
Выполните команду:
yc storage s3api head-object \ --bucket <имя_бакета> \ --key <ключ_объекта>
Где:
--bucket
— имя вашего бакета.--key
— ключ объекта.
Результат:
etag: '"d41d8cd98f00b204e9800998********"' request_id: 6428ce25******** accept_ranges: bytes content_type: application/octet-stream last_modified_at: "2024-10-08T12:36:36Z" server_side_encryption: aws:kms sse_kms_key_id: abj497vtg3h0********
Если у вас еще нет интерфейса командной строки AWS CLI, установите и сконфигурируйте его.
В терминале выполните команду:
aws s3api head-object \
--bucket <имя_бакета> \
--key <ключ_объекта> \
--endpoint-url=https://storage.yandexcloud.net
Где:
--bucket
— имя бакета, в котором размещен объект.--key
— ключ объекта в бакете.--endpoint-url
— эндпоинт Object Storage.
Воспользуйтесь методом S3 API getObjectMeta, например, с помощью утилиты curl
.
Используйте curl
версии 8.3.0
AWS_KEY_ID="<идентификатор_статического_ключа>"
AWS_SECRET_KEY="<секретный_ключ>"
BUCKET_NAME="<имя_бакета>"
OBJECT_PATH="<ключ_объекта>"
curl \
--head \
--user "${AWS_KEY_ID}:${AWS_SECRET_KEY}" \
--aws-sigv4 "aws:amz:ru-central1:s3" \
"https://storage.yandexcloud.net/${BUCKET_NAME}/${OBJECT_PATH}"
Где:
AWS_KEY_ID
— идентификатор статического ключа доступа.AWS_SECRET_KEY
— секретный ключ.BUCKET_NAME
— имя бакета, в котором размещен объект.OBJECT_PATH
— ключ объекта в бакете.
Изменить метаданные объекта
Важно
Существующий набор пользовательских метаданных будет полностью перезаписан новым.
Если у вас еще нет интерфейса командной строки AWS CLI, установите и сконфигурируйте его.
В терминале выполните команду:
aws s3api copy-object \
--bucket <имя_бакета> \
--key <ключ_объекта> \
--copy-source <имя_бакета>/<ключ_объекта> \
--metadata "<ключ_1>"="<значение_1>","<ключ_2>"="<значение_2>" \
--metadata-directive REPLACE \
--endpoint-url=https://storage.yandexcloud.net
Где:
--bucket
— имя бакета, в котором вы хотите изменить метаданные объекта.--key
— ключ объекта в бакете.--copy-source
— путь к объекту в формате<имя_бакета>/<ключ_объекта>
.--metadata
— набор новых пользовательских метаданных в виде парключ-значение
, указанных через запятую. Ключи должны состоять только из ASCII-символов . Размер значения не должен превышать 2 КБ.--metadata-directive
— параметр, который указывает, что нужно заменить метаданные объекта на новые.--endpoint-url
— эндпоинт Object Storage.
Воспользуйтесь методом S3 API copy, например, с помощью утилиты curl
.
Используйте curl
версии 8.3.0
AWS_KEY_ID="<идентификатор_статического_ключа>"
AWS_SECRET_KEY="<секретный_ключ>"
BUCKET_NAME="<имя_бакета>"
OBJECT_PATH="<ключ_объекта>"
META_KEY_1="<ключ_1>"
META_VALUE_1="<значение_1>"
META_KEY_2="<ключ_2>"
META_VALUE_2="<значение_2>"
curl \
--request PUT \
--user "${AWS_KEY_ID}:${AWS_SECRET_KEY}" \
--aws-sigv4 "aws:amz:ru-central1:s3" \
--header "X-Amz-Copy-Source: /${BUCKET_NAME}/${OBJECT_PATH}" \
--header "X-Amz-Metadata-Directive: REPLACE" \
--header "X-Amz-Meta-${META_KEY_1}: ${META_VALUE_1}" \
--header "X-Amz-Meta-${META_KEY_2}: ${META_VALUE_2}" \
--verbose \
"https://storage.yandexcloud.net/${BUCKET_NAME}/${OBJECT_PATH}"
Где:
AWS_KEY_ID
— идентификатор статического ключа доступа.AWS_SECRET_KEY
— секретный ключ.BUCKET_NAME
— имя бакета, в котором вы хотите изменить метаданные объекта.OBJECT_PATH
— ключ объекта в бакете.META_KEY_1
иMETA_KEY_1
— новые ключи пользовательских метаданных. Ключи должны состоять только из ASCII-символов .META_VALUE_1
иMETA_VALUE_2
— новые значения пользовательских метаданных. Размер значения не должен превышать 2 КБ.