Répertorier des objets blob avec Go
Cet article explique comment répertorier des objets blob en tirant parti 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 charger un objet blob. Pour l’autorisation avec Microsoft Entra ID (recommandé), vous devez disposer au minimum du rôle RBAC Azure intégré Lecteur de données Blob du stockage. Pour en savoir plus, veuillez consulter l’aide sur l’autorisation pour Répertorier des objets blob (API REST).
À propos des options de liste d’objets blob
Quand vous listez les blobs dans votre code, vous pouvez spécifier de nombreuses 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 spécifier un préfixe pour retourner les blobs dont le nom commence par ce caractère ou cette chaîne. Vous pouvez également répertorier les blobs dans une structure de liste plate, ou hiérarchiquement. Une liste hiérarchique retourne les blobs comme s’ils étaient organisés en dossiers.
Pour répertorier les objets blob dans un conteneur en utilisant une liste plate, appelez la méthode suivante :
Pour répertorier les objets blob dans un conteneur en tirant parti d’une liste hiérarchique, appelez la méthode suivante à partir d’un objet client de conteneur :
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 ensemble plus petit de résultats, fournissez une valeur autre que zéro pour le champ MaxResults
dans ListBlobsFlatOptions ou ListBlobsHierarchyOptions.
Filtrez les résultats avec un préfixe
Pour filtrer la liste des objets blob retournée, spécifiez une chaîne ou un caractère pour le champ Prefix
dans ListBlobsFlatOptions ou ListBlobsHierarchyOptions. La chaîne de préfixe peut inclure un ou plusieurs caractères. Le stockage Azure retourne alors uniquement les objets blob dont les noms commencent par ce préfixe.
Inclure des métadonnées d’objets blob ou d’autres informations
Pour inclure des métadonnées d’objets blob avec les résultats, définissez le champ Metadata
sur true
comme faisant partie de ListBlobsInclude. Stockage Azure comprend des métadonnées avec chaque objet blob retourné. Vous n’avez donc pas besoin de récupérer les métadonnées d’objet blob séparément.
Consultez ListBlobsInclude afin de découvrir d’autres options pour inclure des instantanés, versions, balises d’index d’objets blob et d’autres informations avec les résultats.
Création d’une liste plate ou d’une liste hiérarchique
Les objets blob dans le stockage Azure sont organisés en paradigme plat, plutôt qu’en paradigme hiérarchique (comme un système de fichiers standard). Toutefois, vous pouvez organiser les blobs en répertoires virtuels afin de simuler une structure de dossiers. Un répertoire virtuel fait partie du nom du blob et est indiqué par le caractère délimiteur.
Pour organiser les objets blob en répertoires virtuels, utilisez un caractère délimiteur dans les noms des objets blob. Le caractère délimiteur par défaut est une barre oblique (/), mais vous pouvez spécifier n’importe quel caractère comme délimiteur.
Si vous nommez vos objets blob en utilisant un délimiteur, vous pouvez choisir de lister les objets blob hiérarchiquement. Pour une opération de création de liste hiérarchique, le stockage Azure retourne tous les répertoires virtuels et les objets blob figurant sous l’objet parent. Vous pouvez appeler l’opération de création de liste de manière récursive pour parcourir la hiérarchie, de la même façon que vous parcourez un système de fichiers standard par programmation.
Remarque
Les instantanés d’objets blob ne peuvent pas être listés dans une opération de création de liste hiérarchique.
Utiliser une liste plate
Par défaut, une opération de création de liste retourne les objets blob dans une liste plate. Dans une liste plate, les blobs ne sont pas organisés par répertoire virtuel.
L’exemple suivant liste les objets blob dans le conteneur spécifié à l’aide d’une liste plate. Cet exemple comprend d’instantanés et de versions d’objets blob, s’ils existent :
func listBlobsFlat(client *azblob.Client, containerName string) {
// List the blobs in the container
pager := client.NewListBlobsFlatPager(containerName, &azblob.ListBlobsFlatOptions{
Include: azblob.ListBlobsInclude{Snapshots: true, Versions: true},
})
fmt.Println("List blobs flat:")
for pager.More() {
resp, err := pager.NextPage(context.TODO())
handleError(err)
for _, blob := range resp.Segment.BlobItems {
fmt.Println(*blob.Name)
}
}
}
Exemple de sortie :
List blobs flat:
file4.txt
folderA/file1.txt
folderA/file2.txt
folderA/folderB/file3.txt
L’exemple suivant répertorie les objets blob d’un conteneur qui commence par un préfixe spécifique :
func listBlobsFlatOptions(client *azblob.Client, containerName string, prefix string) {
// List the blobs in the container with a prefix
pager := client.NewListBlobsFlatPager(containerName, &azblob.ListBlobsFlatOptions{
Prefix: to.Ptr(prefix),
})
fmt.Println("List blobs with prefix:")
for pager.More() {
resp, err := pager.NextPage(context.TODO())
handleError(err)
for _, blob := range resp.Segment.BlobItems {
fmt.Println(*blob.Name)
}
}
}
Lors de la transmission d’une chaîne de préfixe d’« exemple », la sortie ressemble à ceci :
List blobs with prefix:
sample-blob1.txt
sample-blob2.txt
sample-blob3.txt
Remarque
L’exemple de sortie affiché suppose que vous disposez d’un compte de stockage avec un espace de noms plat. Si vous avez activé la fonctionnalité d’espace de noms hiérarchique pour votre compte de stockage, les répertoires ne sont pas virtuels. Au lieu de cela, ce sont des objets concrets et indépendants. Les répertoires apparaissent donc dans la liste en tant qu’objets blob de longueur nulle.
Pour découvrir une autre option de liste lorsque vous utilisez un espace de noms hiérarchique, consultez NewListPathsPager.
Utiliser une liste hiérarchique
Lorsque vous appelez une opération de création de liste hiérarchique, le stockage Azure retourne les répertoires virtuels et les objets blob figurant au premier niveau de la hiérarchie.
Pour lister les blobs de manière hiérarchique, utilisez la méthode suivante :
L’exemple suivant répertorie les objets blob dans le conteneur spécifié en utilisant une liste hiérarchique. Dans cet exemple, le paramètre de préfixe est initialement défini sur une chaîne vide pour répertorier tous les objets blob d’un conteneur. Cet exemple appelle ensuite l’opération de liste de manière récurrente pour parcourir la hiérarchie de répertoire virtuel et répertorier les objets blob.
func listBlobsHierarchy(client *azblob.Client, containerName string, prefix string) {
// Reference the container as a client object
containerClient := client.ServiceClient().NewContainerClient(containerName)
pager := containerClient.NewListBlobsHierarchyPager("/", &container.ListBlobsHierarchyOptions{
Prefix: to.Ptr(prefix),
MaxResults: to.Ptr(int32(1)), // MaxResults set to 1 for demonstration purposes
})
for pager.More() {
resp, err := pager.NextPage(context.TODO())
handleError(err)
if resp.Segment.BlobPrefixes != nil {
for _, prefix := range resp.Segment.BlobPrefixes {
fmt.Println("Virtual directory prefix:", *prefix.Name)
// Recursively list blobs in the prefix
listBlobsHierarchy(client, containerName, *prefix.Name)
}
}
for _, blob := range resp.Segment.BlobItems {
fmt.Println("Blob:", *blob.Name)
}
}
}
Exemple de sortie :
Virtual directory prefix: folderA/
Blob: folderA/file1.txt
Blob: folderA/file2.txt
Blob: folderA/file3.txt
Virtual directory prefix: folderA/folderB/
Blob: folderA/folderB/file1.txt
Blob: folderA/folderB/file2.txt
Blob: folderA/folderB/file3.txt
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 découvrir plus d’informations sur l’établissement d’une liste d’objets blob en utilisant le 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 (SDK) Azure pour Go contient des bibliothèques qui s’appuient sur l’API REST Azure et vous permettant d’interagir avec des opérations de l’API REST par le biais de paradigmes Go familiers. Les méthodes de bibliothèque de client pour lister les objets blob utilisent l’opération d’API REST suivante :
- List Blobs (REST API)
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.