Lista blobcontainrar med Go
När du listar containrarna i ett Azure Storage-konto från koden kan du ange flera alternativ för att hantera hur resultatet returneras från Azure Storage. Den här artikeln visar hur du listar containrar med hjälp av Azure Storage-klientmodulen för Go.
Förutsättningar
- Azure-prenumeration – skapa en kostnadsfritt
- Azure Storage-konto – skapa ett lagringskonto
- Gå 1.18+
Konfigurera din miljö
Om du inte har ett befintligt projekt visar det här avsnittet hur du konfigurerar ett projekt så att det fungerar med Azure Blob Storage-klientmodulen för Go. Stegen omfattar modulinstallation, tillägg av import
sökvägar och skapande av ett auktoriserat klientobjekt. Mer information finns i Kom igång med Azure Blob Storage och Go.
Installera moduler
Installera azblob-modulen med följande kommando:
go get github.com/Azure/azure-sdk-for-go/sdk/storage/azblob
Om du vill autentisera med Microsoft Entra-ID (rekommenderas) installerar du modulen azidentity
med följande kommando:
go get github.com/Azure/azure-sdk-for-go/sdk/azidentity
Lägga till importsökvägar
Lägg till följande importsökvägar i kodfilen:
import (
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob"
)
Dessa importsökvägar representerar det minsta som krävs för att komma igång. Vissa kodexempel i den här artikeln kan kräva ytterligare importsökvägar. Specifik information och exempelanvändning finns i Kodexempel.
Skapa ett klientobjekt
Om du vill ansluta en app till Blob Storage skapar du ett klientobjekt med azblob . NewClient. I följande exempel visas hur du skapar ett klientobjekt med hjälp av DefaultAzureCredential
för auktorisering:
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
}
Auktorisering
Auktoriseringsmekanismen måste ha de behörigheter som krävs för att lista blobcontainrar. För auktorisering med Microsoft Entra-ID (rekommenderas) behöver du den inbyggda rollen Storage Blob Data Contributor eller senare. Mer information finns i auktoriseringsvägledningen för REST API (List Containers).
Om alternativ för containerlistning
När du listar containrar från koden kan du ange alternativ för att hantera hur resultatet returneras från Azure Storage. Du kan ange hur många resultat som ska returneras i varje resultatuppsättning och sedan hämta efterföljande uppsättningar. Du kan också filtrera resultatet efter ett prefix och returnera containermetadata med resultatet. De här alternativen beskrivs i följande avsnitt.
Om du vill visa containrar i ett lagringskonto anropar du följande metod:
Den här metoden returnerar en pager som gör att din app kan bearbeta en sida med resultat i taget. Containrar beställs lexicographically efter namn.
Du kan ange alternativ för att visa containrar med hjälp av structen ListContainersOptions . Den här structen innehåller fält för att hantera antalet resultat, filtrera efter prefix och inkludera containerinformation med ListContainersInclude.
Hantera hur många resultat som returneras
Som standard returnerar en liståtgärd upp till 5 000 resultat åt gången. Om du vill returnera en mindre uppsättning resultat anger du ett icke-nollvärde för MaxResults
fältet i ListContainersOptions-structen.
Filtrera resultat med ett prefix
Om du vill filtrera listan över containrar anger du en sträng eller ett tecken för fältet Prefix
i ListContainersOptions. Prefixsträngen kan innehålla ett eller flera tecken. Azure Storage returnerar sedan endast de containrar vars namn börjar med prefixet.
Inkludera containermetadata
Om du vill inkludera containermetadata med resultatet anger du fältet Metadata
till true
som en del av ListContainersInclude. Azure Storage innehåller metadata för varje container som returneras, så du behöver inte hämta containermetadata separat.
Inkludera borttagna containrar
Om du vill inkludera mjukt borttagna containrar med resultatet anger du fältet Deleted
som true
en del av ListContainersInclude.
Kodexempel
I följande exempel visas alla containrar och metadata:
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)
}
}
}
}
I följande exempel visas endast containrar som börjar med det angivna prefixet:
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)
}
}
}
Du kan också ange en gräns för antalet resultat per sida. I det här exemplet skickas ett värde för MaxResults
och sidnumrerar resultatet:
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)
}
}
}
Kommentar
Kodexemplen i den här guiden är avsedda att hjälpa dig att komma igång med Azure Blob Storage och Go. Du bör ändra felhantering och Context
värden för att uppfylla programmets behov.
Resurser
Mer information om hur du listar containrar med hjälp av Azure Blob Storage-klientmodulen för Go finns i följande resurser.
Kodexempel
- Visa kodexempel från den här artikeln (GitHub)
REST API-åtgärder
Azure SDK för Go innehåller bibliotek som bygger på Azure REST API så att du kan interagera med REST API-åtgärder via välbekanta Go-paradigm. Klientbiblioteksmetoderna för att visa containrar använder följande REST API-åtgärd:
- Listcontainrar (REST API)
Klientmodulresurser
Se även
Relaterat innehåll
- Den här artikeln är en del av utvecklarguiden för Blob Storage för Go. Mer information finns i den fullständiga listan över utvecklarguideartiklar i Skapa din Go-app.