Cloud Storage permet de diffuser des données en flux continu dans un bucket sans avoir à les enregistrer au préalable dans un fichier. Cela peut s'avérer utile lorsque vous souhaitez importer des données sans en connaître 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.
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.
Rôles requis
Pour obtenir les autorisations nécessaires pour diffuser des importations, demandez à votre administrateur de vous attribuer l'un des rôles suivants:
Pour les importations qui incluent un verrou de conservation des objets, demandez à votre administrateur de vous attribuer le rôle IAM d'administrateur des objets de l'espace de stockage (
roles/storage.objectAdmin
) pour le bucket.Dans tous les autres cas, demandez à votre administrateur de vous attribuer le rôle IAM "Utilisateur des objets de l'espace de stockage" (
roles/storage.objectUser
) pour le bucket.
Ces rôles prédéfinis contiennent les autorisations requises pour diffuser des importations dans Cloud Storage. Pour afficher les autorisations exactes requises, développez la section Autorisations requises :
Autorisations requises
storage.objects.create
storage.objects.delete
- Cette autorisation n'est requise que pour les importations qui écrasent un objet existant.
storage.objects.list
- Cette autorisation n'est requise que pour exécuter les instructions de cette page à l'aide de Google Cloud CLI.
storage.objects.setRetention
- Cette autorisation n'est requise que pour les importations comprenant un verrou de conservation des objets.
Vous pouvez également obtenir ces autorisations en utilisant d'autres rôles prédéfinis ou des rôles personnalisés.
Pour en savoir plus sur l'attribution de rôles dans des buckets, consultez la page Utiliser IAM avec des buckets.
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
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
.
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 la page Configurer l'authentification pour les 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 la page Configurer l'authentification pour les bibliothèques clientes.
Go
Pour en savoir plus, consultez la documentation de référence de l'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 la page Configurer l'authentification pour les bibliothèques clientes.
Java
Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage Java.
Pour vous authentifier auprès de Cloud Storage, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Node.js
Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage Node.js.
Pour vous authentifier auprès de Cloud Storage, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
PHP
Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage PHP.
Pour vous authentifier auprès de Cloud Storage, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Python
Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage Python.
Pour vous authentifier auprès de Cloud Storage, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Ruby
Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage Ruby.
Pour vous authentifier auprès de Cloud Storage, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
API REST
API JSON
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
.
Importation par requête unique, avec les ajustements suivants :
Incluez un en-tête
Transfer-Encoding: chunked
et excluez l'en-têteContent-Length
.Créez la requête conformément aux spécifications, en envoyant les données de l'objet par blocs à mesure qu'elles deviennent disponibles.
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
.
Importation par requête unique, avec les ajustements suivants :
Incluez un en-tête
Transfer-Encoding: chunked
et excluez l'en-têteContent-Length
.Créez la requête conformément aux spécifications, en envoyant les données de l'objet par blocs à mesure qu'elles deviennent disponibles.
Notez que vous ne pouvez pas effectuer d'importation en streaming à l'aide de cette méthode si la requête utilise une signature dans son en-tête
Authorization
.
Étape suivante
- Téléchargement en flux continu.
- En savoir plus sur le Transcodage par décompression.
- En savoir plus sur les Importations et téléchargements.