使用 .NET 列出 Blob 容器
當您從程式碼列出 Azure 儲存體中的容器時,即可指定數個選項來管理從 Azure 儲存體傳回結果的方式。 本文說明如何使用適用於 .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 應用程式中註冊相依性插入的服務用戶端。
您也可以為特定容器或 Blob 建立客戶端物件。 若要深入了解如何建立及管理用戶端物件,請參閱建立和管理與資料資源互動的用戶端端物件 (部分機器翻譯)。
授權
授權機制必須具有列出 Blob 容器的必要權限。 如需使用 Microsoft Entra ID 授權 (建議使用),您需要 Azure RBAC 內建角色儲存體 Blob 資料參與者或更高權限。 若要深入了解,請參閱列出容器 (REST API) 的授權指導。
關於容器清單選項
從程式碼列出容器時,可以指定若干選項來管理從 Azure 儲存體傳回結果的方式。 您可指定要在每一組結果中傳回的結果數目,然後擷取後續集合。 您也可以按前置詞篩選結果,在結果中傳回容器中繼資料。 下列各節描述這些選項。
若要列出儲存體帳戶中的容器,請呼叫下列其中一種方法:
這些方法會傳回 BlobContainerItem 物件的清單。 容器會依名稱按字典順序排序。
管理傳回的結果數目
根據預設,列出作業一次最多會傳回 5000 個結果,但您可以指定要讓每個列出作業傳回的結果數目。 本文中顯示的範例會說明如何在頁面中傳回結果。 若要深入了解分頁概念,請參閱使用 Azure SDK for .NET 進行分頁。
使用前置詞篩選結果
若要篩選容器清單,請指定 prefix
參數的字串。 前置詞字串可包含一或多個字元。 Azure 儲存體接著只會傳回名稱開頭為該前置詞的容器。
包含容器中繼資料
若要在結果中包含容器中繼資料,請指定 BlobContainerTraits 列舉的 Metadata
值。 Azure 儲存體包含中繼資料與每個傳回的容器,因此您無須個別擷取容器中繼資料。
包含已刪除的容器
若要在結果中包含虛刪除的容器,請指定 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 儲存體用戶端程式庫列出容器,請參閱下列資源。
REST API 操作
Azure SDK for .NET 包含建置在 Azure REST API 之上的程式庫,可讓您透過熟悉的 .NET 範例與 REST API 作業進行互動。 用來列出容器的用戶端程式庫方法會使用下列 REST API 作業:
- 列出容器 (REST API)
用戶端程式庫資源
另請參閱
相關內容
- 本文是適用於 .NET 的 Blob 儲存體開發人員指南的一部分。 若要深入了解,請參閱位於建置 .NET 應用程式的開發人員指南文章完整清單。