En Cloud Storage, se admiten transferencias de transmisión, que permiten la transmisión de datos desde y hacia tu cuenta de Cloud Storage sin necesidad de que los datos se guarden primero en un archivo. La transmisión es útil en los siguientes casos:
Quieres subir datos, pero no sabes cuál es el tamaño final al comienzo de la carga, como cuando se generan los datos de carga de un proceso o cuando se comprime un objeto sobre la marcha.
Quieres descargar datos de Cloud Storage en un proceso.
Usa la validación de la suma de verificación durante la transmisión
Debido a que solo se puede proporcionar una suma de verificación en la solicitud inicial de una carga, a menudo no es factible usar la validación de suma de verificación de Cloud Storage durante la transmisión. Se recomienda que siempre uses la validación de la suma de verificación y puedes hacerlo de forma manual después de que se complete una carga de transmisión. Sin embargo, realizar la validación después de que se complete la transferencia significa que se puede acceder a los datos dañados durante el tiempo que lleva confirmar el daño y quitarlo.
Si necesitas validación de la suma de verificación antes de que se complete la carga y se puede acceder a los datos, no debes usar una carga de transmisión. Debes usar una opción de carga diferente que realice la validación de la suma de verificación antes de finalizar el objeto.
Del mismo modo, no debes usar una descarga de transmisión si necesitas una validación de la suma de verificación antes de que se complete la descarga y se pueda acceder a los datos.
Esto se debe a que las descargas de transmisión usan el encabezado Range
y Cloud Storage no realiza una validación de la suma de verificación en esas solicitudes.
Requisitos previos
Los requisitos previos pueden variar según la herramienta que se use:
Consola
Para completar esta guía con Google Cloud Console, debes tener los permisos de IAM adecuados. Si el bucket al que deseas acceder para transmitir existe en un proyecto que no creaste, tal vez necesites que el propietario del proyecto te otorgue un rol con los permisos necesarios.
A fin de obtener una lista de los permisos necesarios para acciones específicas, consulta Permisos de IAM para Google Cloud Console.
Para obtener una lista de los roles relevantes, consulta Funciones de Cloud Storage. Como alternativa, puedes crear un rol personalizado que tenga permisos más limitados.
Línea de comandos
Para completar esta guía con una utilidad de línea de comandos, debes tener los permisos de IAM adecuados. Si el bucket al que deseas acceder para transmitir existe en un proyecto que no creaste, tal vez necesites que el propietario del proyecto te otorgue un rol con los permisos necesarios.
Si deseas obtener una lista de los permisos necesarios para acciones específicas, consulta Permisos de IAM para los comandos de gsutil.
Para obtener una lista de los roles relevantes, consulta Funciones de Cloud Storage. Como alternativa, puedes crear un rol personalizado que tenga permisos más limitados.
Muestras de código
Para completar esta guía con las bibliotecas cliente de Cloud Storage, debes tener los permisos de IAM adecuados. Si el bucket al que deseas acceder para transmitir existe en un proyecto que no creaste, tal vez necesites que el propietario del proyecto te otorgue un rol con los permisos necesarios. A menos que se indique lo contrario, las solicitudes de la biblioteca cliente se realizan mediante la API de JSON.
Si deseas obtener una lista de los permisos necesarios para acciones específicas, consulta Permisos de IAM para métodos JSON.
Para obtener una lista de los roles relevantes, consulta Funciones de Cloud Storage. Como alternativa, puedes crear un rol personalizado que tenga permisos más limitados.
API de REST
API de JSON
Para completar esta guía con la API de JSON, debes tener los permisos de IAM adecuados. Si el bucket al que deseas acceder para transmitir existe en un proyecto que no creaste, tal vez necesites que el propietario del proyecto te otorgue un rol con los permisos necesarios.
Si deseas obtener una lista de los permisos necesarios para acciones específicas, consulta Permisos de IAM para métodos JSON.
Para obtener una lista de los roles relevantes, consulta Funciones de Cloud Storage. Como alternativa, puedes crear un rol personalizado que tenga permisos más limitados.
Realiza una carga de transmisión
En los siguientes ejemplos, se muestra cómo realizar una carga de transmisión desde un proceso a un objeto de Cloud Storage:
Console
La consola de Google Cloud no admite la carga de transmisiones. En su lugar, usa la CLI de gcloud.
Línea de comandos
gcloud
Canaliza los datos al comando
gcloud storage cp
y usa un guion para la URL de origen:PROCESS_NAME | gcloud storage cp - gs://BUCKET_NAME/OBJECT_NAME
Aquí:
PROCESS_NAME
es el nombre del proceso desde el que recopilas datos. Por ejemplo,collect_measurements
BUCKET_NAME
es el nombre del bucket que contiene el objeto. Por ejemplo,my_app_bucket
.OBJECT_NAME
es el nombre del objeto que se crea a partir de los datos. Por ejemplo,data_measurements
.
gsutil
Canaliza los datos al comando
gsutil cp
y usa un guion para la URL de origen:PROCESS_NAME | gsutil cp - gs://BUCKET_NAME/OBJECT_NAME
Aquí:
PROCESS_NAME
es el nombre del proceso desde el que recopilas datos. Por ejemplo,collect_measurements
BUCKET_NAME
es el nombre del bucket que contiene el objeto. Por ejemplo,my_app_bucket
.OBJECT_NAME
es el nombre del objeto que se crea a partir de los datos. Por ejemplo,data_measurements
.
Muestras de código
C++
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage C++.
C#
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage C#.
Go
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Go.
Java
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Java.
Node.js
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Node.js.
PHP
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage PHP.
Python
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Python.
Ruby
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Ruby.
API de REST
API de JSON
A fin de realizar una carga de transmisión, sigue las instrucciones para realizar una carga reanudable con las siguientes consideraciones:
Cuando subas los datos del archivo, usa una carga en varios fragmentos.
Dado que no conoces el tamaño total del archivo hasta llegar al fragmento final, usa un
*
para el tamaño total del archivo en el encabezadoContent-Range
de los fragmentos intermedios.Por ejemplo, si el primer fragmento que subes tiene un tamaño de 512 KiB, el encabezado
Content-Range
del fragmento esbytes 0-524287/*
. Si tu carga tiene 64,000 bytes restantes después del primer fragmento, debes enviar un fragmento final que contenga los bytes restantes y tenga un encabezadoContent-Range
con el valorbytes 524288-588287/588288
.
API de XML
Para realizar una carga de transmisión, usa uno de los siguientes métodos:
Una carga reanudable, con los siguientes ajustes:
Cuando subas los datos del archivo, usa una carga en varios fragmentos.
Dado que no conoces el tamaño total del archivo hasta llegar al fragmento final, usa un
*
para el tamaño total del archivo en el encabezadoContent-Range
de los fragmentos intermedios.Por ejemplo, si el primer fragmento que subes tiene un tamaño de 512K, el encabezado
Content-Range
del fragmento esbytes 0-524287/*
. Si tu carga tiene 64,000 bytes restantes después del primer fragmento, debes enviar un fragmento final que contenga los bytes restantes y tenga un encabezadoContent-Range
con el valorbytes 524288-588287/588288
.
Realiza una descarga de transmisión
En los siguientes ejemplos, se muestra cómo realizar una descarga desde un objeto de Cloud Storage a un proceso:
Console
La consola de Google Cloud no admite la descarga de transmisiones. En su lugar, usa la CLI de gcloud.
Línea de comandos
gcloud
Ejecuta el comando
gcloud storage cp
con un guion para la URL de destino y, a continuación, canaliza los datos al proceso:gcloud storage cp gs://BUCKET_NAME/OBJECT_NAME - | PROCESS_NAME
Donde:
BUCKET_NAME
es el nombre del bucket que contiene el objeto. Por ejemplo,my_app_bucket
.OBJECT_NAME
es el nombre del objeto que transmites al proceso. Por ejemplo,data_measurements
PROCESS_NAME
es el nombre del proceso al que envías datos. Por ejemplo,analyze_data
También puedes transmitir datos desde un objeto de Cloud Storage hasta un comando estándar de Linux como sort:
gcloud storage cp gs://my_app_bucket/data_measurements - | sort
gsutil
Ejecuta el comando
gsutil cp
con un guion para la URL de destino y, a continuación, canaliza los datos al proceso:gsutil cp gs://BUCKET_NAME/OBJECT_NAME - | PROCESS_NAME
Donde:
BUCKET_NAME
es el nombre del bucket que contiene el objeto. Por ejemplo,my_app_bucket
.OBJECT_NAME
es el nombre del objeto que transmites al proceso. Por ejemplo,data_measurements
PROCESS_NAME
es el nombre del proceso al que envías datos. Por ejemplo,analyze_data
También puedes transmitir datos desde un objeto de Cloud Storage hasta un comando estándar de Linux como sort:
gsutil cp gs://my_app_bucket/data_measurements - | sort
Muestras de código
C++
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage C++.
C#
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage C#.
Go
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Go.
Java
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Java.
Node.js
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Node.js.
PHP
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage PHP.
Python
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Python.
Ruby
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Ruby.
API de REST
API de JSON
A fin de realizar una descarga de transmisión, sigue las instrucciones para descargar un objeto con las siguientes consideraciones:
Antes de comenzar la descarga, recupera los metadatos del objeto y guarda el número de generación del objeto. Incluye este número de generación en cada una de tus solicitudes para asegurarte de no descargar datos de dos generaciones diferentes en caso de que se reemplacen los originales.
Usa el encabezado
Range
en tu solicitud para recuperar una parte del objeto general, que puedes enviar al proceso local deseado.Continúa realizando solicitudes para partes sucesivas del objeto, hasta que se haya recuperado todo el objeto.
API de XML
A fin de realizar una descarga de transmisión, sigue las instrucciones para descargar un objeto con las siguientes consideraciones:
Antes de comenzar la descarga, recupera los metadatos del objeto y guarda el número de generación del objeto. Incluye este número de generación en cada una de tus solicitudes para asegurarte de no descargar datos de dos generaciones diferentes en caso de que se reemplacen los originales.
Usa el encabezado
Range
en tu solicitud para recuperar una parte del objeto general, que puedes enviar al proceso local deseado.Continúa realizando solicitudes para partes sucesivas del objeto, hasta que se haya recuperado todo el objeto.
¿Qué sigue?
- Obtén más información sobre la transcodificación descompresiva.
- Obtén más información sobre cargas y descargas.