Создание моментального снимка большого двоичного объекта

Операция Snapshot Blob создает доступный только для чтения моментальный снимок BLOB-объекта.

Запрос

Запрос можно создать Snapshot Blob следующим образом. Рекомендуется использовать протокол HTTPS. Замените myaccount именем своей учетной записи хранения:

URI запроса метода PUT параметр "Версия HTTP"
https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=snapshot HTTP/1.1

URI эмулированной службы хранилища

При выполнении запроса к эмулированной службе хранилища укажите имя узла эмулятора и порт Хранилище BLOB-объектов Azure в качестве 127.0.0.1:10000, за которым следует эмулированное имя учетной записи:

URI запроса метода PUT параметр "Версия HTTP"
http://127.0.0.1:10000/devstoreaccount1/mycontainer/myblob?comp=snapshot 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 Необязательный элемент. Задает определяемую пользователем пару "имя-значение", связанную с большим двоичным объектом. Если пары "имя-значение" не указаны, операция копирует метаданные базового большого двоичного объекта в snapshot. Если указать одну или несколько пар "имя-значение", snapshot создается с указанными метаданными, а метаданные не копируются из базового BLOB-объекта.

Обратите внимание, что начиная с версии 2009-09-19 имена метаданных должны соответствовать правилам именования для идентификаторов C#. Дополнительные сведения см. в статье Именование контейнеров, больших двоичных объектов и метаданных и ссылки на нее.
If-Modified-Since Необязательный элемент. Значение DateTime. Укажите этот условный заголовок, чтобы принять snapshot большого двоичного объекта, только если он был изменен с указанной даты и времени. Если базовый BLOB-объект не был изменен, хранилище BLOB-объектов возвращает код состояния 412 (сбой предварительного условия).
If-Unmodified-Since Необязательный элемент. Значение DateTime. Укажите этот условный заголовок, чтобы принять snapshot большого двоичного объекта, только если он не был изменен с указанной даты и времени. Если базовый BLOB-объект был изменен, хранилище BLOB-объектов возвращает код состояния 412 (сбой предварительного условия).
If-Match Необязательный элемент. Значение ETag. ETag Укажите значение для этого условного заголовка, чтобы принимать snapshot большого двоичного объекта, только если его ETag значение соответствует указанному значению. Если значения не совпадают, хранилище BLOB-объектов возвращает код состояния 412 (сбой предварительного условия).
If-None-Match Необязательный элемент. Значение ETag.

ETag Укажите значение для этого условного заголовка, чтобы принимать snapshot большого двоичного объекта, только если его ETag значение не соответствует указанному значению. Если значения идентичны, хранилище BLOB-объектов возвращает код состояния 412 (сбой предварительного условия).
x-ms-encryption-scope Необязательный элемент. Указывает область шифрования для шифрования содержимого запроса. Этот заголовок поддерживается в версии 2019-02-02 и более поздних версиях.
x-ms-lease-id:<ID> Необязательный элемент. Если указать этот заголовок, операция выполняется только при выполнении обоих следующих условий:

— Аренда BLOB-объекта в настоящее время активна.
— идентификатор аренды, указанный в запросе, совпадает с идентификатором большого двоичного объекта.

Если указан этот заголовок и любое из этих условий не выполняется, запрос завершается ошибкой. Операция завершается Snapshot Blob сбоем с кодом состояния 412 (сбой предварительного условия).
x-ms-client-request-id Необязательный элемент. Предоставляет созданное клиентом непрозрачное значение с ограничением в 1 кибибайт (КиБ), которое записывается в журналы при настройке ведения журнала. Мы настоятельно рекомендуем использовать этот заголовок для сопоставления действий на стороне клиента с запросами, получаемыми сервером. Дополнительные сведения см. в разделе Мониторинг Хранилище BLOB-объектов Azure.

Эта операция также поддерживает использование условных заголовков для выполнения операции, только если выполняется указанное условие. Дополнительные сведения см. в разделе Указание условных заголовков для операций с хранилищем BLOB-объектов.

Заголовки запросов (ключи шифрования, предоставленные клиентом)

Начиная с версии 2019-02-02, в запросе можно указать следующие заголовки для шифрования BLOB-объекта с помощью ключа, предоставленного клиентом. Шифрование с помощью ключа, предоставленного клиентом (и соответствующего набора заголовков), является необязательным. Если большой двоичный объект ранее был зашифрован с помощью ключа, предоставленного клиентом, эти заголовки должны быть включены в запрос для успешного завершения операции чтения.

