使用 .NET 管理容器屬性和中繼資料
除了包含的資料之外,Blob 容器還支援系統屬性和使用者定義的中繼資料。 此文章說明如何使用適用於 .NET 的 Azure 儲存體用戶端程式庫,來管理系統屬性和使用者定義的中繼資料。
必要條件
設定您的環境
如果您沒有現有的專案,本節將說明如何設定專案以使用適用於 .NET 的 Azure Blob 儲存體 客戶端連結庫。 這些步驟包括套件安裝、新增 using
指示詞,以及建立授權的客戶端物件。 如需詳細資訊,請參閱開始使用 Azure Blob 儲存體 和 .NET。
安裝套件
從您的專案目錄中,使用 dotnet add package
命令安裝 Azure Blob 儲存體和 Azure 身分識別客戶端程式庫的套件。 需要 Azure.Identity 套件才能對 Azure 服務進行無密碼連線。
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 記憶體,請建立 BlobServiceClient 的實例。 下列範例示範如何使用 來建立客戶端物件 DefaultAzureCredential
以進行授權:
public BlobServiceClient GetBlobServiceClient(string accountName)
{
BlobServiceClient client = new(
new Uri($"https://{accountName}.blob.core.windows.net"),
new DefaultAzureCredential());
return client;
}
您也可以在 .NET 應用程式中註冊服務用戶端以進行 相依性插入 。 若要深入了解如何建立及管理用戶端物件,請參閱建立和管理與資料資源互動的用戶端端物件 (部分機器翻譯)。
授權
授權機制必須具有使用容器屬性或元數據的必要許可權。 若要使用 Microsoft Entra ID 進行授權(建議使用),您需要 Azure RBAC 內建角色記憶體 Blob 數據讀取器或更新版本的取得作業,以及設定作業的記憶體 Blob 數據參與者或更高版本。 若要深入瞭解,請參閱取得容器屬性 (REST API)、設定容器元數據 (REST API) 或取得容器元數據 (REST API) 的授權指引。
關於屬性和中繼資料
系統屬性:系統屬性存在於每個 Blob 儲存體資源上。 其中一些可以讀取或設定,另一些則是唯讀的。 實際上,某些系統屬性會對應至特定標準 HTTP 標頭。 適用於 .NET 的 Azure 儲存體用戶端程式庫會為您維護這些屬性。
使用者定義的中繼資料:使用者定義的中繼資料是由您為 Blob 儲存體資源所指定一或多個成對的名稱和數值所組成。 您可以使用中繼資料來儲存資源的額外值。 中繼資料值僅供您自己使用,並不會影響資源的運作方式。
中繼資料名稱/值組是有效的 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 或容器資源上的一個或多個成對的名稱和數值。 若要設定中繼資料,請將名稱值組新增至 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 儲存起用戶端程式庫來設定和擷取容器屬性和中繼資料,請參閱下列資源。
REST API 操作
適用於 .NET 的 Azure SDK 包含建置在 Azure REST API 之上的程式庫,可讓您透過熟悉的 .NET 範例與 REST API 作業進行互動。 用來設定與擷取屬性和中繼資料的用戶端程式庫方法會使用下列 REST API 作業:
GetProperties
和 GetPropertiesAsync
方法會藉由呼叫取得 Blob 屬性作業和取得 Blob 中繼資料作業來擷取容器屬性和中繼資料。
用戶端程式庫資源
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應