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. La diffusion en flux continu est utile dans les cas suivants :
Vous souhaitez importer des données mais 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.
Vous souhaitez télécharger des données depuis Cloud Storage dans un processus.
Utiliser la validation de somme de contrôle lors de l'insertion en flux continu
Étant donné qu'une somme de contrôle ne peut être fournie que dans la requête initiale d'une importation, il est souvent impossible d'utiliser la validation de somme de contrôle de Cloud Storage lors de l'insertion en flux continu. Il est recommandé de toujours effectuer la validation de la somme de contrôle, et vous pouvez le faire manuellement une fois l'importation en flux continu terminée. Toutefois, la validation une fois le transfert terminé signifie que toutes les données corrompues sont accessibles pendant le délai nécessaire à la confirmation de la corruption et à leur suppression.
Si vous souhaitez exiger une validation de la somme de contrôle avant de conclure l'importation des données et leur mise à disposition, vous ne devez pas utiliser d'importation en flux continu. Vous devez choisir une autre option d'importation, qui effectue la validation de la somme de contrôle avant de finaliser l'objet.
De même, vous ne devez pas utiliser de téléchargement en flux continu si vous avez besoin de valider la somme de contrôle avant de terminer le téléchargement et d'ouvrir l'accès aux données.
En effet, les téléchargements en flux continu utilisent l'en-tête Range
et Cloud Storage n'effectue pas de validation de la somme de contrôle sur ces requêtes.
Prérequis
Les conditions préalables peuvent varier en fonction de l'outil utilisé :
Console
Pour suivre ce guide à l'aide de Google Cloud Console, vous devez disposer des autorisations IAM appropriées. Si le bucket auquel vous souhaitez accéder en streaming existe dans un projet que vous n'avez pas créé, vous devrez peut-être demander au propriétaire du projet qu'il vous attribue un rôle disposant des autorisations nécessaires.
Pour obtenir la liste des autorisations requises pour des actions spécifiques, consultez la page Autorisations IAM pour Google Cloud Console.
Pour obtenir la liste des rôles pertinents, consultez la page Rôles Cloud Storage. Vous pouvez également créer un rôle personnalisé disposant d'autorisations limitées spécifiques.
Command line
Pour suivre ce guide à l'aide d'un utilitaire de ligne de commande, vous devez disposer des autorisations IAM appropriées. Si le bucket cible pour les transferts en flux continu existe dans un projet que vous n'avez pas créé, vous devrez peut-être demander au propriétaire du projet qu'il vous attribue un rôle disposant des autorisations nécessaires.
Pour obtenir la liste des autorisations requises pour des actions spécifiques, consultez la page Autorisations IAM pour les commandes gsutil.
Pour obtenir la liste des rôles pertinents, consultez la page Rôles Cloud Storage. Vous pouvez également créer un rôle personnalisé disposant d'autorisations limitées spécifiques.
Exemples de code
Pour suivre ce guide à l'aide des bibliothèques clientes Cloud Storage, vous devez disposer des autorisations IAM appropriées. Si le bucket auquel vous souhaitez accéder en streaming existe dans un projet que vous n'avez pas créé, vous devrez peut-être demander au propriétaire du projet qu'il vous attribue un rôle disposant des autorisations nécessaires. Sauf indication contraire, les requêtes de bibliothèque cliente sont effectuées via l'API JSON.
Pour obtenir la liste des autorisations requises pour des actions spécifiques, consultez la page Autorisations IAM pour les méthodes JSON.
Pour obtenir la liste des rôles pertinents, consultez la page Rôles Cloud Storage. Vous pouvez également créer un rôle personnalisé disposant d'autorisations limitées spécifiques.
API REST
API JSON
Pour suivre ce guide à l'aide de l'API JSON, vous devez disposer des autorisations IAM appropriées. Si le bucket auquel vous souhaitez accéder en streaming existe dans un projet que vous n'avez pas créé, vous devrez peut-être demander au propriétaire du projet qu'il vous attribue un rôle disposant des autorisations nécessaires.
Pour obtenir la liste des autorisations requises pour des actions spécifiques, consultez la page Autorisations IAM pour les méthodes JSON.
Pour obtenir la liste des rôles pertinents, consultez la page Rôles Cloud Storage. Vous pouvez également créer un rôle personnalisé disposant d'autorisations limitées spécifiques.
Diffuser une importation
Les exemples suivants montrent comment effectuer une importation en flux continu d'un processus vers un objet Cloud Storage :
Console
La console Google Cloud n'accepte pas les importations en flux continu. Utilisez plutôt gcloud CLI.
Ligne de commande
gcloud
Dirigez les données vers la commande
gcloud storage cp
et utilisez un tiret pour l'URL source :PROCESS_NAME | gcloud storage cp - gs://BUCKET_NAME/OBJECT_NAME
Où :
PROCESS_NAME
est le nom du processus à partir duquel vous collectez des données. 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. Par exemple,data_measurements
.
gsutil
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. 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++.
C#
Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage C#.
Go
Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage Go.
Java
Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage Java.
Node.js
Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage Node.js.
PHP
Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage PHP.
Python
Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage Python.
Ruby
Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage 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êteContent-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 estbytes 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êteContent-Range
avec la valeurbytes 524288-588287/588288
.
API XML
Pour effectuer une importation en flux continu, utilisez l'une des méthodes suivantes :
Importation avec reprise, avec les ajustements 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êteContent-Range
des fragments intermédiaires.Par exemple, si le premier fragment importé a une taille de 512 Kio, l'en-tête
Content-Range
du fragment estbytes 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êteContent-Range
avec la valeurbytes 524288-588287/588288
.
Téléchargement en flux continu
Les exemples suivants montrent comment effectuer le téléchargement d'un objet Cloud Storage dans un processus :
Console
La console Google Cloud n'est pas compatible avec les téléchargements en streaming. Utilisez plutôt gcloud CLI.
Ligne de commande
gcloud
Exécutez la commande
gcloud storage cp
en utilisant un tiret pour l'URL de destination, puis dirigez les données vers le processus :gcloud storage 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. 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 :
gcloud storage cp gs://my_app_bucket/data_measurements - | sort
gsutil
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. 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++.
C#
Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage C#.
Go
Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage Go.
Java
Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage Java.
Node.js
Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage Node.js.
PHP
Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage PHP.
Python
Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage Python.
Ruby
Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage Ruby.
API REST
API JSON
Pour effectuer un téléchargement en flux continu, suivez les instructions pour télécharger un objet en tenant compte des points suivants :
Avant de lancer le téléchargement, récupérez les métadonnées de l'objet et enregistrez le numéro de génération de l'objet. Incluez ce numéro de génération dans chacune de vos requêtes pour vous assurer de ne pas télécharger les données de deux générations différentes si l'original est écrasé.
Utilisez l'en-tête
Range
de votre requête pour récupérer un fragment de l'objet global, que vous pouvez envoyer au processus local souhaité.Continuez d'envoyer des requêtes pour les fragments successifs de l'objet, jusqu'à ce que l'objet entier soit récupéré.
API XML
Pour effectuer un téléchargement en flux continu, suivez les instructions pour télécharger un objet en tenant compte des points suivants :
Avant de lancer le téléchargement, récupérez les métadonnées de l'objet et enregistrez le numéro de génération de l'objet. Incluez ce numéro de génération dans chacune de vos requêtes pour vous assurer de ne pas télécharger les données de deux générations différentes si l'original est écrasé.
Utilisez l'en-tête
Range
de votre requête pour récupérer un fragment de l'objet global, que vous pouvez envoyer au processus local souhaité.Continuez d'envoyer des requêtes pour les fragments successifs de l'objet, jusqu'à ce que l'objet entier soit récupéré.
Étape suivante
- En savoir plus sur le Transcodage par décompression
- En savoir plus sur les Importations et téléchargements