Freigeben über


Auflisten von Blobcontainern mit Go

Wenn Sie die Container in einem Azure Storage-Konto über Code auflisten, können Sie verschiedene Optionen angeben, um zu steuern, wie die Ergebnisse von Azure Storage zurückgegeben werden. In diesem Artikel wird beschrieben, wie Container mit dem Azure Storage-Clientmodul für Go aufgelistet werden.

Voraussetzungen

Erstellen Ihrer Umgebung

Wenn Sie nicht über ein vorhandenes Projekt verfügen, wird in diesem Abschnitt gezeigt, wie Sie ein Projekt für die Arbeit mit dem Azure Blob Storage-Clientmodul für Go einrichten. Die Schritte umfassen die Modulinstallation, das Hinzufügen von import-Pfaden und das Erstellen eines autorisierten Clientobjekts. Ausführlichere Informationen finden Sie unter Erste Schritte mit Azure Blob Storage und Go.

Installieren von Modulen

Verwenden Sie den folgenden Befehl, um das Modul azblob zu installieren:

go get github.com/Azure/azure-sdk-for-go/sdk/storage/azblob

Um sich mit Microsoft Entra ID zu authentifizieren (empfohlen), installieren Sie das azidentity-Modul mit dem folgenden Befehl:

go get github.com/Azure/azure-sdk-for-go/sdk/azidentity

Hinzufügen von Importpfaden

Fügen Sie in der Codedatei die folgenden Importpfade hinzu:

import (
    "github.com/Azure/azure-sdk-for-go/sdk/azidentity"
	"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob"
)

Dies sind die Importpfade, die mindestens für die ersten Schritte erforderlich sind. Einige Codebeispiele in diesem Artikel erfordern möglicherweise zusätzliche Importpfade. Spezifische Details und eine Beispielverwendung finden Sie unter Codebeispiele.

Erstellen eines Clientobjekts

Um eine App mit Blob Storage zu verbinden, erstellen Sie ein Clientobjekt mithilfe von azblob.NewClient. Das folgende Beispiel zeigt, wie Sie ein Clientobjekt mithilfe von DefaultAzureCredential für die Autorisierung erstellen:

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
}

Autorisierung

Der Autorisierungsmechanismus muss über die erforderlichen Berechtigungen zum Auflisten von Blobcontainern verfügen. Für die Autorisierung mit Microsoft Entra ID (empfohlen) benötigen Sie mindestens die integrierte Azure RBAC-Rolle Mitwirkender an Storage-Blobdaten. Weitere Informationen finden Sie im Autorisierungsleitfaden für List Containers (REST API).

Zu Containerauflistungsoptionen

Wenn Sie Container über Ihren Code auflisten, können Sie Optionen angeben, um zu steuern, wie Ergebnisse von Azure Storage zurückgegeben werden. Sie können die Anzahl der Ergebnisse festlegen, die in den einzelnen Ergebnissätzen zurückgegeben werden sollen, und dann die nachfolgenden Sätze abrufen. Sie können die Ergebnisse auch nach einem Präfix filtern und Containermetadaten mit den Ergebnissen zurückgeben. Diese Optionen sind in den folgenden Abschnitten beschrieben.

Rufen Sie zum Auflisten von Containern in einem Speicherkonto die folgende Methode auf:

Diese Methode gibt einen Pager zurück, mit dem Ihre App jeweils eine Seite mit Ergebnissen verarbeiten kann. Container werden lexikalisch nach Namen sortiert.

Sie können Optionen für das Auflisten von Containern angeben, indem Sie die ListContainersOptions-Struktur verwenden. Diese Struktur enthält Felder zum Verwalten der Ergebnisanzahl, zum Filtern nach Präfix und zum Einschließen von Containerinformationen mithilfe von ListContainersInclude.

Festlegen der Anzahl der zurückgegebenen Ergebnisse

Standardmäßig werden durch einen Auflistungsvorgang jeweils bis zu 5.000 Ergebnisse zurückgegeben. Wenn Sie einen kleineren Ergebnissatz wünschen, geben Sie einen Wert ungleich Null für das Feld MaxResults in der ListContainersOptions-Struktur an.

Filtern von Ergebnissen mit einem Präfix

Geben Sie zum Filtern der Liste von Containern eine Zeichenfolge oder ein Zeichen für das Feld Prefix in ListContainersOptions an. Die Präfixzeichenfolge kann ein oder mehrere Zeichen enthalten. Azure Storage gibt dann nur die Container zurück, deren Namen mit diesem Präfix beginnen.

Containermetadaten einschließen

Um Containermetadaten in die Ergebnisse einzuschließen, legen Sie das Feld Metadata als Teil von ListContainersInclude auf true fest. Da Azure Storage für jeden zurückgegebenen Container Metadaten enthält, müssen Sie diese nicht zusätzlich abrufen.

Einschließen gelöschter Container

Um vorläufig gelöschte Container in die Ergebnisse einzuschließen, legen Sie das Feld Deleted als Teil von ListContainersInclude auf true fest.

Codebeispiele

Im folgenden Beispiel werden alle Container und Metadaten aufgelistet:

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)
            }
        }
    }
}

Im folgenden Beispiel werden nur Container aufgelistet, die mit dem angegebenen Präfix beginnen:

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)
        }
    }
}

Sie können auch ein Limit für die Anzahl der Ergebnisse pro Seite angeben. In diesem Beispiel wird ein Wert für MaxResults übergeben, und die Ergebnisse werden paginiert:

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)
        }
    }
}

Hinweis

Die Codebeispiele in diesem Leitfaden sollen Ihnen bei den ersten Schritten mit Azure Blob Storage und Go helfen. Sie sollten die Fehlerbehandlung und Context-Werte so ändern, dass sie den Anforderungen Ihrer Anwendung entsprechen.

Ressourcen

Weitere Informationen zum Auflisten von Containern mithilfe des Azure Blob Storage-Clientmoduls für Go finden Sie in den folgenden Ressourcen.

Codebeispiele

REST-API-Vorgänge

Das Azure SDK für Go enthält Bibliotheken, die auf der Azure-REST-API basieren, und ermöglicht Ihnen dadurch die Interaktion mit REST-API-Vorgängen über vertraute Go-Paradigmen. Die Methoden der Clientbibliothek zum Auflisten von Containern verwenden den folgenden REST-API-Vorgang:

Clientmodulressourcen

Weitere Informationen

  • Dieser Artikel ist Teil des Blob Storage-Entwicklerleitfadens für Go. Weitere Informationen finden Sie in der vollständigen Liste der Entwicklerleitfadenartikel unter Erstellen Ihrer Go-App.