Поделиться через


Lease Container (Аренда контейнера)

Операция Lease Container устанавливает блокировку контейнера для операций удаления и управляет этой блокировкой. Длительность блокировки может составлять 15–60 секунд либо быть бесконечной.

Операцию можно вызвать Lease Container в одном из следующих режимов:

  • Acquire — запрос новой аренды;

  • Renew — продление существующей аренды;

  • Change — изменение идентификатора существующей аренды;

  • Release, чтобы освободить аренду, если она больше не нужна, чтобы другой клиент сразу же получил аренду контейнера.

  • Break, чтобы завершить аренду, но убедиться, что другой клиент не может приобрести новую аренду, пока не истечет текущий период аренды.

Примечание

Операция Lease Container доступна в версии 2012-12-12 и последующей.

Запрос

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

Метод Универсальный код ресурса (URI) запроса параметр "Версия HTTP"
PUT https://myaccount.blob.core.windows.net/mycontainer?comp=lease&restype=container HTTP/1.1

Чтобы указать корневой контейнер, введите $root в качестве имени контейнера.

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

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

Метод Универсальный код ресурса (URI) запроса параметр "Версия HTTP"
PUT http://127.0.0.1:10000/mycontainer?comp=lease&restype=container 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: продлевает аренду. Вы можете продлить аренду, если идентификатор аренды, указанный в запросе, совпадает с идентификатором, связанным с контейнером. Обратите внимание, что аренда может быть продлена, даже если срок ее действия истек, до тех пор, пока контейнер не был арендован повторно после истечения срока аренды. При продлении аренды срок действия начинается заново.

change: изменяет идентификатор активной аренды. Объект change должен включать текущий идентификатор аренды в x-ms-lease-idи новый идентификатор аренды в x-ms-proposed-lease-id.

release: освобождает аренду. Вы можете освободить аренду, если идентификатор аренды, указанный в запросе, совпадает с идентификатором, связанным с контейнером. Освобождение аренды позволяет другому клиенту немедленно получить аренду для контейнера, как только выпуск будет завершен.

break: прерывает аренду, если у контейнера есть активная аренда. После разрыва аренды ее нельзя продлить. Любой авторизованный запрос может прервать аренду. Запрос не требуется для указания соответствующего идентификатора аренды. При прерывании аренды допускается истечение периода арендного перерыва. В течение этого времени вы можете выполнять break операции и release аренды только для контейнера. После успешного прекращения аренды ответ указывает интервал в секундах, прежде чем можно будет приобрести новую аренду.

Прекращенная аренда также может быть освобождена. Клиент может сразу получить аренду контейнера, которая была освобождена.
x-ms-lease-break-period: N Необязательный элемент. break Для операции этот заголовок представляет собой предлагаемую продолжительность аренды до ее разрыва (от 0 до 60 секунд). Этот период перерыва используется только в том случае, если он меньше времени, оставшегося в аренде. В противном случае используется оставшееся время аренды. Новая аренда будет недоступна до истечения периода перерыва, но аренда может храниться дольше, чем период перерыва. Если этот заголовок не отображается с операцией break , по истечении оставшегося периода аренды будет прервана аренда с фиксированной длительностью, а бесконечная аренда немедленно прерывается.
x-ms-lease-duration: -1 ¦ n seconds Обязательно для acquire. Указывает срок аренды в секундах или отрицательное число (-1) для бесконечной аренды. Конечная аренда может находиться в пределах от 15 до 60 секунд. Длительность аренды нельзя изменить с помощью renew или change.
x-ms-proposed-lease-id: <ID> Необязательный для 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?restype=container&comp=lease HTTP/1.1  
  
Request Headers:  
x-ms-version: 2012-02-12  
x-ms-lease-action: acquire  
x-ms-lease-duration: -1  
x-ms-proposed-lease-id: 1f812371-a41d-49e6-b123-f4b542e851c5  
x-ms-date: Thu, 26 Jan 2012 23:30:18 GMT  
Authorization: SharedKey testaccount1:esSKMOYdK4o+nGTuTyeOLBI+xqnqi6aBmiW4XI699+o=  
  

Ответ

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

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

Коды состояния успешного выполнения для операций аренды.

  • Acquire: успешная операция возвращает код состояния 201 (создано).

  • Renew: успешная операция возвращает код состояния 200 (ОК).

  • Change: успешная операция возвращает код состояния 200 (ОК).

  • Release: успешная операция возвращает код состояния 200 (ОК).

  • Break: успешная операция возвращает код состояния 202 (Принято).

Сведения о кодах состояния см. в разделе Коды состояния и ошибок.

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

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

Синтаксис Описание
ETag Для ETag контейнера. Этот заголовок возвращается для запросов, выполненных к версии 2013-08-15 и более поздних версий, и ETag значение в кавычках. Lease Container Операции, выполняемые в версии 2013-08-15 и более поздних версий, не изменяют это свойство, но это делают предыдущие версии.
Last-Modified Возвращается для запросов, выполненных в версии 2013-08-15 и более поздних версий. Возвращает дату и время последнего изменения контейнера. Дополнительные сведения см. в разделе Представление значений даты и времени в заголовках.

Любая операция, изменяющая контейнер, его свойства или метаданные, обновляет время последнего изменения. Сюда входит настройка разрешений контейнера. Операции с большими двоичными объектами не влияют на время последнего изменения контейнера. Lease Container Операции, выполняемые в версии 2013-08-15 и более поздних версий, не изменяют это свойство, но это делают предыдущие версии.
x-ms-lease-id: <id> При запросе аренды Хранилище BLOB-объектов возвращает уникальный идентификатор аренды. Пока аренда активна, следует включать ее идентификатор с любым запросом на удаление контейнера либо продление, изменение или освобождение аренды.

