Elencare i contenitori BLOB con Go
Quando si elencano i contenitori BLOB in un account di Archiviazione di Azure tramite il codice, è possibile specificare diverse opzioni per gestire il modo in cui i risultati vengono restituiti da Archiviazione di Azure. Questo articolo illustra come elencare i contenitori usando il modulo client di Archiviazione di Azure per Go.
Prerequisiti
- Sottoscrizione di Azure: creare un account gratuito
- Account di archiviazione di Azure: creare un account di archiviazione
- Go 1.18+
Configurazione dell'ambiente
Se non si ha un progetto esistente, questa sezione illustra come configurare un progetto per l'uso con il modulo client di Archiviazione BLOB di Azure per Go. I passaggi includono l'installazione del modulo, l'aggiunta di percorsi import
e la creazione di un oggetto client autorizzato. Per informazioni dettagliate, vedere Introduzione all'archiviazione BLOB di Azure e Go.
Installare i moduli
Installare il modulo azblob usando il comando seguente:
go get github.com/Azure/azure-sdk-for-go/sdk/storage/azblob
Per eseguire l'autenticazione con Microsoft Entra ID (scelta consigliata), installare il modulo azidentity
usando il comando seguente:
go get github.com/Azure/azure-sdk-for-go/sdk/azidentity
Aggiungere percorsi di importazione
Nel file di codice aggiungere i percorsi di importazione seguenti:
import (
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob"
)
Questi percorsi di importazione rappresentano il minimo necessario per iniziare. Alcuni esempi di codice in questo articolo potrebbero richiedere percorsi di importazione aggiuntivi. Per informazioni dettagliate specifiche e utilizzo di esempio, vedere Esempi di codice.
Creare un oggetto client
Per connettere un'app all'archiviazione BLOB, creare un oggetto client usando azblob. NewClient. Nell'esempio seguente viene illustrato come creare un oggetto client usando DefaultAzureCredential
per l'autorizzazione:
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
}
Autorizzazione
Il meccanismo di autorizzazione deve disporre delle autorizzazioni necessarie per elencare i contenitori BLOB. Per l'autorizzazione con Microsoft Entra ID (scelta consigliata), è necessario disporre del ruolo predefinito di Controllo degli accessi in base al ruolo di Azure Collaboratore ai dati del BLOB di archiviazione o ruolo superiore. Per altre informazioni, vedere le indicazioni sulle autorizzazioni per List Containers (API REST).
Informazioni sulle opzioni di elenco dei contenitori
Quando si elencano i contenitori tramite il codice, è possibile specificare diverse opzioni per gestire il modo in cui i risultati vengono restituiti da Archiviazione di Azure. È possibile specificare il numero di risultati da restituire in ogni set di risultati e quindi recuperare i set successivi. È anche possibile filtrare i risultati in base a un prefisso e restituire i metadati del contenitore insieme ai risultati. Le opzioni disponibili sono descritte nelle sezioni seguenti.
Per elencare i contenitori in un account di archiviazione, chiamare il metodo seguente:
Questo metodo restituisce un controllo pager, che consente all'app di elaborare una pagina di risultati alla volta. I contenitori vengono elencati in ordine lessicografico in base al nome.
È possibile specificare le opzioni per elencare i contenitori usando lo struct ListContainersOptions. Questo struct include campi per la gestione del numero di risultati, l'applicazione di filtri in base al prefisso e l'inclusione delle informazioni sui contenitori tramite ListContainersInclude.
Gestire il numero di risultati restituiti
Per impostazione predefinita, un'operazione di elenco restituisce fino a 5,000 risultati alla volta. Per restituire un set di risultati più piccolo, specificare un valore diverso da zero nel campo MaxResults
dello struct ListContainersOptions.
Filtrare i risultati con un prefisso
Per filtrare l'elenco di contenitori, specificare una stringa o un carattere per nel campo Prefix
in ListContainersOptions. La stringa di prefisso può includere uno o più caratteri. Archiviazione di Azure restituisce solo i contenitori i cui nomi iniziano con tale prefisso.
Includere i metadati del contenitore
Per includere i metadati dei contenitori con i risultati, impostare il campo Metadata
su true
nell'ambito di ListContainersInclude. Archiviazione di Azure include i metadati con ogni contenitore restituito, dunque non è necessario recuperare i metadati del contenitore separatamente.
Includere i contenitori eliminati
Per includere i contenitori eliminati temporaneamente con i risultati, impostare il campo Deleted
su true
nell'ambito di ListContainersInclude.
Esempi di codice
L'esempio seguente elenca tutti i contenitori e i metadati:
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)
}
}
}
}
L'esempio seguente elenca solo i contenitori che iniziano con un prefisso specificato:
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)
}
}
}
È anche possibile specificare un limite per il numero di risultati per pagina. Questo esempio passa un valore per MaxResults
e impagina i risultati:
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)
}
}
}
Nota
Gli esempi di codice in questa guida sono utili per iniziare a usare Archiviazione BLOB di Azure e Go. È consigliabile modificare la gestione degli errori e i valori Context
per soddisfare le esigenze dell'applicazione.
Risorse
Per altre informazioni su come elencare i contenitori tramite il modulo client di Archiviazione BLOB di Azure per Go, vedere le risorse seguenti.
Esempi di codice
- Vedere gli esempi di codice di questo articolo (GitHub)
Operazioni dell'API REST
Azure SDK per Go contiene librerie basate sull'API REST di Azure che consentono di interagire con le operazioni dell'API REST tramite paradigmi Go noti. I metodi della libreria client per elencare i contenitori usano l'operazione API REST seguente:
- List Containers (API REST)
Risorse del modulo client
- Documentazione di riferimento del modulo client
- Codice sorgente del modulo client
- Pacchetto (pkg.go.dev)
Vedi anche
Contenuto correlato
- Questo articolo fa parte della Guida per sviluppatori di Archiviazione BLOB per Go. Per altre informazioni, vedere l’elenco completo degli articoli della Guida per sviluppatori inCreare la propria app Go.