.NET を使用してコンテナーのプロパティとメタデータを管理する
BLOB コンテナーは、そこに含まれているデータに加えて、システム プロパティとユーザー定義メタデータをサポートしています。 この記事では、.NET 用 Azure Storage クライアント ライブラリを使用して、システム プロパティとユーザー定義メタデータを管理する方法について説明します。
前提条件
- この記事では、.NET 用の Azure Blob Storage クライアント ライブラリを操作するようにプロジェクトが既に設定されていることを前提としています。 パッケージのインストール、
using
ディレクティブの追加、認可されたクライアント オブジェクトの作成など、プロジェクトの設定については、「Azure Blob Storage と .NET の作業開始」を参照してください。 - 認可メカニズムには、コンテナーのプロパティまたはメタデータを操作するためのアクセス許可が必要です。 詳細については、次の REST API 操作の認可ガイダンスを参照してください。
プロパティとメタデータについて
システムのプロパティ:システム プロパティは、各 BLOB ストレージ リソース上に存在します。 このようなプロパティには、読み取りまたは設定可能なものもありますが、読み取り専用のものもあります。 実際には、システムのプロパティの一部は、特定の標準 HTTP ヘッダーに対応しています。 .NET 用 Azure Storage クライアント ライブラリは、これらのプロパティをユーザーに代わって保持します。
ユーザー定義のメタデータ: ユーザー定義メタデータは、BLOB ストレージ リソースに対して指定された 1 つ以上の名前と値のペアで構成されます。 メタデータを使用すると、リソースに関する追加の値を格納できます。 メタデータ値は独自の目的にのみ使用され、リソースの動作には影響しません。
メタデータ名/値ペアは有効な HTTP ヘッダーであり、HTTP ヘッダーに適用されるすべての制約に準拠する必要があります。 メタデータの名前付けの要件について詳しくは、「メタデータ名」をご覧ください。
コンテナーのプロパティを取得する
コンテナーのプロパティを取得するには、次のメソッドのいずれかを呼び出します。
次のコード例では、コンテナーのシステム プロパティをフェッチし、一部のプロパティ値をコンソール ウィンドウに書き込みます。
private static async Task ReadContainerPropertiesAsync(BlobContainerClient container)
{
try
{
// Fetch some container properties and write out their values.
var properties = await container.GetPropertiesAsync();
Console.WriteLine($"Properties for container {container.Uri}");
Console.WriteLine($"Public access level: {properties.Value.PublicAccess}");
Console.WriteLine($"Last modified time in UTC: {properties.Value.LastModified}");
}
catch (RequestFailedException e)
{
Console.WriteLine($"HTTP error code {e.Status}: {e.ErrorCode}");
Console.WriteLine(e.Message);
Console.ReadLine();
}
}
メタデータを設定および取得する
メタデータは、BLOB またはコンテナーのリソースで 1 つ以上の名前と値のペアとして指定できます。 メタデータを設定するには、名前と値のペアを IDictionary オブジェクトに追加してから、次のいずれかのメソッドを呼び出して値を書き込みます。
次のコード例では、コンテナーでメタデータを設定します。
public static async Task AddContainerMetadataAsync(BlobContainerClient container)
{
try
{
IDictionary<string, string> metadata =
new Dictionary<string, string>();
// Add some metadata to the container.
metadata.Add("docType", "textDocuments");
metadata.Add("category", "guidance");
// Set the container's metadata.
await container.SetMetadataAsync(metadata);
}
catch (RequestFailedException e)
{
Console.WriteLine($"HTTP error code {e.Status}: {e.ErrorCode}");
Console.WriteLine(e.Message);
Console.ReadLine();
}
}
メタデータを取得するには、次のいずれかのメソッドを呼び出します。
その後、次の例に示すように、値を読み取ります。
public static async Task ReadContainerMetadataAsync(BlobContainerClient container)
{
try
{
var properties = await container.GetPropertiesAsync();
// Enumerate the container's metadata.
Console.WriteLine("Container metadata:");
foreach (var metadataItem in properties.Value.Metadata)
{
Console.WriteLine($"\tKey: {metadataItem.Key}");
Console.WriteLine($"\tValue: {metadataItem.Value}");
}
}
catch (RequestFailedException e)
{
Console.WriteLine($"HTTP error code {e.Status}: {e.ErrorCode}");
Console.WriteLine(e.Message);
Console.ReadLine();
}
}
リソース
.NET 用 Azure Blob Storage クライアント ライブラリを使用してコンテナーのプロパティとメタデータを設定および取得する方法の詳細については、次のリソースを参照してください。
REST API の操作
Azure SDK for .NET には Azure REST API に基づいて構築されたライブラリが含まれるため、使い慣れた .NET パラダイムを通じて REST API 操作を利用できます。 プロパティとメタデータを設定および取得するためのクライアント ライブラリ メソッドでは、次の REST API 操作が使用されます。
- Get Container Properties (REST API)
- Set Container Metadata (REST API)
- Get Container Metadata (REST API)
GetProperties
および GetPropertiesAsync
メソッドは、Get Blob Properties 操作と Get Blob Metadata 操作の両方を呼び出すことによって、コンテナーのプロパティとメタデータを取得します。