Создание аренды контейнеров и управление ими с помощью JavaScript или TypeScript
В этой статье показано, как создавать аренды контейнеров и управлять ими с помощью клиентской библиотеки служба хранилища Azure для JavaScript. Клиентская библиотека может использовать для получения, продления, выпуска и прерывания аренды контейнеров.
Необходимые компоненты
- В примерах этой статьи предполагается, что у вас уже есть проект, настроенный для работы с клиентской библиотекой Хранилище BLOB-объектов Azure для JavaScript. Сведения о настройке проекта, включая установку пакетов, импорт модулей и создание авторизованного клиентского объекта для работы с ресурсами данных, см. в статье "Начало работы с Хранилище BLOB-объектов Azure и JavaScript".
- Механизм авторизации должен иметь разрешения на работу с арендой контейнера. Дополнительные сведения см. в руководстве по авторизации для следующей операции REST API:
Сведения об аренде контейнеров
Аренда устанавливает блокировку контейнера для операций удаления и управляет ими. Длительность блокировки может составлять 15–60 секунд либо быть бесконечной. Аренда контейнера предоставляет эксклюзивный доступ к удалению контейнера. Аренда контейнера управляет только возможностью удаления контейнера с помощью операции REST API удаления контейнера . Для удаления контейнера с активной арендой клиент наряду с запросом на удаление должен ввести активный идентификатор аренды. Все остальные операции контейнера успешно выполняются в арендованном контейнере без идентификатора аренды. Если вы включили обратимое удаление контейнера, можно восстановить удаленные контейнеры.
Дополнительные сведения о состояниях аренды и о том, когда можно выполнить данное действие по аренде, см. в разделе "Состояния аренды" и действия.
Операции аренды обрабатываются классом BlobLeaseClient , который предоставляет клиенту все операции аренды для больших двоичных объектов и контейнеров. Дополнительные сведения об аренде BLOB-объектов с помощью клиентской библиотеки см. в статье "Создание аренды BLOB-объектов и управление ими с помощью JavaScript".
Получение аренды
При получении аренды контейнера вы получите идентификатор аренды, который код может использовать для работы с контейнером. Если контейнер уже имеет активную аренду, можно запросить только новую аренду с помощью активного идентификатора аренды. Однако можно указать новую длительность аренды.
Чтобы получить аренду, создайте экземпляр класса BlobLeaseClient , а затем используйте один из следующих методов:
Следующий пример получает 30-секундную аренду контейнера:
async function acquireContainerLeaseAsync(blobContainerClient) {
const leaseClient = blobContainerClient.getBlobLeaseClient();
await leaseClient.acquireLease(30);
return leaseClient;
}
Продление аренды
Вы можете продлить аренду контейнера, если идентификатор аренды, указанный в запросе, соответствует идентификатору аренды, связанному с контейнером. Арендная плата может быть продлена, даже если срок его действия истекает, если контейнер еще не был арендован с момента истечения срока действия этой аренды. При продлении аренды длительность сброса аренды.
Чтобы продлить аренду, используйте один из следующих методов в экземпляре BlobLeaseClient :
В следующем примере возобновляется аренда контейнера:
async function renewContainerLeaseAsync(blobContainerClient, leaseID) {
const leaseClient = blobContainerClient.getBlobLeaseClient(leaseID);
await leaseClient.renewLease();
}
Освобождение аренды
Вы можете освободить аренду контейнера, если идентификатор аренды, указанный в запросе, соответствует идентификатору аренды, связанному с контейнером. Освобождение аренды позволяет другому клиенту получить аренду контейнера сразу после завершения выпуска.
Вы можете освободить аренду с помощью одного из следующих методов в экземпляре BlobLeaseClient :
В следующем примере освобождается аренда контейнера:
async function releaseContainerLeaseAsync(blobContainerClient, leaseID) {
const leaseClient = blobContainerClient.getBlobLeaseClient(leaseID);
await leaseClient.releaseLease();
}
Прерывание аренды
Вы можете разорвать аренду контейнера, если контейнер имеет активную аренду. Любой авторизованный запрос может нарушить аренду; Запрос не требуется для указания соответствующего идентификатора аренды. Аренда не может быть продлена после того, как она нарушена, и разрыв аренды предотвращает получение новой аренды до истечения первоначального срока аренды или освобождения.
Вы можете разорвать аренду с помощью одного из следующих методов в экземпляре BlobLeaseClient :
В следующем примере прерывается аренда контейнера:
async function breakContainerLeaseAsync(blobContainerClient) {
const leaseClient = blobContainerClient.getBlobLeaseClient();
await leaseClient.breakLease();
}
Состояния аренды и действия
На следующей схеме показаны пять состояний аренды, а также команды или события, вызывающие изменение состояния аренды.
В следующей таблице перечислены пять состояний аренды, краткое описание каждого из них и список действий аренды, разрешенных в заданном состоянии. Эти действия аренды вызывают переходы состояния, как показано на схеме.
Состояние аренды | Description | Разрешенные действия аренды |
---|---|---|
Доступно | Аренда разблокирована и может быть приобретена. | acquire |
Арендованный | Аренда заблокирована. | acquire (один и тот же идентификатор аренды), renew , change , release и break |
Срок действия истек | Срок аренды истек. | acquire , renew , release и break |
Ломка | Аренда была нарушена, но аренда будет по-прежнему заблокирована до истечения периода перерыва. | release и break . |
Неисправно | Аренда была нарушена, и срок перерыва истек. | acquire , release и break |
По истечении срока аренды идентификатор аренды сохраняется службой BLOB-объектов до тех пор, пока контейнер не будет изменен или арендован снова. Клиент может попытаться продлить или освободить аренду с помощью идентификатора аренды с истекшим сроком действия. Если запрос завершается ошибкой, клиент знает, что контейнер был арендован снова или контейнер был удален с момента последнего активного аренды.
Если срок действия аренды истекает, а не освобождается явным образом, клиенту может потребоваться ждать до одной минуты, прежде чем будет получена новая аренда для контейнера. Однако клиент может немедленно продлить аренду с идентификатором аренды с истекшим сроком действия.
Ресурсы
Дополнительные сведения об управлении арендой контейнеров с помощью клиентской библиотеки Хранилище BLOB-объектов Azure для JavaScript см. в следующих ресурсах.
Примеры кода
- Просмотр примеров кода JavaScript и TypeScript из этой статьи (GitHub)
Операции REST API
Пакет SDK Azure для JavaScript содержит библиотеки, которые создаются на основе REST API Azure, что позволяет взаимодействовать с операциями REST API через знакомые парадигмы JavaScript. Методы клиентской библиотеки для управления арендами контейнеров используют следующую операцию REST API:
Ресурсы клиентской библиотеки
См. также
Связанный контент
- Эта статья является частью руководства разработчика хранилища BLOB-объектов для JavaScript/TypeScript. Дополнительные сведения см. в полном списке статей руководства разработчика по созданию приложения JavaScript и TypeScript.