Télécharger des objets en mémoire

Cette page vous explique comment télécharger des objets en mémoire depuis vos buckets Cloud Storage à l'aide des bibliothèques clientes Cloud Storage. Le téléchargement en mémoire est utile lorsque vous souhaitez éviter les opérations d'écriture inutiles sur un stockage persistant. Pour découvrir comment télécharger des objets directement dans une mémoire persistante, consultez la page Télécharger des objets dans une mémoire persistante. Pour une présentation du concept des téléchargements dans Cloud Storage, consultez la page Téléchargements d'objets.

Rôles requis

Pour obtenir les autorisations requises pour télécharger des objets dans la mémoire, demandez à votre administrateur de vous attribuer le rôle de lecteur des objets de l'espace de stockage (roles/storage.objectViewer) sur le bucket.

Ce rôle contient l'autorisation requise pour télécharger des objets. Pour afficher l'autorisation exacte requise, développez la section Autorisations requises :

Autorisations requises

  • storage.objects.get

Vous pouvez également obtenir cette autorisation avec d'autres rôles prédéfinis ou rôles personnalisés.

Pour savoir comment attribuer des rôles aux buckets, consultez la section Définir et gérer des stratégies IAM sur des buckets.

Télécharger un objet en mémoire

Bibliothèques clientes

C++

Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage C++.

Pour vous authentifier auprès de Cloud Storage, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour les bibliothèques clientes.

namespace gcs = ::google::cloud::storage;
[](gcs::Client client, std::string const& bucket_name,
   std::string const& object_name) {
  gcs::ObjectReadStream stream = client.ReadObject(bucket_name, object_name);
  std::string buffer{std::istreambuf_iterator<char>(stream),
                     std::istreambuf_iterator<char>()};
  if (stream.bad()) throw google::cloud::Status(stream.status());

  std::cout << "The object has " << buffer.size() << " characters\n";
}

C#

Pour en savoir plus, consultez la documentation de référence des API Cloud Storage en langage C#.

Pour vous authentifier auprès de Cloud Storage, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour les bibliothèques clientes.


using Google.Cloud.Storage.V1;
using System;
using System.IO;

public class DownloadObjectIntoMemorySample
{
    public Stream DownloadObjectIntoMemory(
        string bucketName = "unique-bucket-name",
        string objectName = "file-name")
    {
        var storage = StorageClient.Create();
        Stream stream = new MemoryStream();
        storage.DownloadObject(bucketName, objectName, stream);

        Console.WriteLine($"The contents of {objectName} from bucket {bucketName} are downloaded");
        return stream;
    }
}

Go

Pour en savoir plus, consultez la documentation de référence des API Cloud Storage en langage Go.

Pour vous authentifier auprès de Cloud Storage, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour les bibliothèques clientes.


import (
	"context"
	"fmt"
	"io"
	"time"

	"cloud.google.com/go/storage"
)

// downloadFileIntoMemory downloads an object.
func downloadFileIntoMemory(w io.Writer, bucket, object string) ([]byte, error) {
	// bucket := "bucket-name"
	// object := "object-name"
	ctx := context.Background()
	client, err := storage.NewClient(ctx)
	if err != nil {
		return nil, fmt.Errorf("storage.NewClient: %w", err)
	}
	defer client.Close()

	ctx, cancel := context.WithTimeout(ctx, time.Second*50)
	defer cancel()

	rc, err := client.Bucket(bucket).Object(object).NewReader(ctx)
	if err != nil {
		return nil, fmt.Errorf("Object(%q).NewReader: %w", object, err)
	}
	defer rc.Close()