Заголовок запроса Описание
x-ms-encryption-key Обязательный. Ключ шифрования AES-256 в кодировке Base64.
x-ms-encryption-key-sha256 Обязательный. Хэш SHA256 в кодировке Base64 ключа шифрования.
x-ms-encryption-algorithm: AES256 Обязательный. Указывает алгоритм, используемый для шифрования. Для этого заголовка должно быть установлено значение AES256.

Текст запроса

Нет.

Ответ

Ответ включает код состояния HTTP и набор заголовков ответа.

Код состояния

Успешная операция возвращает код состояния 201 (создано). Сведения о кодах состояния см. в разделе Коды состояния и ошибок.

Заголовки ответов

Ответ для этой операции включает следующие заголовки. Ответ также может содержать дополнительные стандартные заголовки HTTP. Все стандартные заголовки соответствуют спецификации протокола HTTP/1.1.

Синтаксис Описание
x-ms-snapshot: <DateTime> DateTime Возвращает значение, однозначно определяющее snapshot. Значение этого заголовка указывает версию snapshot, и ее можно использовать в последующих запросах для доступа к snapshot. Обратите внимание, что это значение непрозрачно.
ETag Объект ETag snapshot. Если версия запроса — 18.08.2011 или более поздняя, ETag значение будет в кавычках. Обратите внимание, что snapshot не может быть записана, поэтому ETag объект определенного snapshot никогда не изменяется. Однако ETag значение snapshot будет отличаться от базового BLOB-объекта, если с запросом предоставляются новые метаданныеSnaphot Blob. Если в запросе не указаны метаданные, ETag snapshot будет идентичен значению базового BLOB-объекта на момент получения snapshot.
Last-Modified Время последнего изменения моментального снимка. Дополнительные сведения см. в разделе Представление значений даты и времени в заголовках.

Обратите внимание, что snapshot нельзя записать в, поэтому время последнего изменения определенного snapshot никогда не изменяется. Однако время последнего изменения snapshot будет отличаться от времени базового BLOB-объекта, если с запросом предоставляются новые метаданныеSnaphot Blob. Если в запросе не указаны метаданные, время последнего изменения snapshot будет идентично времени базового BLOB-объекта на момент получения snapshot.
x-ms-request-id Уникально идентифицирует выполненный запрос и может использоваться для устранения неполадок с запросом. Дополнительные сведения см. в разделе Устранение неполадок с операциями API.
x-ms-version Указывает версию хранилища BLOB-объектов, которая использовалась для выполнения запроса. Этот заголовок возвращается для запросов к версии 2009-09-19 и более поздним версиям.
Date Значение даты и времени в формате UTC, указывающее время, когда был инициирован ответ. Служба создает это значение.
x-ms-request-server-encrypted: true/false Версия 2019-02-02 или более поздняя. Значение этого заголовка равно true, если содержимое запроса успешно зашифровано с помощью указанного алгоритма. В противном случае задается значение false.
x-ms-encryption-key-sha256 Версия 2019-02-02 или более поздняя. Возвращается, если запрос использовал предоставленный клиентом ключ для шифрования. Клиент может убедиться, что содержимое запроса успешно зашифровано с помощью предоставленного ключа.
x-ms-encryption-scope Версия 2019-02-02 или более поздняя. Возвращается, если запрос использовал область шифрования. Клиент может убедиться, что содержимое запроса успешно зашифровано с помощью область шифрования.
x-ms-version-id: <DateTime> Версия 2019-12-12 и более поздние версии. Возвращает непрозрачное DateTime значение, однозначно определяющее большой двоичный объект. Значение этого заголовка указывает версию большого двоичного объекта, и его можно использовать в последующих запросах для доступа к большому двоичному объекту.
x-ms-client-request-id Может использоваться для устранения неполадок с запросами и соответствующими ответами. Значение этого заголовка равно значению заголовка x-ms-client-request-id , если он присутствует в запросе. Значение равно не более 1024 видимых символов ASCII. Если заголовок x-ms-client-request-id отсутствует в запросе, он не будет присутствовать в ответе.

Текст ответа

Нет.

Авторизация

При вызове любой операции доступа к данным в службе хранилища Azure требуется авторизация. Вы можете авторизовать Snapshot Blob операцию, как описано ниже.

