Charger un objet blob de blocs avec Go
Cet article montre comment charger un objet blob en utilisant le module client Stockage Azure pour Go. Vous pouvez charger des données dans un objet blob de blocs depuis un chemin d’accès de fichier, un flux, un objet binaire ou une chaîne de texte. Vous pouvez aussi charger des objets blob avec des balises d’index.
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é Contributeur aux données Blob du stockage. Si vous souhaitez en savoir plus, consulter l’aide sur l’autorisation pour les opérations Put Blob (API REST) et Put Block (API REST).
Charger des données dans un blob de blocs
Si vous souhaitez charger un objet blob, appelez l’une des méthodes suivantes à partir de l’objet client :
Pour effectuer le chargement, la bibliothèque de client peut utiliser Put Blob ou une série d’appels Put Block suivis de Put Block List
. Ce comportement dépend de la taille globale de l’objet et de la façon dont les options de transfert de données sont définies.
Charger un blob de blocs à partir d’un chemin de fichier local
L’exemple suivant charge un fichier local dans un objet blob de blocs :
func uploadBlobFile(client *azblob.Client, containerName string, blobName string) {
// Open the file for reading
file, err := os.OpenFile("path/to/sample/file", os.O_RDONLY, 0)
handleError(err)
defer file.Close()
// Upload the file to the specified container with the specified blob name
_, err = client.UploadFile(context.TODO(), containerName, blobName, file, nil)
handleError(err)
}
Charger un blob de blocs à partir d’un flux
L’exemple suivant crée une instance Reader
et lit à partir d’une chaîne comme s’il s’agissait d’un flux d’octets. Le flux est ensuite chargé dans un objet blob de blocs :
func uploadBlobStream(client *azblob.Client, containerName string, blobName string) {
data := "Hello, world!"
blobContentReader := strings.NewReader(data)
// Upload the file to the specified container with the specified blob name
_, err := client.UploadStream(context.TODO(), containerName, blobName, blobContentReader, nil)
handleError(err)
}
Charger des données binaires dans un objet blob de blocs
L’exemple suivant charge des données binaires dans un objet blob de blocs :
func uploadBlobBuffer(client *azblob.Client, containerName string, blobName string) {
// Create a buffer with the content of the file to upload
data := []byte("Hello, world!")
// Upload the data to a block blob
_, err := client.UploadBuffer(context.TODO(), containerName, blobName, data, nil)
handleError(err)
}
Charger un blob de blocs avec des balises d’index
L’exemple suivant charge un objet blob de blocs avec des étiquettes d’index :
func uploadBlobWithIndexTags(client *azblob.Client, containerName string, blobName string) {
// Create a buffer with the content of the file to upload
data := []byte("Hello, world!")
// Upload the data to a block blob with index tags
_, err := client.UploadBuffer(context.TODO(), containerName, blobName, data, &azblob.UploadBufferOptions{
Tags: map[string]string{
"key1": "value1",
"key2": "value2",
},
})
handleError(err)
}
Charger un objet blob de blocs avec des options de configuration
Vous pouvez définir des options de configuration de bibliothèque de client lors du chargement d’un objet blob. Ces options peuvent être paramétrées pour améliorer les performances, améliorer la fiabilité et optimiser les coûts. Les exemples de code suivants montrent comment définir des options de configuration lors d’une opération de chargement.
Spécifier les options de transfert de données pour le chargement
Vous pouvez définir des options de configuration lors du chargement d’un objet blob pour optimiser les performances. Les options de configuration suivantes sont disponibles pour les opérations de chargement :
BlockSize
: taille de chaque bloc lors du chargement d’un objet blob de blocs. La valeur par défaut est 4 Mo.Concurrency
: nombre maximal de connexions parallèles à utiliser pendant un chargement. La valeur par défaut est 5.
Ces options de configuration sont disponibles au moment du chargement via les méthodes suivantes :
La méthode Upload ne prend pas en charge ces options, et 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 des options de transfert de données en tirant parti de UploadFileOptions. 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 uploadBlobWithTransferOptions(client *azblob.Client, containerName string, blobName string) {
// Open the file for reading
file, err := os.OpenFile("path/to/sample/file", os.O_RDONLY, 0)
handleError(err)
defer file.Close()
// Upload the data to a block blob with transfer options
_, err = client.UploadFile(context.TODO(), containerName, blobName, file,
&azblob.UploadFileOptions{
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 chargement 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 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 chargement d’objets blob utilisent les opérations d’API REST suivantes :
Ressources du module client
- Documentation de référence sur les modules clients
- Code source du module client
- Package (pkg.go.dev)
Voir aussi
- Gérer et rechercher des données blob Azure dans l’index d’objet blob
- Utiliser des balises d’index de blob pour gérer et rechercher des données sur Stockage Blob Azure
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.