次の方法で共有


Java を使用して BLOB コンテナーを一覧表示する

Azure Storage アカウント内のコンテナーをコードから一覧表示する際には、Azure Storage からの結果の取得方法を管理するためのオプションをいくつか指定できます。 この記事では、Java 用の Azure Storage クライアント ライブラリを使用してコンテナーを一覧表示する方法について説明します。

前提条件

環境を設定する

既存のプロジェクトがない場合、Java 用 Azure Blob Storage クライアント ライブラリを操作するためにプロジェクトをセットアップする方法について、このセクションで説明します。 詳細については、「Azure Blob Storage と Java での作業開始」を参照してください。

この記事のコード例を使用するには、次の手順に従ってプロジェクトを設定します。

Note

この記事では Maven ビルド ツールを使用して、コード例をビルドして実行します。 Gradle などの他のビルド ツールも、Azure SDK for Java で動作します。

パッケージをインストールする

テキスト エディターで pom.xml ファイルを開きます。 BOM ファイルを含めるか直接依存関係を含めることで、パッケージをインストールします。

import ステートメントを追加する

次の import ステートメントを追加します。

import com.azure.core.http.rest.*;
import com.azure.storage.blob.*;
import com.azure.storage.blob.models.*;

承認

認可メカニズムには、BLOB コンテナーを一覧表示するために必要なアクセス許可が必要です。 Microsoft Entra ID を使用した認可 (推奨) には、Azure RBAC 組み込みロールのストレージ BLOB データ共同作成者以上が必要です。 詳細については、「List Containers (REST API)」の認可ガイダンスを参照してください。

クライアント オブジェクトの作成

アプリを Blob Storage に接続するには、 BlobServiceClientのインスタンスを作成します。

次の例では、BlobServiceClientBuilder を使用し、DefaultAzureCredential を使用して BlobServiceClient オブジェクトをビルドし、必要な場合にコンテナーおよび 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>");

クライアント オブジェクトの作成と管理の詳細については、「データ リソースを操作するクライアント オブジェクトを作成および管理する」を参照してください。

コンテナーの一覧表示のオプションについて

コードからコンテナーを一覧表示する際に、Azure Storage から結果を返す方法を管理するためのオプションを指定できます。 各結果セットで返す結果の数を指定し、後続のセットを取得できます。 プレフィックスで結果をフィルター処理したり、結果を含むコンテナー メタデータを返したりすることもできます。 以降のセクションでは、これらのオプションについて説明します。

ストレージ アカウント内のコンテナーを一覧表示するには、次のメソッドを呼び出します:

このメソッドは、BlobContainerItem 型の イテラブルを返します。 コンテナーは、名前によって辞書順に並べ替えられます。

返される結果の数を管理する

既定では、一覧表示操作では一度に最大 5000 の結果が返されます。 返される結果セットが小さくなるようにするには、返される結果ページのサイズに 0 以外の値を指定します。 次のメソッドを使用してこの値を設定できます:

この記事の例は、結果をページに返す方法を示しています。 改ページの概念の詳細については、「Azure SDK for Java を使用した改ページ」を参照してください。

プレフィックスを使用して結果をフィルター処理する

コンテナーの一覧をフィルター処理するには、 prefixパラメーターの文字列を指定します。 プレフィックス文字列には、1 つ以上の文字を含めることができます。 Azure Storage は、名前がそのプレフィックスで始まるコンテナーだけを返します。 次のメソッドを使用してこの値を設定できます:

コンテナー メタデータを含める

結果にコンテナー メタデータを含めるには、 BlobContainerListDetails インスタンスを作成し、 true を次のメソッドに渡します:

次に BlobContainerListDetails オブジェクトを次のメソッドに渡します:

削除されたコンテナーを含める

論理的に削除されたコンテナーを結果に含めるには、 BlobContainerListDetails インスタンスを作成し、 true を次のメソッドに渡します:

次に BlobContainerListDetails オブジェクトを次のメソッドに渡します:

コード例

次の例では、コンテナーを一覧表示し、指定したプレフィックスで結果をフィルター処理します:

public void listContainers(BlobServiceClient blobServiceClient) {
    // Set a prefix to filter results based on a specified character or string
    ListBlobContainersOptions options = new ListBlobContainersOptions()
            .setPrefix("container-");

    System.out.println("List containers:");
    for (BlobContainerItem blobContainerItem : blobServiceClient.listBlobContainers(options, null)) {
        System.out.printf("Container name: %s%n", blobContainerItem.getName());
    }
}

返される結果ページのサイズを指定することで、より小さな結果セットが返されるようにすることもできます。

public void listContainersWithPaging(BlobServiceClient blobServiceClient) {
    // Set a prefix to filter results and specify a page limit
    ListBlobContainersOptions options = new ListBlobContainersOptions()
            .setMaxResultsPerPage(2)  // Low number for demonstration purposes
            .setPrefix("container-");

    int i = 0;
    Iterable<PagedResponse<BlobContainerItem>> blobContainerPages = blobServiceClient
            .listBlobContainers(options, null).iterableByPage();
    for (PagedResponse<BlobContainerItem> page : blobContainerPages) {
        System.out.printf("Page %d%n", ++i);
        page.getElements().forEach(container -> {
            System.out.printf("Name: %s%n", container.getName());
        });
    }
}

リソース

Java 用 Azure Blob Storage クライアント ライブラリを使用したコンテナーの一覧表示について詳しくは、次のリソースを参照してください。

コード サンプル

REST API の操作

Azure SDK for Java には Azure REST API に基づき構築されたライブラリが含まれるため、使い慣れた Java パラダイムを通じて REST API 操作を実施できます。 コンテナーを一覧表示するためのクライアント ライブラリ メソッドでは、次の REST API 操作が使用されます。

クライアント ライブラリのリソース

関連項目

  • この記事は、Java の Blob Storage 開発者ガイドの一部です。 詳しくは、Java アプリの構築に関するセクションにある開発者ガイド記事の完全な一覧をご覧ください。