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

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

前提条件

環境を設定する

既存のプロジェクトがない場合、このセクションでは、.NET 用 Azure Blob Storage クライアント ライブラリを使用するようにプロジェクトを設定する方法について説明します。 このステップには、パッケージのインストール、usingディレクティブの追加、承認されたクライアント オブジェクトの作成が含まれます。 詳細については、「Azure Blob Storage と .NET の概要」に関するページを参照してください。

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

プロジェクト ディレクトリから、dotnet add package コマンドを使用して、Azure Blob Storage と Azure ID のクライアント ライブラリのパッケージをインストールします。 Azure サービスへのパスワードレス接続には、Azure.Identity パッケージが必要です。

dotnet add package Azure.Storage.Blobs
dotnet add package Azure.Identity

using ディレクティブを追加します

次の using ディレクティブをコード ファイルの先頭に追加します。

using Azure.Identity;
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
using Azure.Storage.Blobs.Specialized;

この記事の一部のコード例では、追加のusing ディレクティブが必要な場合があります。

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

アプリを Blob Storage に接続するには、 BlobServiceClientのインスタンスを作成します。 次の例では、認可のために DefaultAzureCredential を使用してクライアント オブジェクトを作成する方法を示します。

public BlobServiceClient GetBlobServiceClient(string accountName)
{
    BlobServiceClient client = new(
        new Uri($"https://{accountName}.blob.core.windows.net"),
        new DefaultAzureCredential());

    return client;
}

.NET アプリに依存関係の挿入用のサービス クライアントを登録できます。

また、特定のコンテナーまたは BLOB 用のクライアント オブジェクトを作成することもできます。 クライアント オブジェクトの作成と管理の詳細については、「データ リソースを操作するクライアント オブジェクトを作成および管理する」を参照してください。

承認

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

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

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

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

これらのメソッドは、BlobContainerItem オブジェクトの一覧を返します。 コンテナーは、名前によって辞書の順序で並べ替えられます。

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

既定では、一覧表示操作から一度に最大 5,000 件の結果が返されますが、各一覧表示操作で返される結果の数は指定できます。 この記事の例は、結果をページに返す方法を示しています。 改ページの概念の詳細については、「Azure SDK for .NET を使用した改ページ」を参照してください。

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

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

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

結果と共にコンテナーのメタデータを含めるには、BlobContainerTraits 列挙型の Metadata 値を指定します。 Azure Storage では、返される各コンテナーにメタデータが含まれているため、コンテナーのメタデータを個別にフェッチする必要はありません。

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

論理削除されたコンテナーを結果と共に含めるには、BlobContainerStates 列挙型の Deleted 値を指定します。

コード例: コンテナーの一覧表示

次の例では、指定されたプレフィックスで始まるコンテナーがストレージ アカウント内から非同期的に一覧表示されます。 この例では、指定されたプレフィックスで始まるコンテナーを一覧表示し、一覧表示操作の呼び出しごとに指定された数の結果を返します。 その後、継続トークンを使用して、結果の次のセグメントを取得します。 また、この例では、結果と共にコンテナーのメタデータも返されます。

async static Task ListContainers(BlobServiceClient blobServiceClient, 
                                string prefix, 
                                int? segmentSize)
{
    try
    {
        // Call the listing operation and enumerate the result segment.
        var resultSegment = 
            blobServiceClient.GetBlobContainersAsync(BlobContainerTraits.Metadata, prefix, default)
            .AsPages(default, segmentSize);

        await foreach (Azure.Page<BlobContainerItem> containerPage in resultSegment)
        {
            foreach (BlobContainerItem containerItem in containerPage.Values)
            {
                Console.WriteLine("Container name: {0}", containerItem.Name);
            }

            Console.WriteLine();
        }
    }
    catch (RequestFailedException e)
    {
        Console.WriteLine(e.Message);
        Console.ReadLine();
        throw;
    }
}

リソース

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

REST API の操作

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

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

関連項目

  • この記事は、.NET の Blob Storage 開発者ガイドの一部です。 詳細については、「.NET アプリのビルド」にある開発者ガイドの記事の完全な一覧を参照してください。