共用方式為


使用 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 儲存體 用戶端模組列出容器,請參閱下列資源。

程式碼範例

REST API 操作

Azure SDK for Go 包含以 Azure REST API 為基礎的連結庫,可讓您透過熟悉的 Go 架構與 REST API 作業互動。 用來列出容器的用戶端程式庫方法會使用下列 REST API 作業:

用戶端模組資源

另請參閱