Успешная операция продления также возвращает идентификатор активной аренды.
x-ms-lease-time: seconds Приблизительное время, оставшееся до истечения срока аренды в секундах. Этот заголовок возвращается только для успешного запроса прекращения аренды. Если прекращение немедленное, возвращается 0.
x-ms-request-id Этот заголовок однозначно идентифицирует выполненный запрос и может использоваться для устранения неполадок с запросом. Дополнительные сведения см. в разделе Устранение неполадок операций API.
x-ms-version Указывает версию хранилища BLOB-объектов, используемой для выполнения запроса. Этот заголовок возвращается для запросов к версии 2009-09-19 и более поздним версиям.
Дата Значение даты и времени в формате 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: 2012-02-12  
x-ms-lease-id: 1f812371-a41d-49e6-b123-f4b542e851c5  
Date: Thu, 26 Jan 2012 23:30:18 GMT  
  

Авторизация

Авторизация требуется при вызове любой операции доступа к данным в службе хранилища Azure. Операцию можно авторизовать Lease Container , как описано в следующих разделах.

Важно!

Корпорация Майкрософт рекомендует использовать 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 Container операции, а также встроенной роли Azure RBAC с минимальными привилегиями, которая включает это действие.

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

Комментарии

Аренда контейнера обеспечивает монопольный доступ к контейнеру при удалении. Аренда контейнера управляет только возможностью удаления контейнера с помощью операции удаления контейнера . Для удаления контейнера с активной арендой клиент наряду с запросом на удаление должен ввести активный идентификатор аренды. Если идентификатор аренды не включен, операция завершается ошибкой 412 (сбой предварительного условия). Все остальные операции с контейнерами успешно выполняются в арендованном контейнере без включения идентификатора аренды. Аренда предоставляется на период, указанный при получении аренды, который может составлять от 15 до 60 секунд или бесконечное время.

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

Схема состояний аренды контейнера и триггеров изменения состояния.

Аренда может находиться в одном из пяти штатов в зависимости от того, заблокирована или разблокирована аренда, а также является ли аренда возобновляемой в этом состоянии. Действия аренды, показанные на предыдущей схеме, вызывают переходы состояния.

Состояние продления Заблокированная аренда Разблокированная аренда
Возобновляемая аренда Арендовано Срок действия истек
Невозобновляемая аренда Критическое Прекращенная, доступна
  • Available — аренда разблокирована и может быть приобретена. Допустимое действие: acquire.

  • Leased — аренда заблокирована. Допустимые действия: acquire (только с одинаковым идентификатором аренды), renew, change, releaseи break.

  • Expired — срок аренды истек. Допустимые действия: acquire, renew, releaseи break.

  • Breaking, аренда была нарушена, но аренда будет по-прежнему заблокирована до истечения периода перерыва. Допустимые действия: release и break.

  • Broken, аренда была нарушена, а период перерыва истек. Допустимые действия: acquire, releaseи break.

Хранилище BLOB-объектов сохраняет идентификатор аренды после истечения срока аренды контейнера. Клиент может продлить или освободить аренду, используя идентификатор аренды с истекшим сроком действия. Если клиент пытается продлить или освободить аренду с истекшим сроком действия с предыдущим идентификатором аренды и запрос завершается ошибкой, контейнер был снова арендован или удален, так как аренда клиента была последней активной.

Если срок аренды истекает, а не освобождается явным образом, клиенту может потребоваться подождать до одной минуты, прежде чем можно будет получить новую аренду для контейнера. Однако клиент может сразу обновить аренду с идентификатором аренды с истекшим сроком действия.

Свойство контейнера Last-Modified-Time не обновляется вызовами Lease Container.

В следующих таблицах показаны результаты действий с контейнерами с арендой в разных состояниях. Буквы (A), (B) и (C) представляют идентификаторы аренды, а (X) — идентификатор аренды, созданный хранилищем BLOB-объектов.

Результаты действий с контейнерами по состоянию аренды

Действие Доступно Арендовано (А) Прекращение (А) Прекращено (А) Истек срок (А)
Удаление с помощью (A) Ошибка (412) Арендовано (А), успешное удаление Прекращено (A), успешное удаление Ошибка (412) Ошибка (412)
Удалить с помощью (B) Ошибка (412) Сбой (409) Ошибка (412) Ошибка (412) Ошибка (412)
Удаление, аренда не указана Доступно, успешное удаление Ошибка (412) Ошибка (412) Доступно, успешное удаление Доступно, успешное удаление
Другие операции с (A) Ошибка (412) Арендовано (А), операция выполнена успешно Прекращено (A), операция выполнена успешно Ошибка (412) Ошибка (412)
Другие операции с (B) Ошибка (412) Сбой (409) Сбой (409) Ошибка (412) Ошибка (412)
Операции, аренда не указана Доступно, операция выполнена успешно Арендовано (А), операция выполнена успешно Прекращено (A), операция выполнена успешно Прекращено (A), операция выполнена успешно Срок действия истек (A), операция выполнена успешно

Результаты операций с контейнерами по состоянию аренды

Действие Доступно Арендовано (А) Прекращение (А) Прекращено (А) Истек срок (А)
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) Арендовано (А)
Renew (B) Сбой (409) Сбой (409) Сбой (409) Сбой (409) Сбой (409)
Release (A) Сбой (409) Доступно Доступно Доступно Доступно
Release (B) Сбой (409) Сбой (409) Сбой (409) Сбой (409) Сбой (409)
Срок истекает Доступно Истек срок (А) Прекращено (А) Прекращено (А) Истек срок (А)

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

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

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

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

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

Авторизация запросов к службе хранилища Azure
Коды состояний и ошибок
Коды ошибок хранилища BLOB-объектов
Аренда BLOB-объекта