Transferts en flux continu

Cloud Storage accepte les transferts en flux continu, ce qui vous permet de diffuser des données vers et depuis votre compte Cloud Storage sans devoir d'abord enregistrer les données dans un fichier.

Les importations en flux continu sont utiles lorsque vous souhaitez importer des données dont vous ne connaissez pas la taille finale au début de l'importation, par exemple lorsque vous générez des données d'importation à partir d'un processus, ou lorsque vous compressez un objet à la volée.

Les importations en flux continu sont utiles lorsque vous souhaitez télécharger des données à partir de Cloud Storage dans un processus.

Importations en flux continu

Les exemples suivants montrent comment effectuer une importation en flux continu d'un processus vers un objet Cloud Storage :

gsutil

  1. Dirigez les données vers la commande gsutil cp et utilisez un tiret pour l'URL source :

    PROCESS_NAME | gsutil cp - gs://BUCKET_NAME/OBJECT_NAME

    Où :

    • PROCESS_NAME est le nom du processus à partir duquel vous collectez des données. Par exemple, collect_measurements.
    • BUCKET_NAME est le nom du bucket contenant l'objet. Par exemple, my_app_bucket.
    • OBJECT_NAME est le nom de l'objet créé à partir des données. Exemple :data_measurements

Exemples de code

C++

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

namespace gcs = google::cloud::storage;
using ::google::cloud::StatusOr;
[](gcs::Client client, std::string const& bucket_name,
   std::string const& object_name, int desired_line_count) {
  std::string const text = "Lorem ipsum dolor sit amet";
  gcs::ObjectWriteStream stream =
      client.WriteObject(bucket_name, object_name);

  for (int lineno = 0; lineno != desired_line_count; ++lineno) {
    // Add 1 to the counter, because it is conventional to number lines
    // starting at 1.
    stream << (lineno + 1) << ": " << text << "\n";
  }

  stream.Close();

  StatusOr<gcs::ObjectMetadata> metadata = std::move(stream).metadata();
  if (!metadata) throw std::runtime_error(metadata.status().message());
  std::cout << "Successfully wrote to object " << metadata->name()
            << " its size is: " << metadata->size()
            << "\nFull metadata: " << *metadata << "\n";
}

C#

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

Pour diffuser des importations d'objets en flux continu à l'aide de C#, consultez la documentation de référence sur SimpleUpload.

Go

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

Pour diffuser des importations d'objets en flux continu à l'aide de Go, consultez la documentation de référence sur NewWriter.

Notez que pour les importations et les téléchargements, Go utilise respectivement les interfaces standards io.Writer et io.Reader, qui autorisent toutes deux le flux continu.

Java

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

Pour diffuser des importations d'objets en flux continu à l'aide de Java, consultez la documentation de référence sur writer.

Node.js

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

Pour diffuser des importations d'objets en flux continu à l'aide de Node.js, consultez la documentation de référence sur createWriteStream.

PHP

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

Pour diffuser des importations d'objets en flux continu à l'aide de PHP, consultez la documentation de référence sur upload.

Python

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

Pour diffuser des importations d'objets en flux continu à l'aide de Python, consultez la documentation de référence sur ResumableUploads.

Ruby

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

Il n'est actuellement pas possible d'effectuer des importations en flux continu à l'aide de la bibliothèque cliente Ruby.

API REST

API JSON

Pour effectuer une importation en flux continu, suivez les instructions permettant d'effectuer une importation avec reprise, en prenant en compte les éléments suivants :

  • Lorsque vous importez les données du fichier, utilisez une importation par fragments.

  • Comme vous ne connaissez pas la taille totale du fichier tant que vous n'avez pas atteint le fragment final, utilisez la valeur * pour la taille totale du fichier dans l'en-tête Content-Range des fragments intermédiaires.

    Par exemple, si le premier fragment importé a une taille de 512 Ko, l'en-tête Content-Range du fragment est bytes 0-524287/*. S'il reste 64 000 octets après le premier fragment, vous envoyez un fragment final contenant les octets restants et ayant un en-tête Content-Range avec la valeur bytes 524288-588287/588288.

API XML

Pour effectuer une importation en flux continu, suivez les instructions permettant d'effectuer une importation avec reprise, en prenant en compte les éléments suivants :

  • Lorsque vous importez les données du fichier, utilisez une importation par fragments.

  • Comme vous ne connaissez pas la taille totale du fichier tant que vous n'avez pas atteint le fragment final, utilisez la valeur * pour la taille totale du fichier dans l'en-tête Content-Range des fragments intermédiaires.

    Par exemple, si le premier fragment importé a une taille de 512 Ko, l'en-tête Content-Range du fragment est bytes 0-524287/*. S'il reste 64 000 octets après le premier fragment, vous envoyez un fragment final contenant les octets restants et ayant un en-tête Content-Range avec la valeur bytes 524288-588287/588288.

Téléchargements en flux continu

Les exemples suivants montrent comment effectuer le téléchargement d'un objet Cloud Storage dans un processus :

gsutil

  1. Exécutez la commande gsutil cp en utilisant un tiret pour l'URL de destination, puis dirigez les données vers le processus :

    gsutil cp gs://BUCKET_NAME/OBJECT_NAME - | PROCESS_NAME

    Où :

    • BUCKET_NAME est le nom du bucket contenant l'objet. Par exemple, my_app_bucket.
    • OBJECT_NAME est le nom de l'objet que vous diffusez vers le processus. Par exemple, data_measurements.
    • PROCESS_NAME est le nom du processus dans lequel vous chargez les données. Exemple :analyze_data

Vous pouvez également diffuser des données à partir d'un objet Cloud Storage vers une commande Linux standard de type sort :

gsutil cp gs://my_app_bucket/data_measurements - | sort

Exemples de code

C++

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

Pour diffuser des téléchargements d'objets en flux continu à l'aide de C++, consultez la documentation de référence sur ReadObject.

C#

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

Pour diffuser des téléchargements d'objets en flux continu à l'aide de C#, consultez la documentation de référence sur SimpleDownload.

Go

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

Pour diffuser des téléchargements d'objets en flux continu à l'aide de Go, consultez la documentation de référence sur NewReader.

Notez que pour les importations et les téléchargements, Go utilise respectivement les interfaces standards io.Writer et io.Reader, qui autorisent toutes deux le flux continu.

Java

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

Pour diffuser des téléchargements d'objets en flux continu à l'aide de Java, consultez la documentation de référence sur reader.

Node.js

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

Pour diffuser des téléchargements d'objets en flux continu à l'aide de Node.js, consultez la documentation de référence sur createReadStream.

PHP

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

Pour diffuser des téléchargements d'objets en flux continu à l'aide de PHP, consultez la documentation de référence sur downloadAsStreams.

Python

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

Pour diffuser des téléchargements d'objets en flux continu à l'aide de Python, consultez la documentation de référence sur ChunkedDownload.

Ruby

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

Il n'est actuellement pas possible d'effectuer des téléchargements en flux continu à l'aide de la bibliothèque cliente Ruby.

Étape suivante