使用 Go 列出 Blob 容器
當您從程式碼列出 Azure 儲存體中的容器時,可以指定數個選項來管理從 Azure 儲存體傳回結果的方式。 本文說明如何使用適用於 Go 的 Azure 儲存體 用戶端模組來列出容器。
必要條件
設定您的環境
如果您沒有現有的專案,本節說明如何設定專案以使用適用於 Go 的 Azure Blob 儲存體 客戶端模組。 這些步驟包括模組安裝、新增 import
路徑,以及建立授權的客戶端物件。 如需詳細資訊,請參閱開始使用 Azure Blob 儲存體 和 Go。
安裝模組
使用下列命令安裝 azblob 模組:
go get github.com/Azure/azure-sdk-for-go/sdk/storage/azblob
若要使用 Microsoft Entra ID 進行驗證(建議),請使用下列命令安裝 azidentity
模組:
go get github.com/Azure/azure-sdk-for-go/sdk/azidentity
新增匯入路徑
在您的程式代碼檔案中,新增下列匯入路徑:
import (
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob"
)
本文中的某些程式代碼範例可能需要其他匯入路徑。 如需特定詳細數據和範例使用方式,請參閱 程式代碼範例。
建立用戶端物件
若要將應用程式連線到 Blob 記憶體,請使用 azblob 建立客戶端物件。NewClient。 下列範例示範如何使用 來建立客戶端物件 DefaultAzureCredential
以進行授權:
func getServiceClientTokenCredential(accountURL string) *azblob.Client {
// Create a new service client with token credential
credential, err := azidentity.NewDefaultAzureCredential(nil)
handleError(err)
client, err := azblob.NewClient(accountURL, credential, nil)
handleError(err)
return client
}
授權
授權機制必須具有列出 Blob 容器的必要許可權。 如需具有 Microsoft Entra ID 的授權(建議),您需要 Azure RBAC 內建角色 記憶體 Blob 數據參與者 或更高版本。 若要深入瞭解,請參閱清單容器(REST API)的授權指引。
關於容器清單選項
從程式碼列出容器時,可以指定若干選項來管理從 Azure 儲存體傳回結果的方式。 您可指定要在每一組結果中傳回的結果數目,然後擷取後續集合。 您也可以按前置詞篩選結果,在結果中傳回容器中繼資料。 下列各節描述這些選項。
若要列出儲存體帳戶中的容器,請呼叫下列方法:
這個方法會傳 回 Pager,這可讓您的應用程式一次處理一頁的結果。 容器會依名稱按字典順序排序。
您可以使用 ListContainersOptions 結構來指定列出容器的選項。 此結構包含用來管理結果數目、依前置詞篩選,以及使用ListContainersInclude 包含容器資訊的欄位。
管理傳回的結果數目
根據預設,清單作業一次最多會傳回 5,000 個結果。 若要傳回較小的結果集,請為 MaxResults
ListContainersOptions 結構中的欄位提供非零值。
使用前置詞篩選結果
若要篩選容器清單,請在 ListContainersOptions 中指定欄位的字串或字元Prefix
。 前置詞字串可包含一或多個字元。 Azure 儲存體接著只會傳回名稱開頭為該前置詞的容器。
包含容器中繼資料
若要將容器元數據包含在結果中,請將 Metadata
欄位true
設定為 ListContainersInclude 的一部分。 Azure 儲存體包含中繼資料與每個傳回的容器,因此您無須個別擷取容器中繼資料。
包含已刪除的容器
若要包含結果的虛刪除容器,請將 字段true
設定Deleted
為 ListContainersInclude 的一部分。
程式碼範例
下列範例會列出所有容器和元數據:
func listContainers(client *azblob.Client) {
// List the containers in the storage account and include metadata
pager := client.NewListContainersPager(&azblob.ListContainersOptions{
Include: azblob.ListContainersInclude{Metadata: true},
})
for pager.More() {
resp, err := pager.NextPage(context.TODO())
handleError(err)
for _, container := range resp.ContainerItems {
fmt.Println(*container.Name)
for k, v := range container.Metadata {
fmt.Printf("%v: %v\n", k, *v)
}
}
}
}
下列範例只會列出開頭為指定前置詞的容器:
func listContainersWithPrefix(client *azblob.Client, prefix string) {
// List the containers in the storage account with a prefix
pager := client.NewListContainersPager(&azblob.ListContainersOptions{
Prefix: &prefix,
})
for pager.More() {
resp, err := pager.NextPage(context.TODO())
handleError(err)
for _, container := range resp.ContainerItems {
fmt.Println(*container.Name)
}
}
}
您也可以為每個頁面的結果數目指定限制。 此範例會傳入的值 MaxResults
,並分頁結果:
func listContainersWithMaxResults(client *azblob.Client, maxResults int32) {
// List the containers in the storage account with a maximum number of results
pager := client.NewListContainersPager(&azblob.ListContainersOptions{
MaxResults: &maxResults,
})
i := 0
for pager.More() {
resp, err := pager.NextPage(context.TODO())
handleError(err)
// Show page number to demonstrate pagination with max results
i++
fmt.Printf("Page %d:\n", i)
for _, container := range resp.ContainerItems {
fmt.Println(*container.Name)
}
}
}
注意
本指南中的程式碼範例旨在協助您開始使用 Azure Blob 儲存體和 Go。 您應該修改錯誤處理和 Context
值,以符合應用程式的需求。
資源
若要深入瞭解如何使用適用於 Go 的 Azure Blob 儲存體 用戶端模組列出容器,請參閱下列資源。
程式碼範例
- 檢視 本文中的程式碼範例 (GitHub)
REST API 操作
Azure SDK for Go 包含以 Azure REST API 為基礎的連結庫,可讓您透過熟悉的 Go 架構與 REST API 作業互動。 用來列出容器的用戶端程式庫方法會使用下列 REST API 作業:
- 列出容器 (REST API)
用戶端模組資源
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應