Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
В этой статье показано, как создавать аренды контейнеров и управлять ими с помощью клиентской библиотеки службы хранилища Azure для Java. Вы можете использовать клиентскую библиотеку для получения, продления, освобождения и прерывания аренды контейнеров.
Prerequisites
- Подписка Azure — создайте бесплатную учетную запись.
- Учетная запись хранения Azure — создайте такую учетную запись.
- Пакет средств разработки Java (JDK) версии 8 или более поздней версии (рекомендуется использовать версию 17 для оптимального взаимодействия)
- Apache Maven используется для управления проектами в этом примере
Настройка среды
Если у вас нет существующего проекта, в этом разделе показано, как настроить проект для работы с клиентской библиотекой Хранилище BLOB-объектов Azure для Java. Дополнительные сведения см. в разделе "Начало работы с хранилищем объектов BLOB в Azure и Java".
Чтобы работать с примерами кода в этой статье, выполните следующие действия, чтобы настроить проект.
Note
В этой статье используется средство сборки Maven для создания и запуска примера кода. Для работы с пакетами SDK Azure для Java есть и другие средства сборки, например Gradle.
Установка пакетов
Откройте файл pom.xml в текстовом редакторе. Установите пакеты, включив файл BOM или включив прямую зависимость.
Добавьте инструкции импорта
Добавьте следующие import инструкции:
import com.azure.storage.blob.*;
import com.azure.storage.blob.specialized.*;
Authorization
Механизм авторизации должен иметь необходимые разрешения для работы с арендой контейнера. Для авторизации с помощью Microsoft Entra ID (рекомендуется) требуется встроенная роль Сотрудник по данным объектов хранилища BLOB или выше. Дополнительные сведения см. в руководстве по авторизации контейнеров аренды (REST API).
Создание клиентского объекта
Чтобы подключить приложение к хранилищу BLOB-объектов, создайте экземпляр BLOBServiceClient.
В следующем примере используется BLOBServiceClientBuilder для создания BlobServiceClient объекта с помощью DefaultAzureCredentialи показано, как создать клиенты контейнеров и BLOB-объектов при необходимости:
// Azure SDK client builders accept the credential as a parameter
// TODO: Replace <storage-account-name> with your actual storage account name
BlobServiceClient blobServiceClient = new BlobServiceClientBuilder()
.endpoint("https://<storage-account-name>.blob.core.windows.net/")
.credential(new DefaultAzureCredentialBuilder().build())
.buildClient();
// If needed, you can create a BlobContainerClient object from the BlobServiceClient
BlobContainerClient containerClient = blobServiceClient
.getBlobContainerClient("<container-name>");
// If needed, you can create a BlobClient object from the BlobContainerClient
BlobClient blobClient = containerClient
.getBlobClient("<blob-name>");
Дополнительные сведения о создании клиентских объектов и управлении ими см. в статье "Создание клиентских объектов и управление ими", взаимодействующих с ресурсами данных.
Сведения об аренде контейнеров
Аренда устанавливает блокировку контейнера для операций удаления и управляет ими. Длительность блокировки может составлять 15–60 секунд либо быть бесконечной. Аренда контейнера предоставляет эксклюзивный доступ к удалению контейнера. Аренда контейнера управляет только возможностью удаления контейнера с помощью операции REST API удаления контейнера . Для удаления контейнера с активной арендой клиент наряду с запросом на удаление должен ввести активный идентификатор аренды. Все остальные операции с контейнером выполняются успешно на арендованном контейнере без идентификатора аренды. Если вы включили обратимое удаление контейнера, можно восстановить удаленные контейнеры.
Дополнительные сведения о состояниях аренды и о том, когда можно выполнить данное действие по аренде, см. в разделе "Состояния аренды" и действия.
Операции удержания обрабатываются классом BlobLeaseClient, который предоставляет все операции удержания для клиента блобов и контейнеров. Дополнительные сведения об аренде BLOB-объектов с помощью клиентской библиотеки см. в статье "Создание аренды BLOB-объектов и управление ими с помощью Java".
Получение аренды
При получении аренды контейнера вы получите идентификатор аренды, который ваша программа может использовать для работы с контейнером. Если контейнер уже имеет активную аренду, можно запросить только новую аренду с помощью активного идентификатора аренды. Однако можно указать новую длительность аренды.
Чтобы получить аренду, создайте экземпляр класса BlobLeaseClient , а затем используйте следующий метод:
Следующий пример показывает, как получить временное 30-секундное предоставление контейнера:
public BlobLeaseClient acquireContainerLease(BlobContainerClient container) {
// Create the lease client
BlobLeaseClient leaseClient = new BlobLeaseClientBuilder()
.containerClient(container)
.buildClient();
// Acquire the lease - specify duration between 15 and 60 seconds, or -1 for
// infinite duration
String leaseID = leaseClient.acquireLease(30);
System.out.printf("Acquired lease ID: %s%n", leaseID);
return leaseClient;
}
Продление аренды
Вы можете продлить аренду контейнера, если идентификатор аренды, указанный в запросе, соответствует идентификатору аренды, связанному с контейнером. Аренда может быть продлена даже в том случае, если срок его действия истек, если контейнер еще не был арендован с момента истечения срока действия этой аренды. При продлении аренды срок аренды обновляется.
Чтобы продлить существующую аренду, используйте следующий метод:
В следующем примере возобновляется аренда контейнера:
public void renewContainerLease(BlobLeaseClient leaseClient) {
leaseClient.renewLease();
}
Прекращение аренды
Вы можете освободить аренду контейнера, если идентификатор аренды, указанный в запросе, соответствует идентификатору аренды, связанному с контейнером. Освобождение аренды позволяет другому клиенту получить аренду контейнера сразу после завершения выпуска.
Вы можете освободить аренду с помощью следующего метода:
В следующем примере освобождается аренда контейнера:
public void releaseContainerLease(BlobLeaseClient leaseClient) {
leaseClient.releaseLease();
System.out.println("Release lease operation completed");
}
Прерывание аренды
Вы можете разорвать аренду контейнера, если контейнер имеет активную аренду. Любой авторизованный запрос может прервать аренду; запрос не обязан указывать соответствующий идентификатор аренды. Аренда не может быть продлена после того, как она нарушена, и разрыв аренды предотвращает получение новой аренды в течение определенного периода времени, пока исходная аренда не истекает или не будет освобождена.
Вы можете разорвать аренду с помощью следующего метода:
В следующем примере прерывается аренда контейнера:
public void breakContainerLease(BlobLeaseClient leaseClient) {
leaseClient.breakLease();
}
Состояния аренды и действия
На следующей схеме показаны пять состояний аренды, а также команды или события, вызывающие изменение состояния аренды.
В следующей таблице перечислены пять состояний аренды, краткое описание каждого из них и список действий аренды, разрешенных в заданном состоянии. Эти действия аренды вызывают переходы состояния, как показано на схеме.
| Состояние аренды | Description | Разрешенные действия аренды |
|---|---|---|
| Available | Аренда разблокирована и может быть приобретена. | acquire |
| Leased | Аренда заблокирована. |
acquire (один и тот же идентификатор аренды), renew, change, releaseи break |
| Expired | Срок аренды истек. |
acquire, renew, release и break |
| Breaking | Аренда была нарушена, но аренда будет по-прежнему заблокирована до истечения периода перерыва. |
release и break. |
| Broken | Аренда была нарушена, и срок перерыва истек. |
acquire, release и break |
По истечении срока аренды идентификатор аренды сохраняется службой объектов BLOB до тех пор, пока контейнер не будет изменен или арендован снова. Клиент может попытаться продлить или освободить аренду с помощью идентификатора аренды с истекшим сроком действия. Если запрос завершается ошибкой, клиент знает, что контейнер был арендован снова или контейнер был удален с момента последнего активного аренды.
Если срок действия аренды истекает, а не освобождается явным образом, клиенту может потребоваться ждать до одной минуты, прежде чем будет получена новая аренда для контейнера. Однако клиент может немедленно продлить аренду, используя идентификатор аренды с истекшим сроком действия.
Resources
Дополнительные сведения о аренде контейнера с помощью клиентской библиотеки хранилища BLOB-объектов Azure для Java см. в следующих ресурсах.
Примеры кода
Операции REST API
Пакет SDK Azure для Java содержит библиотеки, которые создаются на основе REST API Azure, что позволяет взаимодействовать с операциями REST API через знакомые парадигмы Java. Методы клиентской библиотеки для аренды контейнера используют следующую операцию REST API:
- Контейнер аренды (REST API)
Ресурсы клиентской библиотеки
См. также
Связанный контент
- Эта статья является частью руководства разработчика хранилища BLOB-объектов для Java. Дополнительные сведения см. в полном списке статей руководства разработчика по созданию приложения Java.