.NET を使用してデータを管理および検索するために BLOB インデックス タグを使用する

この記事では、.NET 用 Azure Storage クライアント ライブラリを使用してデータを管理および検索するために BLOB インデックス タグを使用する方法について説明します。

前提条件

環境を設定する

既存のプロジェクトがない場合、このセクションでは、.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 組み込みロールの Storage BLOB データ所有者以上が必要です。 詳細については、「Get Blob Tags (REST API)」、「Set Blob Tags (REST API)」、または「Find Blobs by Tags (REST API)」の認可ガイダンスを参照してください。

BLOB インデックス タグについて

キーと値のタグ属性を使用して、BLOB インデックス タグによってストレージ アカウント内のデータが分類されます。 これらのタグには自動的にインデックスが付けられ、検索可能な多次元インデックスとして公開されるため、データを簡単に見つけることができます。 この記事では、BLOB インデックス タグを使用してデータを設定、取得、および検索する方法について説明します。

階層型名前空間が有効になっているストレージ アカウントでは、BLOB インデックス タグはサポートされていません。 BLOB インデックス タグ機能と既知の問題および制限について詳しくは、「BLOB インデックス タグを使用して Azure BLOB データを管理および検索する」を参照してください。

タグを設定する

次のいずれかのメカニズムを使用してコードが BLOB データへのアクセスを認可されている場合は、インデックス タグを設定できます。

詳細については、BLOB インデックス タグの設定を参照してください。

次のいずれかの方法を使用してタグを設定できます。

このタスクを実行する例を次に示します。

public static async Task SetTags(BlobClient blobClient)
{
    Dictionary<string, string> tags = 
        new Dictionary<string, string>
    {
        { "Sealed", "false" },
        { "Content", "image" },
        { "Date", "2020-04-20" }
    };

    await blobClient.SetTagsAsync(tags);
}

次の例に示すように、SetTags または SetTagsAsync メソッドに空の [辞書] を渡して、すべてのタグを削除できます。

Dictionary<string, string> noTags = new Dictionary<string, string>();
await blobClient.SetTagsAsync(noTags);
関連記事
BLOB インデックス タグを使用して Azure BLOB データを管理および検索する
BloB タグを設定する (REST API)

タグを取得する

次のいずれかのメカニズムを使用してコードが BLOB データへのアクセスを認可されている場合は、インデックス タグを取得できます。

詳細については、「BLOB インデックス タグの取得と一覧表示」を参照してください。

次のいずれかのメソッドを使用して、タグを取得できます。

このタスクを実行する例を次に示します。

public static async Task GetTags(BlobClient blobClient)
{
    Response<GetBlobTagResult> tagsResponse = await blobClient.GetTagsAsync();

    foreach (KeyValuePair<string, string> tag in tagsResponse.Value.Tags)
    {
        Console.WriteLine($"{tag.Key}={tag.Value}");
    }
}

BLOB インデックス タグを使用してデータをフィルター処理および検索する

次のいずれかのメカニズムを使用して、コードが BLOB データへのアクセスを認可されている場合は、インデックス タグを使用してデータを検索し、フィルター処理できます。

詳細については、「BLOB インデックス タグを使用したデータの検索」を参照してください。

Note

インデックス タグを使用して以前のバージョンを取得することはできません。 以前のバージョンのタグは BLOB インデックス エンジンに渡されません。 詳細については、条件と既知の問題に関するページを参照してください。

次のいずれかのメソッドを使用してデータを検索できます。

次の例では、特定の範囲にある日付でタグ付けされた BLOB を検索します。

public static async Task FindBlobsbyTags(BlobServiceClient serviceClient)
{
    string query = @"""Date"" >= '2020-04-20' AND ""Date"" <= '2020-04-30'";

    // Find Blobs given a tags query
    Console.WriteLine("Find Blob by Tags query: " + query + Environment.NewLine);

    List<TaggedBlobItem> blobs = new List<TaggedBlobItem>();
    await foreach (TaggedBlobItem taggedBlobItem in serviceClient.FindBlobsByTagsAsync(query))
    {
        blobs.Add(taggedBlobItem);
    }

    foreach (var filteredBlob in blobs)
    {
        
        Console.WriteLine($"BlobIndex result: ContainerName= {filteredBlob.BlobContainerName}, " +
            $"BlobName= {filteredBlob.BlobName}");
    }

}

リソース

.NET 用 Azure Blob Storage クライアント ライブラリを使用して、インデックス タグを使用したデータの管理と検索を行う方法の詳細については、次のリソースを参照してください。

REST API の操作

Azure SDK for .NET には Azure REST API に基づき構築されたライブラリが含まれるため、使い慣れた .NET パラダイムを通じて REST API 操作を実施できます。 BLOB インデックス タグを管理および使用するためのクライアント ライブラリ メソッドは、次の REST API 操作を使用します。

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

こちらもご覧ください

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