Метод copy

Создает копию объекта, хранящегося в Object Storage. Объекты, размером до 5 ГБ можно скопировать одной операцией copy, если объект больше, чем 5 ГБ, то необходимо применять операцию copyPart.

Чтобы указать источник для копирования, используйте заголовок x-amz-copy-source. Запрос на копирование не должен передавать каких-либо данных, кроме заголовков.

Примечание

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

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

Также с помощью заголовков можно:

  • Изменить класс хранилища объекта.
  • Добавить условия для копирования объекта.

Пользователь должен иметь разрешение на чтение исходного объекта и разрешение на запись в результирующий бакет.

Запрос

PUT /{bucket}/{key} HTTP/1.1

Path параметры

Параметр Описание
bucket Имя результирующего бакета.
key Ключ результирующего объекта. Идентификатор, под которым объект сохраняется в Object Storage.

Заголовки

Обязательные заголовки перечислены в таблице ниже.

Заголовок Описание
x-amz-copy-source Имя бакета и ключ объекта, который будет копироваться, разделенные символом /.

Например, x-amz-copy-source: /source_bucket/sourceObject.

Также используйте необходимые общие заголовки.

Заголовки, описанные в таблице ниже используйте, если вам необходимо изменить поведение метода copy по умолчанию.

Заголовок Описание
x-amz-metadata-directive Режим копирования метаданных.

Если значение заголовка COPY, то метаданные объекта копируются, а все заголовки x-amz-meta-* игнорируются. Это поведение метода copy по умолчанию.

Если значение заголовка REPLACE, то метаданные объекта подменяются указанными в запросе.

Заголовок x-amz-storage-class не копируется, добавьте его в запрос, если это необходимо.
x-amz-copy-source-if-match Условие для копирования объекта.

Если ETag объекта равен заданному в заголовке, то объект копируется.

Если условие не выполнено, то Object Storage вернет ошибку 412.

Можно использовать вместе с заголовком x-amz-copy-source-if-unmodified-since.
x-amz-copy-source-if-none-match Условие для копирования объекта.

Если ETag объекта не равен заданному в заголовке, то объект копируется.

Если условие не выполнено, то Object Storage вернет ошибку 412.

Можно использовать вместе с заголовком x-amz-copy-source-if-modified-since.
x-amz-copy-source-if-unmodified-since Условие для копирования объекта.

Объект копируется, если он не изменялся с указанного времени.

Если условие не выполнено, то Object Storage вернет ошибку 412.

Можно использовать вместе с заголовком x-amz-copy-source-if-match.
x-amz-copy-source-if-modified-since Условие для копирования объекта.

Объект копируется, если он изменился с указанного времени.

Если условие не выполнено, то Object Storage вернет ошибку 412.

Можно использовать вместе с заголовком x-amz-copy-source-if-none-match.
x-amz-storage-class Класс хранения объекта.

Может иметь любое из значений:
- STANDARD для загрузки объекта в стандартное хранилище.
- COLD, STANDARD_IA и NEARLINE для загрузки объекта в холодное хранилище.

Если заголовок не указан, то объект сохраняется в хранилище, установленном в настройках бакета.
x-amz-meta-* Пользовательские метаданные объекта.

Все заголовки, начинающиеся с x-amz-meta- Object Storage воспринимает как пользовательские, не обрабатывает их и сохраняет в том виде, в котором они переданы.

Общий размер пользовательских заголовков не должен превышать 2KB. Размер пользовательских данных определяется как длина строки в кодировке UTF-8. В размере учитываются и названия заголовков и их значения.

Если x-amz-metadata-directive: COPY, то эти заголовки игнорируются.

Ответ

Заголовки

Ответ может содержать общие заголовки, а также заголовки, перечисленные в таблице ниже.

Заголовок Описание
x-amz-storage-class Класс хранения объекта.

Может иметь значения:
- STANDARD для объекта, сохраненного в Стандартном хранилище.
- COLD для объекта, сохраненного в Холодном хранилище.

Коды ответов

Перечень возможных ответов смотрите в разделе Ответы.

Схема данных

<CopyObjectResult>
   <LastModified>2019-02-15T14:32:00</LastModified>
   <ETag>"9bgh7535f2734ec974343yuc93985328"</ETag>
</CopyObjectResult>
Элемент Описание
CopyObjectResult Содержит элементы ответа.

Путь: /CopyObjectResult.
ETag ETag результитрующего объекта. Поскольку при вычислении ETag не учитываются метаданные, то ETag исходного и результирующего объекта должны быть равны.

Путь: /CopyObjectResult/ETag.
LastModified Дата последнего изменения объекта.

Путь: /CopyObjectResult/LastModified.