透過 .NET 使用 Blob 索引標籤來管理和尋找資料
本文說明如何利用適用於 .NET 的 Azure 儲存體用戶端程式庫來使用 Blob 索引標籤以管理和尋找資料。
必要條件
設定您的環境
如果沒有現有的專案,本章節會說明如何設定專案以使用適用於 .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 應用程式中註冊相依性插入的服務用戶端。
您也可以為特定容器或 Blob 建立客戶端物件。 若要深入了解如何建立及管理用戶端物件,請參閱建立和管理與資料資源互動的用戶端端物件 (部分機器翻譯)。
授權
授權機制必須具有使用 Blob 索引標籤所需的權限。 如需使用 Microsoft Entra ID 授權 (建議使用),您需要 Azure RBAC 內建角色儲存體 Blob 資料擁有者 或更高權限。 若要深入了解,請參閱 取得 Blob 標籤 (REST API)、設定 Blob 標籤 (REST API)或依標籤尋找 Blob(REST API) 的授權指導。
關於 Blob 索引標籤
Blob 索引標記會使用索引鍵/值標記屬性,將儲存體帳戶中的資料分類。 這些標記會自動編製索引,並公開為可搜尋的多維度索引,以便輕鬆地尋找資料。 本文說明如何使用 Blob 索引標記來設定、取得及尋找資料。
已啟用階層命名空間的儲存體帳戶不支援 Blob 索引標籤。 若要深入了解 Blob 索引標籤功能以及已知問題和限制,請參閱使用 Blob 索引標籤來管理及尋找 Azure Blob 資料。
設定標記
如果您的程式碼透過以下其中一種機制獲得授權可以存取 Blob 資料,則您可以設定索引標籤:
- 獲指派 Azure RBAC 角色,並具有 Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/write 動作的安全性主體。 儲存體 Blob 資料擁有者是包含此動作的內建角色。
- 具有存取 Blob 標籤之權限 (
t
權限) 的共用存取簽章 (SAS) - 帳戶金鑰
如需詳細資訊,請參閱設定 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);
}
您可以透過將空白 [Dictionary] 傳遞至 SetTags 或 SetTagsAsync 方法來刪除所有標籤,如下列範例所示。
Dictionary<string, string> noTags = new Dictionary<string, string>();
await blobClient.SetTagsAsync(noTags);
相關文章 |
---|
使用 Blob 索引標籤來管理及尋找 Azure Blob 資料 |
設定 Blob 標籤 (REST API) |
取得標籤
如果您的程式碼透過以下其中一種機制獲得授權可以存取 Blob 資料,則您可以取得索引標籤:
- 獲指派 Azure RBAC 角色,並具有 Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/read 動作的安全性主體。 儲存體 Blob 資料擁有者是包含此動作的內建角色。
- 具有存取 Blob 標籤之權限 (
t
權限) 的共用存取簽章 (SAS) - 帳戶金鑰
如需詳細資訊,請參閱取得和列出 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 資料,則您可以使用索引標籤來尋找和篩選資料:
- 獲指派 Azure RBAC 角色,並具有 Microsoft.Storage/storageAccounts/blobServices/containers/blobs/filter/action 動作的安全性主體。 儲存體 Blob 資料擁有者是包含此動作的內建角色。
- 具有依標籤篩選 Blob 之權限 (
f
權限) 的共用存取簽章 (SAS) - 帳戶金鑰
如需詳細資訊,請參閱使用 Blob 索引標籤來尋找資料。
注意
您無法使用索引標籤來擷取先前的版本。 先前版本的標記不會傳遞至 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 儲存體用戶端程式庫來使用索引標籤管理及尋找資料,請參閱下列資源。
REST API 操作
Azure SDK for .NET 包含建置在 Azure REST API 之上的程式庫,可讓您透過熟悉的 .NET 範例與 REST API 作業進行互動。 用來管理和使用 Blob 索引標籤的用戶端程式庫方法會使用下列 REST API 作業:
- 取得 Blob 標籤 (REST API)
- 設定 Blob 標籤 (REST API)
- 依標籤來尋找 Blob (REST API)
用戶端程式庫資源
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應