Служба хранилища 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 пользователя, группы или субъекта-службы для вызова Snapshot Blob операции, а также встроенная роль Azure RBAC с наименьшими привилегиями, которая включает это действие:

Дополнительные сведения о назначении ролей с помощью Azure RBAC см. в статье Назначение роли Azure для доступа к данным BLOB-объектов.

Комментарии

Моментальные снимки — это версии BLOB-объектов, предназначенные только для чтения. После создания snapshot его можно читать, копировать или удалять, но изменять нельзя.

Моментальный снимок предоставляет удобный способ создания резервной копии большого двоичного объекта. Вы можете использовать snapshot для восстановления большого двоичного объекта до более ранней версии, вызвав команду Copy BLOB-объект, чтобы перезаписать базовый BLOB-объект с его snapshot.

При создании snapshot хранилище BLOB-объектов возвращает DateTime значение, однозначно определяющее snapshot относительно его базового BLOB-объекта. Используйте это значение, чтобы выполнять последующие операции на моментальном снимке. Обратите внимание, что это DateTime значение следует рассматривать как непрозрачное.

Значение DateTime определяет snapshot в универсальном коде ресурса (URI). Например, базовый BLOB-объект и его моментальные снимки имеют URI следующего вида:

  • Базовый BLOB-объект: http://myaccount.blob.core.windows.net/mycontainer/myblob

  • Снимок: http://myaccount.blob.core.windows.net/mycontainer/myblob?snapshot=<DateTime>

Обратите внимание, что при каждом вызове Snapshot Blob операции создается новый snapshot с уникальным DateTime значением. BLOB-объект может иметь любое число моментальных снимков. Существующие моментальные снимки никогда не перезаписываются. Их можно удалить явным образом, вызвав метод Delete BLOB-объект и задав x-ms-include-snapshots для заголовка соответствующее значение.

Успешный вызов возвращает Snapshot BlobDateTime значение в заголовке x-ms-snapshot ответа. Затем это DateTime значение можно использовать для выполнения операций чтения, удаления или копирования в определенной версии snapshot. Можно вызвать любую операцию хранилища BLOB-объектов, действительную для snapshot, указав ?snapshot=<DateTime> после имени BLOB-объекта.

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

  • Content-Type

  • Content-Encoding

  • Content-Language

  • Content-Length

  • Cache-Control

  • Content-MD5

  • x-ms-blob-sequence-number (только для страничных BLOB-объектов)

  • x-ms-blob-committed-block-count (только для добавочных BLOB-объектов)

  • x-ms-copy-id (версия 12.02.2012 и более поздние)

  • x-ms-copy-status (версия 12.02.2012 и более поздние)

  • x-ms-copy-source (версия 12.02.2012 и более поздние)

  • x-ms-copy-progress (версия 12.02.2012 и более поздние)

  • x-ms-copy-completion-time (версия 12.02.2012 и более поздние)

  • x-ms-copy-status-description (версия 12.02.2012 и более поздние)

Список зафиксированных блокировок базового BLOB-объекта также копируется в snapshot, если большой двоичный объект является блочный BLOB-объект. Незафиксированные блоки не копируются.

Snapshot blob всегда имеет тот же размер, что и базовый BLOB-объект на момент snapshot. Значение заголовка Content-Length для snapshot BLOB-объекта будет таким же, как и для базового BLOB-объекта.

Можно задать одно или несколько новых значений метаданных для моментального снимка, указав в запросе заголовок x-ms-meta-name:value. Если этот заголовок не указан, метаданные, связанные с базовым BLOB-объектом, копируются в snapshot.

Все теги, связанные с базовым BLOB-объектом, копируются в snapshot. Невозможно задать новые значения тегов для snapshot.

Вы можете указать условные заголовки в запросе, чтобы принять snapshot большого двоичного объекта, только если выполняется условие. Если указанное условие не выполняется, snapshot не создается. Служба возвращает код состояния 412 (сбой предварительного условия) вместе с дополнительными сведениями об ошибке о невыполненном условии.

Если базовый BLOB-объект имеет активную аренду, вы можете принять snapshot большого двоичного объекта при условии, что для запроса выполняется одно из следующих условий:

  • Указан условный заголовок x-ms-lease-id и в запрос включен идентификатор активной аренды базового BLOB-объекта. Это условие указывает, что snapshot создаваться только в том случае, если аренда активна, а указанный идентификатор аренды соответствует идентификатору, связанному с большим двоичным объектом.

  • Заголовок x-ms-lease-id не указан вообще, и в этом случае аренда монопольной записи игнорируется.

