Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
В этой статье показано, как подключиться к Хранилище BLOB-объектов Azure с помощью клиентской библиотеки Хранилище BLOB-объектов Azure для Java. После подключения используйте руководства разработчика, чтобы узнать, как ваш код может работать с контейнерами, блобами и функциями службы Azure Blob Storage.
Если вы хотите начать с полного примера, см. Краткое руководство: клиентская библиотека для Java для Azure Blob Storage.
Справочник API | Package (Maven) | Исходный код библиотеки | Примеры | Оставить отзыв
Предварительные условия
- Подписка Azure — создайте бесплатную учетную запись.
- Учетная запись хранения Azure — создайте такую учетную запись.
- Комплект SDK для Java (JDK) версии 8 или более поздней версии.
- Apache Maven используется для управления проектами в этом примере
Настройка проекта
Примечание.
В рамках этой статьи для сборки и запуска примера кода используется средство сборки Maven. Для работы с пакетами SDK Azure для Java есть и другие средства сборки, например Gradle.
Используйте Maven для создания нового консольного приложения или открытия существующего проекта. Выполните следующие действия, чтобы установить пакеты и добавить необходимые import директивы.
Установка пакетов
Откройте файл pom.xml в текстовом редакторе. Установите пакеты, включив файл BOM или включив прямую зависимость.
Включите BOM-файл
Добавьте azure-sdk-bom , чтобы получить зависимость от последней версии библиотеки. В следующем фрагменте замените заполнителя {bom_version_to_target} на номер версии. Использование azure-sdk-bom избавляет вас от необходимости указывать версию каждой зависимости. Чтобы узнать больше о BOM, см. файл README для BOM Azure SDK.
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-sdk-bom</artifactId>
<version>{bom_version_to_target}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
Добавьте приведенные ниже элементы зависимости в группу зависимостей. Зависимость azure-identity необходима для безпарольных подключений к службам Azure.
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-storage-blob</artifactId>
</dependency>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-storage-common</artifactId>
</dependency>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity</artifactId>
</dependency>
Включение прямой зависимости
Чтобы получить зависимость от конкретной версии библиотеки, добавьте прямую зависимость в проект:
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-storage-blob</artifactId>
<version>{package_version_to_target}</version>
</dependency>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-storage-common</artifactId>
<version>{package_version_to_target}</version>
</dependency>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity</artifactId>
<version>{package_version_to_target}</version>
</dependency>
Включите директивы импорта
Затем откройте файл кода и добавьте необходимые import директивы. В этом примере мы добавим в файл App.java следующие директивы:
import com.azure.core.credential.*;
import com.azure.identity.*;
import com.azure.storage.blob.*;
import com.azure.storage.blob.models.*;
import com.azure.storage.blob.specialized.*;
import com.azure.storage.common.*;
Сведения о библиотеке клиента для работы с BLOB-объектами.
- com.azure.storage.blob: содержит основные классы (клиентские объекты), которые можно использовать для работы со службой, контейнерами и блобами.
- com.azure.storage.blob.models: содержит служебные классы, структуры и типы перечисления.
- com.azure.storage.blob.specialized: содержит классы, которые можно использовать для выполнения операций, относящихся к типу BLOB-объектов (например, добавление больших двоичных объектов).
Авторизация доступа и подключение к BLOB-хранилищу
Чтобы подключить приложение к хранилищу BLOB-объектов, создайте экземпляр класса BlobServiceClient . Вы также можете использовать класс BlobServiceAsyncClient для асинхронного программирования. Этот объект является отправной точкой для взаимодействия с ресурсами данных на уровне учетной записи хранения. Вы можете использовать это для управления учетной записью хранения и ее контейнерами. Вы также можете использовать клиент сервиса для создания клиентов контейнеров или клиентов двоичных больших объектов в зависимости от типа ресурса, с которым требуется работать.
Дополнительные сведения о создании клиентских объектов и управлении ими см. в статье "Создание клиентских объектов и управление ими", взаимодействующих с ресурсами данных.
Вы можете авторизовать BlobServiceClient объект с помощью токена авторизации Microsoft Entra, ключа доступа к учетной записи или общей подписанной сигнатуры (SAS). Для оптимальной безопасности Microsoft рекомендует использовать Microsoft Entra ID с управляемыми удостоверениями для авторизации запросов к данным блоб-объектов. Дополнительные сведения см. в разделе Авторизация доступа к BLOB-объектам с помощью Microsoft Entra ID.
Для авторизации с помощью идентификатора Microsoft Entra необходимо использовать субъект безопасности. Какой тип объекта безопасности вам необходим, зависит от того, где запускается ваше приложение. Руководствуйтесь следующей таблицей.
| Где выполняется приложение | Принцип безопасности | Руководство |
|---|---|---|
| Локальный компьютер (разработка и тестирование) | Принципал службы | Сведения о регистрации приложения, настройке группы Microsoft Entra, назначении ролей и настройке переменных среды см. в статье "Авторизация доступа с помощью субъектов-служб разработчиков". |
| Локальный компьютер (разработка и тестирование) | Удостоверение пользователя | Сведения о настройке группы Microsoft Entra, назначении ролей и входе в Azure см. в статье "Авторизация доступа с помощью учетных данных разработчика". |
| Размещено в Azure | Управляемая идентификация | Сведения о включении управляемого удостоверения и назначении ролей см. в статье "Авторизация доступа из размещенных в Azure приложений с помощью управляемого удостоверения". |
| Размещенные вне Azure (например, локальные приложения) | Принципал службы | Сведения о регистрации приложения, назначении ролей и настройке переменных среды см. в статье "Авторизация доступа из локальных приложений с помощью субъекта-службы приложений" |
Авторизация доступа с помощью DefaultAzureCredential
Простой и безопасный способ авторизовать доступ и подключиться к хранилищу объектов Blob — получить токен OAuth, создав экземпляр DefaultAzureCredential. Затем можно использовать эти учетные данные для создания объекта BlobServiceClient .
Убедитесь, что у вас есть правильные зависимости в pom.xml и необходимые директивы импорта, как описано в разделе "Настройка проекта".
В следующем примере используется 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>");
Настройка TTL JVM для результатов поиска DNS-имен
Виртуальная машина Java (JVM) кэширует ответы успешных поисков DNS-имен в течение указанного периода времени, известного как время жизни (TTL). Значение TTL по умолчанию для многих виртуальных машин Java — это -1, что означает, что JVM кэширует ответ на неопределённый срок или до перезапуска JVM.
Так как ресурсы Azure используют записи DNS-имен, которые могут измениться, рекомендуется задать значение TTL JVM в 10 секунд. Эта конфигурация гарантирует, что обновленный IP-адрес ресурса возвращается с помощью следующего DNS-запроса.
Чтобы глобально изменить значение TTL для всех приложений с помощью JVM, задайте networkaddress.cache.ttl свойство в java.security файле.
networkaddress.cache.ttl=10
Для Java 8 java.security файл находится в каталоге $JAVA_HOME/jre/lib/security . Для Java 11 и более поздних версий файл находится в каталоге $JAVA_HOME/conf/security .
Создайте своё приложение
При создании приложений для работы с ресурсами данных в Хранилище BLOB-объектов Azure ваш код в основном взаимодействует с тремя типами ресурсов: аккаунтами хранения, контейнерами и BLOB-объектами. Дополнительные сведения об этих типах ресурсов, о том, как они связаны друг с другом и как приложения взаимодействуют с ресурсами, см. в статье "Общие сведения о взаимодействии приложений с ресурсами хранилища BLOB-объектов".
В следующих руководствах показано, как получить доступ к данным и выполнить определенные действия с помощью клиентской библиотеки служба хранилища Azure для Java:
| Руководство | Описание |
|---|---|
| Настройка политики повторных попыток | Реализуйте политики повторных попыток для клиентских операций. |
| Копирование блобов | Скопируйте объект BLOB из одного расположения в другое. |
| Создание контейнера | Создайте контейнеры BLOB-объектов. |
| Создание SAS для делегирования прав пользователя | Создайте пользовательский делегированный SAS для контейнера или блоба. |
| Создание аренды BLOB-объектов и управление ими | Установите и управляйте блокировкой на BLOB. |
| Создание аренды контейнеров и управление ими | Создайте блокировку контейнера и управляйте ею. |
| Удаление и восстановление блобов | Удалите BLOB-объекты, и если включено мягкое удаление, восстановите удаленные BLOB-объекты. |
| Удаление и восстановление контейнеров | Удалите контейнеры, и если включено обратимое удаление, восстановите удаленные контейнеры. |
| Скачивание больших двоичных объектов | Загрузка blob-объектов с помощью строк, потоков и путей к файлам. |
| Поиск BLOB-объектов с помощью тегов | Установите и извлеките теги, затем используйте их для поиска блобов. |
| Список объектов BLOB | Вывод списка блобов различными способами. |
| Перечисление контейнеров | Перечислить контейнеры в учетной записи и различные параметры, доступные для настройки списка. |
| Управление свойствами и метаданными (BLOB-объектами) | Получение и задание свойств и метаданных для BLOB-объектов. |
| Управление свойствами и метаданными (контейнерами) | Получение и задание свойств и метаданных для контейнеров. |
| Настройка производительности для передачи данных | Оптимизируйте производительность операций передачи данных. |
| Установить или изменить уровень доступа BLOB | Установите или измените уровень доступа для блочного блоба. |
| загрузка блобов | Узнайте, как загружать BLOB-объекты с помощью строк, потоков, путей к файлам и других методов. |