Répertoriez les conteneurs d’objets BLOB avec Go
Quand vous listez des conteneurs dans un compte de stockage Azure à partir de votre code, vous pouvez spécifier plusieurs options pour gérer la façon dont les résultats sont retournés à partir du stockage Azure. Cet article explique comment répertorier des conteneurs à l’aide du module client Stockage Azure pour Go.
Prérequis
- Abonnement Azure : créez-en un gratuitement
- Compte de stockage Azure : créez un compte de stockage
- Go 1.18+
Paramétrer votre environnement
Si vous n’avez aucun projet existant, cette section montre comment configurer un projet pour qu’il fonctionne avec le module client du Stockage Blob Azure pour Go. Les étapes incluent l’installation du module, l’ajout de chemins d’accès import
et la création d’un objet client autorisé. Pour plus d’informations, consultez Prise en main de Stockage Blob Azure et de Go.
Installer des modules
Installez le module azblob à l’aide de la commande suivante :
go get github.com/Azure/azure-sdk-for-go/sdk/storage/azblob
Pour vous authentifier auprès de Microsoft Entra ID (recommandé), installez le module azidentity
à l’aide de la commande suivante :
go get github.com/Azure/azure-sdk-for-go/sdk/azidentity
Ajouter des chemins d’importation
Dans votre fichier de code, ajoutez les chemins d’importation suivants :
import (
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob"
)
Ces chemins d’importation représentent le minimum nécessaire pour démarrer. Certains exemples de code de cet article peuvent nécessiter des chemins d’importation supplémentaires. Pour plus d’informations et des exemples d’utilisation spécifiques, consultez Exemples de code.
Créer un objet client
Pour connecter une application à Stockage Blob, créez un objet client à l’aide de azblob.NewClient. L’exemple suivant montre comment créer un objet client à l’aide de DefaultAzureCredential
pour l’autorisation :
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
}
Autorisation
Le mécanisme d’autorisation doit disposer des autorisations nécessaires pour répertorier des conteneurs d’objets blob. Pour l’autorisation avec Microsoft Entra ID (recommandé), vous devez disposer au minimum du rôle RBAC Azure intégré Contributeur aux données Blob du stockage. Pour en savoir plus, consultez les conseils d’autorisation pour Lister des conteneurs (API REST).
À propos des options de la liste de conteneurs
Quand vous listez les conteneurs dans votre code, vous pouvez spécifier des options pour gérer la façon dont les résultats sont retournés par le Stockage Azure. Vous pouvez spécifier le nombre de résultats à retourner dans chaque ensemble de résultats, puis récupérer les ensembles suivants. Vous pouvez également filtrer les résultats par un préfixe et retourner des métadonnées de conteneur avec les résultats. Les étapes de cette procédure sont décrites dans les sections suivantes.
Pour répertorier les conteneurs dans un compte de stockage, appelez la méthode suivante :
Cette méthode retourne un pager, ce qui permet à votre application de traiter une page de résultats à la fois. Les conteneurs sont classés lexicographiquement par nom.
Vous pouvez spécifier des options pour répertorier des conteneurs à l’aide du struct ListContainersOptions. Ce struct inclut des champs permettant de gérer le nombre de résultats, de filtrer par préfixe et d’inclure des informations de conteneur à l’aide deListContainersInclude.
Gérez le nombre de résultats retournés
Par défaut, une opération de dressage de liste renvoie jusqu’à 5 000 résultats à la fois. Pour retourner un jeu de résultats plus petit, fournissez une valeur différente de zéro pour le champ MaxResults
dans le struct ListContainersOptions.
Filtrez les résultats avec un préfixe
Si vous souhaitez filtrer la liste des conteneurs, spécifiez une chaîne ou un caractère pour le champ Prefix
de ListContainersOptions. La chaîne de préfixe peut inclure un ou plusieurs caractères. Le stockage Azure retourne alors uniquement les conteneurs dont les noms commencent par ce préfixe.
Inclure des métadonnées de conteneur
Pour inclure les métadonnées de conteneurs dans les résultats, définissez le champ Metadata
sur true
dans ListContainersInclude. Le Stockage Azure comprend des métadonnées avec chaque conteneur retourné. Vous n’avez donc pas besoin de récupérer les métadonnées de conteneur séparément.
Inclure des conteneurs supprimés
Pour inclure les conteneurs supprimés de manière réversible dans les résultats, définissez le champ Deleted
sur true
dans ListContainersInclude.
Exemples de code
L’exemple suivant répertorie la totalité des conteneurs et des métadonnées :
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’exemple suivant répertorie uniquement les conteneurs qui commencent par le préfixe spécifié :
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)
}
}
}
Vous pouvez également spécifier une limite pour le nombre de résultats par page. Cet exemple transmet une valeur pour MaxResults
et pagine les résultats :
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)
}
}
}
Remarque
Les exemples de code de ce guide sont conçus pour vous aider à bien démarrer avec Stockage Blob Azure et Go. Vous devez modifier la gestion des erreurs et les valeurs Context
pour répondre aux besoins de votre application.
Ressources
Pour en savoir plus sur la création de listes de conteneurs à l’aide du module client Stockage Blob Azure pour Go, consultez les ressources suivantes.
Exemples de code
- Afficher des exemples de code de cet article (GitHub)
Opérations de l'API REST
Le kit de développement logiciel Azure SDK pour Go contient des bibliothèques qui s’appuient sur l’API REST Azure et vous permet d’interagir avec des opérations de l’API REST via des paradigmes Go familiers. Les méthodes de bibliothèque de client pour le listing de conteneurs utilisent l’opération d’API REST suivante :
- List Containers (API REST)
Ressources du module client
- Documentation de référence sur les modules clients
- Code source du module client
- Package (pkg.go.dev)
Voir aussi
Contenu connexe
- Cet article fait partie du guide du développeur Stockage Blob pour Go. Pour en savoir plus, consultez la liste complète des articles du guide du développeur dans Générer votre application Go.