Обратите внимание, что аренда, связанная с базовым BLOB-объектом, не копируется в snapshot. Моментальные снимки не могут быть арендованы.

При копировании базового BLOB-объекта с помощью операции копирования BLOB-объекта все моментальные снимки базового BLOB-объекта не копируются в целевой BLOB-объект. Когда целевой большой двоичный объект перезаписывается копией, все моментальные снимки, связанные с ним, не затрагиваются и остаются под своим именем.

Можно скопировать моментальный снимок в его базовый BLOB-объект, что позволяет восстановить более раннюю версию BLOB-объекта. Моментальный снимок остается, но базовый BLOB-объект перезаписывается копией, для которой возможны операции чтения и записи.

Примечание

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

Вы можете задать уровень BLOB-объектов на snapshot, начиная с REST версии 2019-12-12. Если уровень задан для корневого BLOB-объекта, то все моментальные снимки наследуют этот уровень от базового BLOB-объекта. Получение snapshot в архивном blob-объекте завершится ошибкой. Явное задание уровня для объекта приводит к выставлению счетов за полный размер объекта. При snapshot большого двоичного объекта с заданным уровнем будет выставлен счет на полную копию корневого BLOB-объекта и snapshot. Подробные сведения о разных уровнях блочных BLOB-объектов см. в разделе Горячий, холодный и архивный уровни хранилища.

Существует несколько различий между учетными записями Azure хранилище класса Premium и учетными записями хранения уровня "Стандартный" с точки зрения моментальных снимков.

  • В учетной записи Premium максимальное количество моментальных снимков для каждого BLOB-объекта страницы составляет 100. Если это ограничение превышено, Snapshot Blob операция возвращает код ошибки 409 (превышено число моментальных снимков).

  • Вы можете принимать snapshot страничного BLOB-объекта в учетной записи хранилище класса Premium каждые десять минут. Если эта скорость превышена, Snapshot Blob операция возвращает код ошибки 409 (Превышена частота операций моментального снимка).

  • Вы не можете прочитать snapshot страничного BLOB-объекта в учетной записи хранилище класса Premium с помощью команды Получить BLOB-объект. В этом случае служба возвращает код ошибки 400 (недопустимая операция). Однако для snapshot можно вызвать методы Get Blob Properties и Get Blob Metadata.

    Чтобы прочитать snapshot, можно с помощью операции Копирования BLOB-объекта скопировать snapshot в другой страничный BLOB-объект в учетной записи. При этом в целевом большом двоичном объекте, выбранном для копирования, не должно быть других моментальных снимков. Если BLOB-объект назначения имеет моментальные снимки, то Copy Blob возвращает код ошибки 409 (SnapshotsPresent).

Дополнительные сведения см. в статье Использование операций хранилища BLOB-объектов с azure хранилище класса Premium.

Если управление версиями включено, создание snapshot большого двоичного объекта также создает новую версию и сохраняет предыдущую версию базового BLOB-объекта. Параметр x-ms-version-id возвращает непрозрачное DateTime значение для новой версии большого двоичного объекта.

Выставление счетов

Запросы на ценообразование могут исходить от клиентов, использующих API хранилища BLOB-объектов, напрямую через REST API хранилища BLOB-объектов или из клиентской библиотеки службы хранилища Azure. Эти запросы начисляют плату за каждую транзакцию. Тип транзакции влияет на способ оплаты учетной записи. Например, транзакции чтения начисляются на категорию выставления счетов, отличную от категории операций записи. В следующей таблице показана категория выставления счетов для Snapshot Blob запросов на основе типа учетной записи хранения.

Операция Тип учетной записи хранения Категория выставления счетов
Создание моментального снимка большого двоичного объекта Блочный BLOB-объект (ценовая категории "Премиум")
Общего назначения версии 2 (цен. категория "Стандартный")
Стандартная общего назначения версии 1
Операции чтения

Дополнительные сведения о ценах для указанной категории выставления счетов см. в разделе Цены на Хранилище BLOB-объектов Azure.

См. также раздел

Создание моментального снимка BLOB-объекта

Авторизация запросов к службе хранилища Azure

Коды состояний и ошибок

Коды ошибок хранилища BLOB-объектов