Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье показано, как подключиться к Хранилище 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 , чтобы получить зависимость от последней версии библиотеки. In the following snippet, replace the {bom_version_to_target}
placeholder with the version number. Использование 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>
Include a direct 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 client library information:
- com.azure.storage.blob: содержит основные классы (клиентские объекты), которые можно использовать для работы со службой, контейнерами и блобами.
- com.azure.storage.blob.models: содержит служебные классы, структуры и типы перечисления.
- com.azure.storage.blob.specialized: Contains classes that you can use to perform operations specific to a blob type (For example: append blobs).
Авторизация доступа и подключение к BLOB-хранилищу
Чтобы подключить приложение к хранилищу BLOB-объектов, создайте экземпляр класса BlobServiceClient . Вы также можете использовать класс BlobServiceAsyncClient для асинхронного программирования. Этот объект является отправной точкой для взаимодействия с ресурсами данных на уровне учетной записи хранения. Вы можете использовать это для управления учетной записью хранения и ее контейнерами. You can also use the service client to create container clients or blob clients, depending on the resource you need to work with.
Дополнительные сведения о создании клиентских объектов и управлении ими см. в статье "Создание клиентских объектов и управление ими", взаимодействующих с ресурсами данных.
Вы можете авторизовать BlobServiceClient
объект с помощью токена авторизации Microsoft Entra, ключа доступа к учетной записи или общей подписанной сигнатуры (SAS). For optimal security, Microsoft recommends using Microsoft Entra ID with managed identities to authorize requests against blob data. For more information, see Authorize access to blobs using Microsoft Entra ID.
To authorize with Microsoft Entra ID, you'll need to use a security principal. Which type of security principal you need depends on where your app runs. Руководствуйтесь следующей таблицей.
Где выполняется приложение | Security principal | Руководство |
---|---|---|
Локальный компьютер (разработка и тестирование) | Service principal | Сведения о регистрации приложения, настройке группы Microsoft Entra, назначении ролей и настройке переменных среды см. в статье "Авторизация доступа с помощью субъектов-служб разработчиков". |
Локальный компьютер (разработка и тестирование) | Удостоверение пользователя | Сведения о настройке группы Microsoft Entra, назначении ролей и входе в Azure см. в статье "Авторизация доступа с помощью учетных данных разработчика". |
Размещено в Azure | Управляемая идентификация | Сведения о включении управляемого удостоверения и назначении ролей см. в статье "Авторизация доступа из размещенных в Azure приложений с помощью управляемого удостоверения". |
Размещенные вне Azure (например, локальные приложения) | Service principal | Сведения о регистрации приложения, назначении ролей и настройке переменных среды см. в статье "Авторизация доступа из локальных приложений с помощью субъекта-службы приложений" |
Авторизация доступа с помощью DefaultAzureCredential
An easy and secure way to authorize access and connect to Blob Storage is to obtain an OAuth token by creating a DefaultAzureCredential instance. Затем можно использовать эти учетные данные для создания объекта 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-имен
The Java Virtual Machine (JVM) caches responses from successful DNS name lookups for a specified period of time, known as time-to-live (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:
Руководство | Описание |
---|---|
Настройка политики повторных попыток | Реализуйте политики повторных попыток для клиентских операций. |
Copy blobs | Copy a blob from one location to another. |
Создание контейнера | Create blob containers. |
Create a user delegation SAS | Create a user delegation SAS for a container or blob. |
Create and manage blob leases | Establish and manage a lock on a blob. |
Создание аренды контейнеров и управление ими | Создайте блокировку контейнера и управляйте ею. |
Удаление и восстановление блобов | Удалите BLOB-объекты, и если включено мягкое удаление, восстановите удаленные BLOB-объекты. |
Удаление и восстановление контейнеров | Удалите контейнеры, и если включено обратимое удаление, восстановите удаленные контейнеры. |
Download blobs | Загрузка blob-объектов с помощью строк, потоков и путей к файлам. |
Поиск BLOB-объектов с помощью тегов | Set and retrieve tags as well as use tags to find blobs. |
List blobs | List blobs in different ways. |
Перечисление контейнеров | List containers in an account and the various options available to customize a listing. |
Управление свойствами и метаданными (BLOB-объектами) | Получение и задание свойств и метаданных для BLOB-объектов. |
Управление свойствами и метаданными (контейнерами) | Получение и задание свойств и метаданных для контейнеров. |
Настройка производительности для передачи данных | Оптимизируйте производительность операций передачи данных. |
Set or change a blob's access tier | Set or change the access tier for a block blob. |
загрузка блобов | Узнайте, как загружать BLOB-объекты с помощью строк, потоков, путей к файлам и других методов. |