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


Начало работы с объектным хранилищем Azure Blob и Java

В этой статье показано, как подключиться к Хранилище BLOB-объектов Azure с помощью клиентской библиотеки Хранилище BLOB-объектов Azure для Java. После подключения используйте руководства разработчика, чтобы узнать, как ваш код может работать с контейнерами, блобами и функциями службы Azure Blob Storage.

Если вы хотите начать с полного примера, см. Краткое руководство: клиентская библиотека для Java для Azure Blob Storage.

Справочник API | Package (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-объекты с помощью строк, потоков, путей к файлам и других методов.