Копирование BLOB-объекта из URL-адреса
Операция Copy Blob From URL
синхронно копирует BLOB-объект в место назначения в пределах учетной записи хранения для исходных blob-объектов размером до 256 мебибайт (МиБ). Этот API доступен начиная с версии 2018-03-28.
Источником операции может быть любой Copy Blob From URL
зафиксированный блочный BLOB-объект в любой учетной записи хранения Azure, которая является общедоступной или авторизованной с подписанным URL-адресом.
Запрос
Запрос можно создать Copy Blob From URL
следующим образом. Рекомендуется использовать ПРОТОКОЛ HTTPS. Замените myaccount именем учетной записи хранения, mycontainer — именем контейнера, а myblob — именем целевого BLOB-объекта.
URI запроса метода PUT | параметр "Версия HTTP" |
---|---|
https://myaccount.blob.core.windows.net/mycontainer/myblob |
HTTP/1.1 |
URI для эмулированной службы хранилища
При выполнении запроса к эмулируемой службе хранилища укажите имя узла эмулятора и порт Хранилище BLOB-объектов Azure в качестве 127.0.0.1:10000
, а затем имя эмулированной учетной записи хранения:
URI запроса метода PUT | параметр "Версия HTTP" |
---|---|
http://127.0.0.1:10000/devstoreaccount1/mycontainer/myblob |
HTTP/1.1 |
Дополнительные сведения см. в статье Использование эмулятора Azurite для разработки и тестирования службы хранилища Azure.
Параметры универсального кода ресурса (URI)
В запросе URI можно указать следующие дополнительные параметры.
Параметр | Описание |
---|---|
timeout |
Необязательный элемент. Параметр timeout указывается в секундах. Дополнительные сведения см. в разделе Установка времени ожидания для операций с хранилищем BLOB-объектов. |
Заголовки запросов
В следующей таблице описаны обязательные и необязательные заголовки запросов.
Заголовок запроса | Описание |
---|---|
Authorization |
Обязательный. Указывает схему авторизации, имя учетной записи и подпись. Дополнительные сведения см. в статье Авторизация запросов к Службе хранилища Azure. |
Date или x-ms-date |
Обязательный. Задает время запроса в формате UTC. Дополнительные сведения см. в статье Авторизация запросов к Службе хранилища Azure. |
x-ms-version |
Требуется для всех авторизованных запросов. Дополнительные сведения см. в разделе Управление версиями для служб хранилища Azure. |
x-ms-meta-name:value |
Необязательный элемент. Указывает определяемую пользователем пару "имя-значение", связанную с большим двоичным объектом. Если пары "имя-значение" не указаны, операция скопирует метаданные из исходного большого двоичного объекта или файла в целевой BLOB-объект. Если указана одна или несколько пар "имя-значение", целевой BLOB-объект создается с указанными метаданными и метаданные не копируются из исходного BLOB-объекта или файла. Начиная с версии 2009-09-19 имена метаданных должны соответствовать правилам именования для идентификаторов C#. Дополнительные сведения см. в статье Именование контейнеров, больших двоичных объектов и метаданных и ссылки на нее. |
x-ms-encryption-scope |
Необязательный элемент. Указывает область шифрования для шифрования содержимого запроса. Этот заголовок поддерживается в версии 2020-12-06 и более поздних версиях. |
x-ms-tags |
Необязательный элемент. Задает теги в кодировке строки запроса для большого двоичного объекта. Теги не копируются из источника копирования. Дополнительные сведения см. в разделе Примечания. Поддерживается в версии 2019-12-12 и более поздних версиях. |
x-ms-copy-source-tag-option |
Необязательный элемент. Возможные значения: REPLACE и COPY (с учетом регистра). Значение по умолчанию — REPLACE .Если COPY указан параметр , теги из исходного BLOB-объекта будут скопированы в целевой BLOB-объект. Исходный BLOB-объект должен быть закрытым, а запрос должен иметь разрешение на операцию Получения тегов BLOB-объектов в исходном BLOB-объекте и операцию Задать теги BLOB-объекта в целевом BLOB-объекте. Это приведет к дополнительному вызову Get Blob Tags операции в исходной учетной записи.REPLACE задает теги, заданные заголовком x-ms-tags в целевом BLOB-объекте. Если x-ms-tags указывает REPLACE и нет тегов, то в целевом BLOB-объекте теги не будут заданы. Указание COPY и x-ms-tags приведет к ошибке 409 (конфликт).Поддерживается в версии 2021-04-10 и более поздних. |
x-ms-source-if-modified-since |
Необязательный элемент. Значение DateTime . Задайте этот заголовок условной операции, чтобы BLOB-объект копировался, только если BLOB-объект источника был изменен, начиная с указанной даты-времени. Если исходный BLOB-объект не был изменен, хранилище BLOB-объектов возвращает код состояния 412 (сбой предварительного условия). Этот заголовок нельзя указать, если источником является файл Azure. |
x-ms-source-if-unmodified-since |
Необязательный элемент. Значение DateTime . Задайте этот заголовок условной операции, чтобы BLOB-объект копировался, только если BLOB-объект источника не был изменен, начиная с указанной даты-времени. Если исходный BLOB-объект был изменен, хранилище BLOB-объектов возвращает код состояния 412 (сбой условия). Этот заголовок нельзя указать, если источником является файл Azure. |
x-ms-source-if-match |
Необязательный элемент. Значение ETag . Укажите этот условный заголовок, чтобы скопировать исходный BLOB-объект, только если его ETag значение совпадает с указанным значением. Если значения не совпадают, хранилище BLOB-объектов возвращает код состояния 412 (сбой предварительного условия). Этот заголовок нельзя указать, если источником является файл Azure. |
x-ms-source-if-none-match |
Необязательный элемент. Значение ETag . Укажите этот условный заголовок для копирования большого двоичного объекта, только если его ETag значение не соответствует указанному значению. Если значения идентичны, хранилище BLOB-объектов возвращает код состояния 412 (сбой предварительного условия). Этот заголовок нельзя указать, если источником является файл Azure. |
If-Modified-Since |
Необязательный элемент. Значение DateTime . Задайте этот заголовок условной операции, чтобы копировать BLOB-объект, только если BLOB-объект назначения был изменен после указанной даты-времени. Если целевой BLOB-объект не был изменен, хранилище BLOB-объектов возвращает код состояния 412 (сбой предварительного условия). |
If-Unmodified-Since |
Необязательный элемент. Значение DateTime . Задайте этот заголовок условной операции, чтобы копировать BLOB-объект, только если BLOB-объект назначения не был изменен после указанной даты-времени. Если целевой BLOB-объект был изменен, хранилище BLOB-объектов возвращает код состояния 412 (сбой предварительного условия). |
If-Match |
Необязательный элемент. Значение ETag .
ETag Укажите значение для этого условного заголовка, чтобы скопировать большой двоичный объект, только если указанное ETag значение совпадает со значением ETag для существующего целевого BLOB-объекта. Если значения не совпадают, хранилище BLOB-объектов возвращает код состояния 412 (сбой предварительного условия). |
If-None-Match |
Необязательный элемент. Значение ETag или подстановочный знак (*).ETag Укажите значение для этого условного заголовка, чтобы скопировать большой двоичный объект только в том случае, если указанное ETag значение не соответствует значению ETag целевого BLOB-объекта.Укажите подстановочный знак (*) для выполнения операции, только если целевой BLOB-объект не существует. Если указанное условие не выполняется, хранилище BLOB-объектов возвращает код состояния 412 (сбой предварительного условия). |
x-ms-copy-source:name |
Обязательный. Указывает URL-адрес исходного большого двоичного объекта. Значением может быть URL-адрес длиной до 2 кибибайт (КиБ), указывающий большой двоичный объект. Значение должно быть закодировано в URL-адресе в том виде, в каком оно указано в запросе URI. Исходный BLOB-объект должен быть общедоступным или авторизован с помощью подписанного URL-адреса. Если исходный BLOB-объект является общедоступным, для выполнения операции авторизация не требуется. Если размер исходного BLOB-объекта превышает 256 МиБ, запрос завершается ошибкой 409 (конфликт). Типом исходного BLOB-объекта должен быть блочный BLOB-объект. Ниже приведены некоторые примеры URL-адресов исходного объекта: - https://myaccount.blob.core.windows.net/mycontainer/myblob - https://myaccount.blob.core.windows.net/mycontainer/myblob?snapshot=<DateTime> - https://myaccount.blob.core.windows.net/mycontainer/myblob?versionid=<DateTime> |
x-ms-copy-source-authorization: <scheme> <signature> |
Необязательный элемент. Указывает схему авторизации и подпись для источника копирования. Дополнительные сведения см. в статье Авторизация запросов к Службе хранилища Azure. Для Microsoft Entra поддерживается только носитель схемы. Этот заголовок поддерживается в версии 2020-10-02 и более поздних версиях. |
x-ms-requires-sync:true |
Обязательный. Указывает, что это синхронная Copy Blob From URL операция, а не асинхронная Copy Blob . |
x-ms-source-content-md5 |
Необязательный элемент. Указывает md5-хэш содержимого большого двоичного объекта из универсального кода ресурса (URI). Этот хэш используется для проверки целостности большого двоичного объекта во время передачи данных из URI. Если указан этот заголовок, служба хранилища сравнивает хэш содержимого, полученного из источника копирования, с этим значением заголовка. Хэш MD5 не хранится в большом двоичном объекте. Если два хэша не совпадают, операция завершается ошибкой с кодом 400 (недопустимый запрос). |
x-ms-lease-id:<ID> |
Требуется, если BLOB-объект назначения имеет активную аренду. Идентификатор аренды, указанный для этого заголовка, должен согласовываться с идентификатором аренды большого двоичного объекта назначения. Если запрос не содержит идентификатор аренды или он недопустим, операция завершается ошибкой с кодом состояния 412 (сбой условия). Если этот заголовок указан и целевой BLOB-объект в настоящее время не имеет активной аренды, операция завершается ошибкой с кодом состояния 412 (сбой предварительного условия). В версии 2012-02-12 и более поздних это значение должно указывать активную бесконечную аренду для арендованного BLOB-объекта. Сбой идентификатора аренды конечной длительности с кодом состояния 412 (сбой условия). |
x-ms-client-request-id |
Необязательный элемент. Предоставляет созданное клиентом непрозрачное значение с ограничением в 1 КиБ символов, которое записывается в журналы при настройке ведения журнала. Мы настоятельно рекомендуем использовать этот заголовок для сопоставления действий на стороне клиента с запросами, получаемыми сервером. |
x-ms-access-tier |
Необязательный элемент. Указывает уровень, который необходимо задать для целевого BLOB-объекта. Этот заголовок предназначен для страничных BLOB-объектов в учетной записи уровня "Премиум" только с версии 2017-04-17 и более поздних версий. Полный список поддерживаемых уровней см. в статье Высокопроизводительное хранилище класса Premium и управляемые диски для виртуальных машин. Этот заголовок поддерживается в версии 2018-11-09 и более поздних для блочных BLOB-объектов. В хранилище BLOB-объектов или общего назначения учетных записях версии 2 поддерживается разнесение по уровням блочных BLOB-объектов. Допустимые значения: Hot , Cool , Cold и Archive .
Примечание:Cold tier поддерживается для версии 2021-12-02 и более поздних версий. Подробные сведения о разных уровнях блочных BLOB-объектов см. в разделе Горячий, холодный и архивный уровни хранилища. |
Текст запроса
Нет.
Ответ
Ответ включает код состояния HTTP и набор заголовков ответа.
Код состояния
Успешная операция возвращает код состояния 202 (принято).
Сведения о кодах состояния см. в разделе Коды состояния и ошибок.
Заголовки ответов
Ответ для этой операции включает следующие заголовки. Ответ также может содержать дополнительные стандартные заголовки HTTP. Все стандартные заголовки соответствуют спецификации протокола HTTP/1.1.
Заголовок ответа | Описание |
---|---|
ETag |
Если копирование завершено, содержит ETag значение целевого большого двоичного объекта. Если копирование не завершено, содержит ETag значение пустого большого двоичного объекта, созданного в начале копии.Значение ETag находится в кавычках. |
Last-Modified |
Возвращает дату и время завершения операции копирования в целевой BLOB-объект. |
x-ms-request-id |
Однозначно идентифицирует выполненный запрос. Его можно использовать для устранения неполадок с запросом. Дополнительные сведения см. в разделе Устранение неполадок с операциями API. |
x-ms-version |
Указывает версию хранилища BLOB-объектов, которая используется для выполнения запроса. |
Date |
Значение даты и времени в формате UTC, указывающее время, в которое служба отправила ответ. |
x-ms-copy-id: <id> |
Идентификатор строки для этой операции копирования. |
x-ms-copy-status: <success> |
Указывает состояние операции копирования. Значение success означает, что операция успешно завершена. |
x-ms-client-request-id |
Может использоваться для устранения неполадок с запросами и соответствующими ответами. Значение этого заголовка равно значению заголовка x-ms-client-request-id , если он присутствует в запросе и содержит не более 1024 видимых символов ASCII. Если заголовок x-ms-client-request-id отсутствует в запросе, этот заголовок не будет присутствовать в ответе. |
x-ms-request-server-encrypted: true/false |
Задайте значение , true если содержимое запроса успешно зашифровано с помощью указанного алгоритма. В противном случае — значение false . |
x-ms-encryption-scope |
Возвращается, если запрос использовал область шифрования, чтобы клиент смог убедиться, что содержимое запроса успешно зашифровано с помощью область шифрования. |
Текст ответа
Нет.
Пример ответа
Ниже приведен образец ответа на запрос копирования BLOB-объекта.
Response Status:
HTTP/1.1 202 Accepted
Response Headers:
Last-Modified: <date>
ETag: "0x8CEB669D794AFE2"
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
x-ms-request-id: cc6b209a-b593-4be1-a38a-dde7c106f402
x-ms-version: 2018-03-28
x-ms-copy-id: 1f812371-a41d-49e6-b123-f4b542e851c5
x-ms-copy-status: success
Date: <date>
Авторизация
При вызове любой операции доступа к данным в службе хранилища Azure требуется авторизация. В следующей таблице показано, как можно авторизовать целевые и исходные Copy Blob From URL
объекты для операции.
Тип объекта | авторизация Microsoft Entra ID | Авторизация подписанного URL-адреса (SAS) | Авторизация с общим ключом (или общий ключ Lite) |
---|---|---|---|
Блочный BLOB-объект назначения | Да | Да | Да |
Исходный блочный BLOB-объект в той же учетной записи хранения | Да | Да | Да |
Исходный блочный BLOB-объект в другой учетной записи хранения | Нет | Да | Нет |
Если в запросе указаны теги в заголовке x-ms-tags
запроса, вызывающий объект должен соответствовать требованиям авторизации операции Set Blob Tags (Задать теги BLOB-объектов ).
Вы можете авторизовать Copy Blob From URL
операцию, как описано ниже. Обратите внимание, что исходный BLOB-объект в другой учетной записи хранения должен быть авторизован отдельно с помощью маркера SAS с разрешением Чтение (r). Дополнительные сведения об авторизации исходного BLOB-объекта см. в сведениях о заголовке x-ms-copy-source
запроса .
Важно!
Корпорация Майкрософт рекомендует использовать Microsoft Entra ID с управляемыми удостоверениями для авторизации запросов к службе хранилища Azure. Microsoft Entra ID обеспечивает более высокий уровень безопасности и простоту использования по сравнению с авторизацией с общим ключом.
Служба хранилища Azure поддерживает использование Microsoft Entra ID для авторизации запросов к данным BLOB-объектов. С помощью Microsoft Entra ID можно использовать управление доступом на основе ролей Azure (Azure RBAC) для предоставления разрешений субъекту безопасности. Субъект безопасности может быть пользователем, группой, субъектом-службой приложения или управляемым удостоверением Azure. Субъект безопасности проходит проверку подлинности с помощью Microsoft Entra ID для возврата маркера OAuth 2.0. Затем маркер можно использовать для авторизации запроса к службе BLOB-объектов.
Дополнительные сведения об авторизации с помощью Microsoft Entra ID см. в статье Авторизация доступа к BLOB-объектам с помощью Microsoft Entra ID.
Разрешения
Ниже перечислены действия RBAC, необходимые Microsoft Entra пользователю, группе, управляемому удостоверению или субъекту-службе для вызова Copy Blob From URL
операции, а также встроенная роль Azure RBAC с наименьшими привилегиями, которая включает это действие:
Целевой BLOB-объект
- Действие Azure RBAC:Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write (для записи в существующий BLOB-объект) или Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action (для записи нового BLOB-объекта в назначение)
- Встроенная роль с минимальными привилегиями:Участник данных BLOB-объектов хранилища
Исходный BLOB-объект в одной учетной записи хранения
- Действие Azure RBAC:Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read
- Встроенная роль с наименьшими привилегиями:читатель данных BLOB-объектов хранилища
Дополнительные сведения о назначении ролей с помощью Azure RBAC см. в статье Назначение роли Azure для доступа к данным BLOB-объектов.
Комментарии
Исходный и целевой Copy Blob From URL
BLOB-объект для операции должен быть блочный BLOB-объект.
В версии 2020-10-02 и более поздних версиях для источника операции копирования поддерживается авторизация Microsoft Entra.
Операция Copy Blob From URL
всегда копирует весь исходный BLOB-объект. Копирование диапазона байтов или набора блоков не поддерживается.
Вы можете скопировать исходный BLOB-объект в целевой BLOB-объект с другим именем. Конечный BLOB-объект может быть существующим блочный BLOB-объект или новый BLOB-объект, создаваемый операцией копирования.
При копировании из блочного BLOB-объекта копируются все зафиксированные блоки и их идентификаторы блоков. Незафиксированные блоки не копируются. В конце операции копирования целевой BLOB-объект будет иметь то же количество зафиксированных блоков, что и источник.
Значение ETag
блочного BLOB-объекта изменяется при Copy Blob From URL
запуске операции и по завершении операции.
Копирование свойств и метаданных BLOB-объекта
При копировании блочного BLOB-объекта в целевой blob-объект копируются следующие системные свойства с теми же значениями:
Content-Type
Content-Encoding
Content-Language
Content-Length
Cache-Control
Content-MD5
Content-Disposition
Список зафиксированных блоков исходного BLOB-объекта также копируется в целевой BLOB-объект. Незафиксированные блоки не копируются.
Целевой BLOB-объект всегда имеет тот же размер, что и исходный BLOB-объект, поэтому значение заголовка Content-Length
для целевого BLOB-объекта совпадает со значением этого заголовка для исходного BLOB-объекта.
Если заголовок x-ms-tags
предоставляет теги для целевого BLOB-объекта, они должны быть закодированы в строке запроса. Ключи и значения тегов должны соответствовать требованиям к именованию и длине, указанным в операции Задание тегов BLOB-объектов .
Заголовок x-ms-tags
может содержать до 2 килобит тегов. Если требуется больше тегов, используйте Set Blob Tags
операцию .
Если заголовок x-ms-tags
не содержит тегов, теги не копируются из исходного BLOB-объекта.
Копирование арендованного BLOB-объекта
Операция Copy Blob From URL
считывает только из исходного BLOB-объекта, поэтому состояние аренды исходного BLOB-объекта не имеет значения.
Выставление счетов
Запросы на ценообразование могут поступать от клиентов, использующих API хранилища BLOB-объектов, напрямую через REST API хранилища BLOB-объектов или из клиентской библиотеки службы хранилища Azure. Эти запросы начисляют плату за транзакцию. Тип транзакции влияет на способ оплаты учетной записи. Например, транзакции чтения начисляются к категории выставления счетов, отличной от категории операций записи. В следующей таблице показана категория выставления счетов для Copy Blob From URL
запросов на основе типа учетной записи хранения.
Операция | Тип учетной записи хранения | Категория выставления счетов |
---|---|---|
Копирование BLOB-объекта из URL-адреса (целевая учетная запись1) | Блочный BLOB-объект (ценовая категории "Премиум") Общего назначения версии 2 (цен. категория "Стандартный") Стандартная общего назначения версии 1 |
Операции записи |
Копирование BLOB-объекта из URL-адреса (исходная учетная запись2) | Блочный BLOB-объект (ценовая категории "Премиум") Общего назначения версии 2 (цен. категория "Стандартный") Стандартная общего назначения версии 1 |
Операции чтения |
1С целевой учетной записи взимается плата за одну транзакцию для запуска записи.
2Исходная учетная запись выполняет одну транзакцию для каждого запроса на чтение к исходному объекту.
Дополнительные сведения о ценах на указанные категории выставления счетов см. в разделе Цены на Хранилище BLOB-объектов Azure.
Кроме того, если исходная и целевая учетные записи находятся в разных регионах (например, в северной части США и южной части США), пропускная способность, используемая для передачи запроса, будет взиматься в исходную учетную запись хранения как исходящий трафик. Передача исходящих данных между учетными записями в пределах одного и того же региона осуществляется бесплатно.
При копировании исходного BLOB-объекта в целевой BLOB-объект с другим именем в той же учетной записи используются дополнительные ресурсы хранилища для нового BLOB-объекта. Операция копирования приведет к оплате использования емкости учетной записи хранения для этих дополнительных ресурсов.
См. также раздел
Авторизация запросов к службе хранилища Azure
Коды состояний и ошибок
Коды ошибок хранилища BLOB-объектов
Общие сведения о том, как начисляются расходы за моментальные снимки