Lease Blob (Аренда BLOB-объекта)
Операция Lease Blob
создает блокировку большого двоичного объекта и управляет ею для операций записи и удаления. Длительность блокировки может составлять 15–60 секунд либо быть бесконечной. В версиях до 12.02.2012 длительность блокировки составляет 60 секунд.
Важно!
Начиная с версии 2012-02-12, некоторые операции Lease Blob
работают не так, как в предыдущих версиях. Например, в предыдущих версиях можно было продлить аренду после ее выпуска. Начиная с версии 2012-02-12 этот запрос на аренду завершается сбоем, но вызовы, использующие более старые версии, по-прежнему Lease Blob
успешно. Список изменений в поведении этой операции см. в разделе "Примечания" далее в этой статье.
Операцию можно вызвать Lease Blob
в одном из следующих режимов:
Acquire
— запрос новой аренды;Renew
— продление существующей аренды;Change
— изменение идентификатора существующей аренды;Release
, чтобы освободить аренду, если она больше не нужна, чтобы другой клиент сразу же получил аренду большого двоичного объекта.Break
, чтобы завершить аренду, но убедитесь, что другой клиент не может получить новую аренду, пока не истечет текущий период аренды.
Запрос
Запрос можно создать Lease Blob
следующим образом. Рекомендуется использовать протокол HTTPS. Замените myaccount именем своей учетной записи хранения.
URI запроса метода PUT | параметр "Версия HTTP" |
---|---|
https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=lease |
HTTP/1.1 |
URI эмулированной службы хранилища
При выполнении запроса к эмулированной службе хранилища укажите имя узла эмулятора и порт Хранилище BLOB-объектов Azure в качестве 127.0.0.1:10000
, за которым следует эмулированное имя учетной записи хранения.
URI запроса метода PUT | параметр "Версия HTTP" |
---|---|
http://127.0.0.1:10000/devstoreaccount1/mycontainer/myblob?comp=lease |
HTTP/1.0 HTTP/1.1 |
Дополнительные сведения см. в статье Использование эмулятора Azurite для разработки локальной службы хранилища Azure.
Параметры универсального кода ресурса (URI)
В URI запроса можно указать следующий дополнительный параметр.
Параметр | Описание |
---|---|
timeout |
Необязательный элемент. Параметр timeout указывается в секундах. Дополнительные сведения см. в разделе Настройка времени ожидания для операций с хранилищем BLOB-объектов. |
Заголовки запросов
В следующей таблице перечислены обязательные и необязательные заголовки запросов.
Заголовок запроса | Описание |
---|---|
Authorization |
Обязательный. Указывает схему авторизации, имя учетной записи и подпись. Дополнительные сведения см. в статье Авторизация запросов к Службе хранилища Azure. |
Date или x-ms-date |
Обязательный. Задает время запроса в формате UTC. Дополнительные сведения см. в статье Авторизация запросов к Службе хранилища Azure. |
x-ms-version |
Необязательный элемент. Задает версию операции, используемой для этого запроса. Дополнительные сведения см. в разделе Управление версиями для служб хранилища Azure. |
x-ms-lease-id: <ID> |
Обязательно при продлении, изменении или освобождении аренды. Значение можно указать в любом допустимом x-ms-lease-id формате строки GUID. Список допустимых форматов см. в разделе Конструктор GUID (строка). |
x-ms-lease-action: <acquire ¦ renew ¦ change ¦ release ¦ break> |
acquire : запрашивает новую аренду. Если у большого двоичного объекта нет активной аренды, хранилище BLOB-объектов создает аренду большого двоичного объекта и возвращает новый идентификатор аренды. Если большой двоичный объект имеет активную аренду, вы можете запросить новую аренду только с помощью идентификатора активной аренды. Однако можно указать новый x-ms-lease-duration , включая отрицательный (-1) для аренды, срок действия которого не истекает.renew : продлевает аренду. Вы можете продлить аренду, если идентификатор аренды, указанный в запросе, совпадает с идентификатором, связанным с большим двоичным объектом. Обратите внимание, что аренда может быть продлена, даже если срок ее действия истек, при условии, что blob-объект не был повторно изменен или арендован после истечения срока аренды. При продлении аренды срок действия начинается заново.change : версия 12.02.2012 и более поздняя. Изменяет идентификатор активной аренды. Объект change должен содержать текущий идентификатор аренды в x-ms-lease-id , а новый идентификатор аренды — в x-ms-proposed-lease-id .release : освобождает аренду. Вы можете освободить аренду, если идентификатор аренды, указанный в запросе, совпадает с идентификатором, связанным с большим двоичным объектом. Освобождение аренды позволяет другому клиенту немедленно получить аренду большого двоичного объекта сразу после завершения выпуска.break : прерывает аренду, если большой двоичный объект имеет активную аренду. После разрыва аренды ее нельзя будет продлить. Любой авторизованный запрос может нарушить аренду; запрос не требуется для указания соответствующего идентификатора аренды. При прерывании аренды допускается период перерыва аренды, в течение которого break release и являются единственными операциями аренды большого двоичного объекта. После успешного прекращения аренды ответ указывает интервал в секундах, прежде чем можно будет приобрести новую аренду.Неисправная аренда также может быть освобождена. В этом случае другой клиент может сразу же получить аренду большого двоичного объекта. |
x-ms-lease-break-period: N |
Необязательный элемент. Версия 12.02.2012 и более поздняя. Для операции break это предполагаемая длительность аренды в секундах, прежде чем она может быть прекращена (0–60 секунд). Этот период перерыва используется только в том случае, если он короче времени, оставшегося в аренде. В противном случае используется оставшееся время аренды. Новая аренда не будет доступна до истечения периода перерыва, но она может храниться дольше, чем период перерыва. Если этот заголовок не отображается вместе с операцией break , по истечении оставшегося периода аренды прерывается период аренды с фиксированной длительностью и немедленно прерывается бесконечная аренда. |
x-ms-lease-duration: -1 ¦ n seconds |
Версия 12.02.2012 и более поздняя. Только разрешено и требуется для acquire операции. Указывает срок аренды в секундах или отрицательное число (-1) для бесконечной аренды. Конечная аренда может находиться в пределах от 15 до 60 секунд. Длительность аренды нельзя изменить с помощью renew или change . |
x-ms-proposed-lease-id: <ID> |
Версия 12.02.2012 и более поздняя. Необязательный параметр для acquire и обязательный для change . Идентификатор предлагаемой аренды в формате строки GUID. Хранилище BLOB-объектов возвращает значение 400 (Invalid request) , если предлагаемый идентификатор аренды не в правильном формате. Список допустимых форматов см. в разделе Конструктор GUID (строка). |
Origin |
Необязательный элемент. Указывает источник, от которого выдан запрос. Наличие этого заголовка приводит к появлению в ответе заголовков совместного использования ресурсов (CORS). Дополнительные сведения см. в разделе Поддержка CORS для служб хранилища . |
x-ms-client-request-id |
Необязательный элемент. Предоставляет созданное клиентом непрозрачное значение с ограничением в 1 кибибайт (КиБ), которое записывается в журналы при настройке ведения журнала. Мы настоятельно рекомендуем использовать этот заголовок для сопоставления действий на стороне клиента с запросами, получаемыми сервером. Дополнительные сведения см. в разделе Мониторинг Хранилище BLOB-объектов Azure. |
Эта операция также поддерживает использование условных заголовков для выполнения операции, только если выполняется указанное условие. Дополнительные сведения см. в разделе Указание условных заголовков для операций с хранилищем BLOB-объектов.
Текст запроса
Нет.
Пример запроса
В следующем примере показан запрос на приобретение аренды.
Request Syntax:
PUT https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=lease HTTP/1.1
Request Headers:
x-ms-version: 2015-02-21
x-ms-lease-action: acquire
x-ms-lease-duration: -1
x-ms-proposed-lease-id: 1f812371-a41d-49e6-b123-f4b542e851c5
x-ms-date: <date>
Authorization: SharedKey testaccount1:esSKMOYdK4o+nGTuTyeOLBI+xqnqi6aBmiW4XI699+o=
Ответ
Ответ включает код состояния HTTP и набор заголовков ответа.
Код состояния
Коды состояния успешного выполнения для операций аренды.
Acquire
: успешная операция возвращает код состояния 201 (создано).Renew
: успешная операция возвращает код состояния 200 (ОК).Change
: успешная операция возвращает код состояния 200 (ОК).Release
: успешная операция возвращает код состояния 200 (ОК).Break
: успешная операция возвращает код состояния 202 (Принято).
Сведения о кодах состояния см. в разделе Коды состояния и ошибок.
Заголовки ответов
Ответ для этой операции включает следующие заголовки. Ответ также может содержать дополнительные стандартные заголовки HTTP. Все стандартные заголовки соответствуют спецификации протокола HTTP/1.1.
Синтаксис | Описание |
---|---|
ETag |
Содержит значение, которое можно использовать для условного выполнения операций. Дополнительные сведения см. в разделе Указание условных заголовков для операций с хранилищем BLOB-объектов . Этот заголовок возвращается для запросов, выполненных в версии 2013-08-15 и более поздних версий, а ETag значение — в кавычках.Операция Lease Blob не изменяет это свойство. |
Last-Modified |
Дата и время последнего изменения BLOB-объекта. Дополнительные сведения см. в разделе Представление значений даты и времени в заголовках. Любая операция записи в большой двоичный объект, включая обновления метаданных или свойств, изменяет время последнего изменения большого двоичного объекта. Операция Lease Blob не изменяет это свойство. |
x-ms-lease-id: <id> |
При запросе аренды Хранилище BLOB-объектов возвращает уникальный идентификатор аренды. Пока аренда активна, следует включать ее идентификатор с любым запросом записи в большой двоичный объект, продления, изменения или освобождения аренды. Успешная операция продления также возвращает идентификатор активной аренды. |
x-ms-lease-time: seconds |
Приблизительное время, оставшееся до истечения срока аренды в секундах. Этот заголовок возвращается только для успешного запроса прекращения аренды. Если разрыв является немедленным, 0 возвращается значение . |
x-ms-request-id |
Этот заголовок однозначно идентифицирует выполненный запрос и может использоваться для устранения неполадок с запросом. Дополнительные сведения см. в разделе Устранение неполадок с операциями API. |
x-ms-version |
Указывает версию Хранилища BLOB-объектов, используемую для выполнения запроса. Этот заголовок возвращается для запросов к версии 2009-09-19 и более поздним версиям. |
Date |
Значение даты и времени в формате UTC, указывающее время, когда был инициирован ответ. Служба создает это значение. |
Access-Control-Allow-Origin |
Возвращается, если запрос содержит Origin заголовок, а CORS включен с правилом сопоставления. В случае совпадения этот заголовок возвращает значение заголовка источника запроса. |
Access-Control-Expose-Headers |
Возвращается, если запрос содержит Origin заголовок, а CORS включен с правилом сопоставления. Возвращает список заголовков ответа, которые должны быть предоставлены клиенту или отправителю запроса. |
Access-Control-Allow-Credentials |
Возвращается, если запрос включает заголовок Origin , а CORS включен с правилом сопоставления, которое не разрешает все источники. Этот заголовок имеет значение true . |
x-ms-client-request-id |
Этот заголовок можно использовать для устранения неполадок с запросами и соответствующими ответами. Значение этого заголовка равно значению заголовка x-ms-client-request-id , если он присутствует в запросе. Значение равно не более 1024 видимых символов ASCII. Если заголовок x-ms-client-request-id отсутствует в запросе, он не будет присутствовать в ответе. |
Текст ответа
Нет.
Пример ответа
Ниже приведен пример ответа на запрос приобретения аренды.
Response Status:
HTTP/1.1 201 Created
Response Headers:
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
x-ms-request-id: cc6b209a-b593-4be1-a38a-dde7c106f402
x-ms-version: 2015-02-21
x-ms-lease-id: 1f812371-a41d-49e6-b123-f4b542e851c5
Date: <date>
Авторизация
При вызове любой операции доступа к данным в службе хранилища Azure требуется авторизация. Вы можете авторизовать Lease Blob
операцию, как описано ниже.
Важно!
Корпорация Майкрософт рекомендует использовать 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 пользователю, группе, управляемому удостоверению или субъекту-службе для вызова Lease Blob
операции, а также встроенная роль Azure RBAC с наименьшими привилегиями, которая включает это действие:
- Действие Azure RBAC:Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write
- Встроенная роль с минимальными привилегиями:Участник данных BLOB-объектов хранилища
Дополнительные сведения о назначении ролей с помощью Azure RBAC см. в статье Назначение роли Azure для доступа к данным BLOB-объектов.
Комментарии
Аренда большого двоичного объекта предоставляет монопольный доступ к большому двоичному объекту для записи в него и удаления. Для записи в большой двоичный объект с активной арендой клиент должен включить идентификатор активной аренды в запрос записи. Аренда предоставляется на период, указанный при получении аренды. Эта продолжительность может быть от 15 до 60 секунд или бесконечной.
Когда клиент приобретает аренду, возвращается идентификатор аренды. Хранилище BLOB-объектов создает идентификатор аренды, если он не указан в запросе на получение. Клиент может использовать этот идентификатор аренды для продления аренды, изменения идентификатора аренды или освобождения аренды.
Когда аренда активна, идентификатор аренды необходимо включать в запрос любой из следующих операций:
Копирование BLOB-объекта (идентификатор аренды, необходимый для целевого BLOB-объекта)
Если идентификатор аренды не включен, эти операции завершаются ошибкой в арендованном BLOB-объекте с 412 – Precondition failed
.
Следующие операции с арендованным BLOB-объектом успешно выполняются без включения идентификатора аренды:
Get Page Ranges (получение диапазона страницы);
Копирование BLOB-объекта (для исходного BLOB-объекта идентификатор аренды не требуется).
Аренда BLOB-объекта (REST API) (идентификатор аренды не требуется для
x-ms-lease-action: break
.)
Необязательно включать идентификатор аренды для GET
операций с большим двоичным объектом, который имеет активную аренду. Однако все GET
операции поддерживают параметр условной аренды, где операция продолжается только в том случае, если идентификатор аренды, включенный в запрос, действителен.
Все операции с контейнерами разрешены для контейнера, включающего большие двоичные объекты с активной арендой, включая удаление контейнера. Таким образом, контейнер можно удалить, даже если большие двоичные объекты в нем имеют активные аренды. Используйте операцию Аренды контейнера для управления правами на удаление контейнера.
Состояния аренды
На следующей диаграмме показаны 5 состояний аренды и команды или события, которые приводят к изменению состояния аренды.
Аренда может находиться в одном из этих штатов в зависимости от того, заблокирована или разблокирована аренда, а также является ли аренда возобновляемой в этом состоянии. Действия аренды, показанные на предыдущей схеме, вызывают переходы состояния.
Состояние продления | Заблокированная аренда | Разблокированная аренда |
---|---|---|
Возобновляемая аренда | Арендовано | Срок действия истек |
Невозобновляемая аренда | Критическое | Прекращенная, доступна |
Available
: аренда разблокирована и может быть приобретена. Допустимое действие:acquire
.Leased
: аренда заблокирована. Допустимые действия:acquire
(только с одинаковым идентификатором аренды),renew
,change
,release
иbreak
.Expired
: срок аренды истек. Допустимые действия:acquire
,renew
,release
иbreak
.Breaking
: аренда была нарушена, но аренда будет по-прежнему заблокирована до истечения периода перерыва. Допустимые действия:release
иbreak
.Broken
: аренда была нарушена, и истек период перерыва. Допустимые действия:acquire
,release
иbreak
.
После истечения срока аренды идентификатор аренды сохраняется в хранилище BLOB-объектов до тех пор, пока blob-объект не будет изменен или арендован снова. Клиент может попытаться продлить или освободить аренду, используя идентификатор аренды с истекшим сроком действия. Если операция выполнена успешно, это означает, что большой двоичный объект не был изменен с момента последнего допустимого идентификатора аренды.
Если клиент пытается продлить или освободить аренду с помощью предыдущего идентификатора аренды, а запрос завершается ошибкой, то большой двоичный объект был снова изменен или арендован с момента последней активности аренды клиента. В этом случае клиент должен приобрести новую аренду большого двоичного объекта.
Если срок аренды истекает, а не освобождается явным образом, клиенту может потребоваться подождать до одной минуты, прежде чем можно будет получить новую аренду для большого двоичного объекта. Однако клиент может немедленно продлить аренду с помощью идентификатора аренды, если большой двоичный объект не был изменен.
Обратите внимание, что аренда не может быть предоставлена для snapshot BLOB-объекта, так как моментальные снимки доступны только для чтения. Запрос аренды для моментального снимка завершается кодом состояния 400 (неверный запрос).
Свойство большого Last-Modified-Time
двоичного объекта не обновляется вызовами Lease Blob
.
В следующих таблицах показаны результаты действий с большими двоичными объектами с арендой в разных состояниях. Буквы (A), (B) и (C) представляют идентификаторы аренды, а (X) — идентификатор аренды, созданный хранилищем BLOB-объектов.
Результаты действий с большими двоичными объектами по состоянию аренды
Действие | Доступно | Арендовано (А) | Прекращение (А) | Прекращено (А) | Истек срок (А) |
---|---|---|---|---|---|
Запись с помощью (A) | Ошибка (412) | Арендовано (А), успешная запись | Прекращение (А), успешная запись | Ошибка (412) | Ошибка (412) |
Запись с помощью (B) | Ошибка (412) | Сбой (409) | Ошибка (412) | Ошибка (412) | Ошибка (412) |
Запись, аренда не указана | Доступно, успешная запись | Ошибка (412) | Ошибка (412) | Доступно, успешная запись | Доступно, успешная запись |
Чтение с помощью (A) | Ошибка (412) | Арендовано (А), успешное чтение | Прекращение (А), успешное чтение | Ошибка (412) | Ошибка (412) |
Чтение с помощью (B) | Ошибка (412) | Сбой (409) | Сбой (409) | Ошибка (412) | Ошибка (412) |
Чтение, аренда не указана | Доступно, успешное чтение | Арендовано (А), успешное чтение | Прекращение (А), успешное чтение | Прекращение (А), успешное чтение | Истек срок (А), успешное чтение |
Результаты операций с большими двоичными объектами по состоянию аренды
Действие | Доступно | Арендовано (А) | Прекращение (А) | Прекращено (А) | Истек срок (А) |
---|---|---|---|---|---|
Acquire — предлагаемый идентификатор аренды отсутствует |
Арендовано (X) | Сбой (409) | Сбой (409) | Арендовано (X) | Арендовано (X) |
Acquire (A) |
Арендовано (А) | Арендовано (А), новый срок | Сбой (409) | Арендовано (А) | Арендовано (А) |
Acquire (B) |
Арендовано (B) | Сбой (409) | Сбой (409) | Арендовано (B) | Арендовано (B) |
Break , срок=0 |
Сбой (409) | Прекращено (А) | Прекращено (А) | Прекращено (А) | Прекращено (А) |
Break , период>0 |
Сбой (409) | Прекращение (А) | Прекращение (А) | Прекращено (А) | Прекращено (А) |
Change , (A) в (B) |
Сбой (409) | Арендовано (B) | Сбой (409) | Сбой (409) | Сбой (409) |
Change , (B) в (A) |
Сбой (409) | Арендовано (А) | Сбой (409) | Сбой (409) | Сбой (409) |
Change , (B) в (C) |
Сбой (409) | Сбой (409) | Сбой (409) | Сбой (409) | Сбой (409) |
Renew (A) |
Сбой (409) | Арендовано (А), сброс срока | Сбой (409) | Сбой (409) | Leased(A), если большой двоичный объект не был изменен. Ошибка (409), если большой двоичный объект был изменен. |
Renew (B) |
Сбой (409) | Сбой (409) | Сбой (409) | Сбой (409) | Сбой (409) |
Release (A) |
Сбой (409) | Доступно | Доступно | Доступно | Доступно |
Release (B) |
Сбой (409) | Сбой (409) | Сбой (409) | Сбой (409) | Сбой (409) |
Срок истекает | Доступно | Истек срок (А) | Прекращено (А) | Прекращено (А) | Истек срок (А) |
Изменения в аренде BLOB-объекта, появившиеся в версии 2012-02-12
В следующем списке указаны изменения в Lease Blob
поведении, появившиеся в версии 2012-02-12.
Вызов для
Lease Blob
получения аренды теперь должен содержать заголовок длительности аренды. При попытке получить аренду без указания срока аренды служба возвращает400 Bad Request – Missing required header
.После освобождения аренды ее уже нельзя продлить. Если попытаться сделать это, служба возвращает
409 Conflict – The lease ID specified did not match the lease ID for the blob
. Приложения, которые вызывали выпуск, а затем вызывали продлениеETag
, теперь должны сохранять из вызова выпуска. Затем приложения должны вызывать метод acquire с условным заголовкомIf-Match
, чтобы получить аренду только в том случае, если большой двоичный объект не изменился.После освобождения аренды ее уже нельзя прекратить. Если попытаться сделать это, служба возвращает
409 Conflict – There is currently no lease on the blob
.Теперь можно прекратить прекращение или прекращенную аренду и сделать операции прекращения идемпотентными. В предыдущих версиях такое действие завершалось ошибкой
409 Conflict – The lease has already been broken and cannot be broken again
. Это новшество позволяет уменьшить время прекращения. Если вы прерываете аренду, которая находится в состоянии прерывания, и включаете более короткий срок, чем оставшийся период перерыва, используется более короткая длительность.
Выставление счетов
Запросы на ценообразование могут поступать от клиентов, использующих API хранилища BLOB-объектов, напрямую через REST API хранилища BLOB-объектов или из клиентской библиотеки службы хранилища Azure. Эти запросы начисляют плату за транзакцию. Тип транзакции влияет на способ оплаты учетной записи. Например, транзакции чтения начисляются к категории выставления счетов, отличной от категории операций записи. В следующей таблице показана категория выставления счетов для Lease Blob
запросов на основе типа учетной записи хранения.
Операция | Тип учетной записи хранения | Категория выставления счетов |
---|---|---|
Аренда BLOB-объекта (приобретение, выпуск, продление) | Блочный BLOB-объект (ценовая категории "Премиум") Общего назначения версии 2 (цен. категория "Стандартный") |
Другие операции |
Аренда BLOB-объекта (приобретение, выпуск, продление) | Стандартная общего назначения версии 1 | Операции чтения |
Аренда BLOB-объекта (перерыв, изменение) | Блочный BLOB-объект (ценовая категории "Премиум") Общего назначения версии 2 (цен. категория "Стандартный") |
Другие операции |
Аренда BLOB-объекта (перерыв, изменение) | Стандартная общего назначения версии 1 | Операции записи |
См. также раздел
new-blob-lease-features-infinite-leases-smaller-lease-times-and-more.aspx)
Авторизация запросов к службе хранилища Azure
Коды состояний и ошибок
Коды ошибок хранилища BLOB-объектов
Аренда контейнера