Java как создать BlobServiceClient с токеном SAS для определенной папки?

Вопрос или проблема

У меня есть SAS токен для конкретной папки, которая, конечно же, имеет больше папок и блобов. Я ищу способ создать клиент Service или Container, чтобы позволить мне итерироваться по папкам/блобам в этой папке.

Я пытался использовать serviceclient, но, конечно, это не авторизовано.

Я пытался использовать containerclient, но это завершается ошибкой URI с недействительной строкой подключения.

new BlobContainerClientBuilder().connectionString("https://{blobacct}.blob.core.windows.net/{container}/{folder}?sp=...

Выше представлена попытка, которая завершилась ошибкой недействительной строки подключения.

Смотря на документацию sdk на github документацию, вы можете сделать что-то подобное:

BlobContainerClient blobContainerClient = new BlobContainerClientBuilder()
    .endpoint("<ваш-url-хранилища>")
    .sasToken("<ваш-sasToken>")
    .containerName("mycontainer")
    .buildClient();

Ответ или решение

Как создать BlobServiceClient с SAS токеном для конкретной папки в Java

Для работы с Azure Blob Storage с использованием SAS токена, необходимо правильно настроить клиент, который обеспечит доступ к контейнеру или конкретной папке. В этом ответе мы подробно рассмотрим, как создать BlobServiceClient с использованием SAS токена для работы с конкретной папкой в Azure Storage.

1. Понимание SAS токенов

SAS (Shared Access Signature) токены позволяют предоставлять ограниченный доступ к ресурсам в Azure Storage. Если у вас есть SAS токен, связанный с конкретной папкой, вы можете использовать его для создания клиента, который может выполнять операции чтения и записи в этой папке, а также для итерирования по содержимому.

2. Необходимые зависимости

Перед началом работы убедитесь, что у вас есть необходимые зависимости в вашем проекте. Используйте Maven и добавьте следующий код в ваш pom.xml:

<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-storage-blob</artifactId>
    <version>X.Y.Z</version> <!-- Замените на актуальную версию -->
</dependency>

3. Создание клиента BlobContainerClient

В отличие от BlobServiceClient, использование BlobContainerClient для папки с SAS токеном более уместно. Обратите внимание, что папка в Azure Blob Storage фактически является "виртуальной" организацией, и все операции будут выполняться на уровне контейнера. Вот как можно создать BlobContainerClient:

import com.azure.storage.blob.BlobContainerClient;
import com.azure.storage.blob.BlobContainerClientBuilder;

public class BlobStorageExample {
    public static void main(String[] args) {
        String sasToken = "<ваш_sas_токен>"; // Ваш SAS токен
        String containerName = "<имя_контейнера>"; // Имя контейнера
        String endpoint = "https://<имя_хранилища>.blob.core.windows.net/";

        // Создание клиента для контейнера
        BlobContainerClient containerClient = new BlobContainerClientBuilder()
            .endpoint(endpoint)
            .sasToken(sasToken)
            .containerName(containerName)
            .buildClient();

        // Теперь вы можете выполнять операции с контейнером
    }
}

4. Итерирование по Blob’ам в папке

После создания клиента для контейнера, вы можете итерировать по объектам (Blob) в папке, указав префикс. Пример кода:

String folderPath = "путь/к/вашей/папке/"; // Укажите путь к папке внутри контейнера

containerClient.listBlobsByHierarchy(folderPath).forEach(blobItem -> {
    System.out.printf("Найден Blob: %s%n", blobItem.getName());
});

Это позволит вам просматривать содержимое вашей целевой папки и обрабатывать каждый Blob, как вам необходимо.

5. Заключение

Создание BlobContainerClient с использованием SAS токена – это прямой и эффективный способ получить доступ к ресурсам Azure Blob Storage. Убедитесь, что ваш SAS токен имеет необходимые разрешения для выполнения требуемых операций, и не забудьте правильно указать контейнер и путь к папке. Применяя данные методы, вы сможете легко интегрировать функциональность Azure Blob Storage в ваши Java приложения.

Если у вас возникнут дополнительные вопросы по этой теме, не стесняйтесь их задавать!

Оцените материал
Добавить комментарий

Капча загружается...