Partager via


Télécharger un objet blob avec Go

Cet article montre comment télécharger un objet blob en utilisant le module client Stockage Azure pour Go. Vous pouvez télécharger des données blob vers différentes destinations, notamment un chemin d’accès de fichier local, un flux ou une chaîne de texte.

Prérequis

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 effectuer une opération de téléchargement. 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, consultez l’aide sur l’autorisation pour l’opération Get Blob (API REST).

Télécharger un objet blob

Vous pouvez utiliser l’une des méthodes suivantes pour télécharger un objet blob :

Télécharger dans un chemin de fichier

L’exemple suivant télécharge un blob dans un chemin d’accès de fichiers :

func downloadBlobToFile(client *azblob.Client, containerName string, blobName string) {
    // Create or open a local file where we can download the blob
    file, err := os.Create("path/to/sample/file")
    handleError(err)

    // Download the blob to the local file
    _, err = client.DownloadFile(context.TODO(), containerName, blobName, file, nil)
    handleError(err)
}

Télécharger dans un flux

L’exemple suivant télécharge un objet blob dans un flux et lit à partir de ce dernier en appelant la méthode NewRetryReader.

func downloadBlobToStream(client *azblob.Client, containerName string, blobName string) {
    // Download the blob
    get, err := client.DownloadStream(context.TODO(), containerName, blobName, nil)
    handleError(err)

    downloadedData := bytes.Buffer{}
    retryReader := get.NewRetryReader(context.TODO(), &azblob.RetryReaderOptions{})
    _, err = downloadedData.ReadFrom(retryReader)
    handleError(err)

    err = retryReader.Close()
    handleError(err)

    // Print the contents of the blob we created
    fmt.Println("Blob contents:")
    fmt.Println(downloadedData.String())
}

Spécifier les options de transfert de données pour le téléchargement

Vous pouvez définir des options de configuration au moment du téléchargement d’un objet blob pour optimiser les performances. Les options de configuration suivantes sont disponibles pour les opérations de téléchargement :

  • BlockSize : taille de chaque bloc au moment du téléchargement d’un objet blob de blocs. La valeur par défaut est 4 Mo.
  • Concurrency : nombre maximal de connexions parallèles à utiliser durant le téléchargement. La valeur par défaut est 5.

Ces options sont disponibles au moment du téléchargement via les méthodes suivantes :

La méthode DownloadStream ne prend pas en charge ces options, et télécharge les données en une seule requête.

Pour plus d’informations sur les limites de taille de transfert pour Stockage Blob, consultez Objectifs de mise à l’échelle pour Stockage Blob.

L’exemple de code suivant montre comment spécifier les options de transfert de données à l’aide de DownloadFileOptions. Les valeurs fournies dans cet exemple ne sont pas destinées à être une recommandation. Pour régler correctement ces valeurs, vous devez tenir compte des besoins spécifiques de votre application.

func downloadBlobTransferOptions(client *azblob.Client, containerName string, blobName string) {
    // Create or open a local file where we can download the blob
    file, err := os.Create("path/to/sample/file")
    handleError(err)

    // Download the blob to the local file
    _, err = client.DownloadFile(context.TODO(), containerName, blobName, file,
        &azblob.DownloadFileOptions{
            BlockSize:   int64(4 * 1024 * 1024), // 4 MiB
            Concurrency: uint16(2),
        })
    handleError(err)
}

Pour en savoir plus sur le réglage des options de transfert de données, consultez Réglage du niveau de performance pour les chargements et les téléchargements avec Go.

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 le téléchargement d’objets blob en utilisant le module client Stockage Blob Azure pour Go, consultez les ressources suivantes.

Exemples de code

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 télécharger des objets blob utilisent l’opération d’API REST suivante :

Ressources du module client

  • 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.